Vim简单使用


一、简介:
vim是vi的升级版本,是vi的升级版中最优秀的一款文本编辑。vim是模式化的文本编辑器,通过搭配各种编辑命令可以很高效的完成文本的各种操作。

二、vim的3种模式:
1、插入模式
  vim的插入模式是最简单的模式,插入模式就相当于windows 下notepad一样。但是,vim默认打开的是编辑模式,需要通过编辑命令才可以进入插入模式。
2、编辑模式
  vim的编辑模式是默认打开的,进入其他2种模式都需要通过编辑模式,并且绝大部分的操作都是在编辑模式完成的。
3、末行模式
vim的末行模式可以完成编辑模式的绝大部分功能并且还可以完成一些在编辑模式下无法完成的功能,比如各种属性的设置等等。


三、简单的使用介绍
1、vim的使用格式
vim [options] [FILE]...

vim:打开一个空文件
vim /path/to/somefile:打开/path/to/somefile


vim +[#] /path/to/somefile:'#'代表数字, 打开/path/to/somefile文件并自动将光标定位到'#'行。'#'是可选的,vim后面只跟'+'号代表打开文件后自动将光标定位到行尾。


vim -o /path/to/somefile ...:以横向分割的方式打开多个文件,多个文件间通过next、prev、first、last进行移动
vim -O /path/to/somefile ...:以纵向分割的方式打开多个文件,多个文件间通过next、prev、first、last进行移动


2、vim的退出方式
编辑模式下:ZZ(shift+zz),表示如果文件内容有改变则保存退出,没有改变则不保存退出
末行模式下:
:q,不保存退出
:w,保存
:wq,保存退出
:x,保存退出
:{q|wq|w|x}!,表示强行执行前面字符代表的动作
:{q|w|wq|x}all,在同时打开多个文件时关闭所有的文件,


3、模式间的转换:
编辑模式--->插入模式
i,在当前光标处进入插入模式
I,在当前光标所在行首进入插入模式
a,在当前光标后进入插入模式
A,在当前光标所在行尾进入插入模式
o,在当前光标所在行下方行首进入插入模式
O,在当前光标所在行上方行首进入插入模式


编辑模式--->末行模式
:,输入':'进入


插入模式--->编辑模式
按ESC进入


插入模式--->末行模式
按ESC先进入编辑模式,再输入':'进入末行模式


末行模式--->编辑模式
按ESC ESC进入


末行模式--->插入模式
按两个ESC先进入编辑模式,再通过{iIaAoO}进入插入模式


4、编辑模式下光标间的跳转


  光标移动:


j:向下移动,#j:'#'代表数字,向下移动'#'行
k:向上移动,#k:'#'代表数字,向上移动'#'行
h:向左移动,#h:'#'代表数字,向左移动'#'个字符
l:向右移动,#l:'#'代表数字,向右移动'#'个字符


行间移动:


gg|1G,移动到文件首部
#G,'#'代表数字,移动到'#'行
G,移动到文件尾部


单词移动:


w,向后移动一个单词,并定位到单词的首部
b,向前移动一个单词,并定位到单词的首部,如果光标在一个单词的中间,首先移动到此单词的首部
e,向后移动一个单词,并定位到单词的尾部,如果光标在一个单词的中间,首先移动到此单词的尾部
#{wbe},表示移动'#'个单词,并定位到相应的位置


行内移动:
^,表示移动到第一个非空白字符处
0,表示移动到绝对行首
$,表示移动到绝对行尾


句间移动:
(,表示移动到上一句
),表示移动到下一句


段间移动:
{,表示移动到上一段
},表示移动到下一段


屏间移动:
ctrl+f,向下翻一屏
ctrl+b,向上翻一屏
ctrl+d,向下翻半屏
ctrl+u,向上翻半屏


5、编辑命令
x:从当前光标开始向后删除单个字符
#x:从当前光标开始向后删除'#'个字符
X:从当前光标开始向前删除单个字符
#X:从当前光标开始向前删除'#'个字符

d:表示删除,d命令只能搭配光标间跳转命令一起使用,常用的组合有:


d^:删除当前光标所在位置到行首非空白字符之间的所有内容
d0:删除当前光标所在位置到行首之间的所有内容
d$:删除当前光标所在位置到行尾之间的所有内容
dG:删除当前光标所在行到文件尾部的所有内容
ggdG:删除全文
dd:删除当前光标所在行
#dd:删除当前光标所在行及向下的行,一共'#'行

 


y:表示复制,y命令使用方式与d命令相同


p:粘贴,复制或删除的内容是整行则粘贴到光标所在行下方,复制或删除内容不是整行则粘贴到光标所在位置后方
P:粘贴,复制或删除的内容是整行则粘贴到光标所在行上方,复制或删除内容不是整行则粘贴到光标所在位置前方


u:撤销当前操作,最多可以进行撤销最近50次操作
ctrl+r:撤销之前的撤销


c:删除所选内容并进入插入模式。c命令的使用方法和d、y命令相同
cc:删除光标所在行并进入插入模式


s:删除光标所在字符,并进入插入模式
S:删除光标所在行,并进入插入模式,等同于cc


v:可视化编辑,纵向进行选择,可以在字符间进行移动选择,选择完成后可以搭配{dyp}命令进行操作
V:可视化编辑,纵向整行选择,选择完成后可以搭配{dyp}命令进行操作


ctrl+w,s:水平分割显示同一个文件
ctrl+w,v:垂直分割显示同一个文件
ctrl+w,箭头:进行分割的窗口中移动

 

6、末行模式
a,地址定界,末行模式支持地址定界,可以指定在第几行到第几行之间进行操作:
1,10:表示1到10行
1,$:表示1到文件尾部
%:表示全文
.,$:表示光标所在行到文件尾部
1,+#:表示从光标所在行开始再向下数'#'行


d命令可以搭配地址定界更加灵活的使用,如:
1,10d:表示删除1到10行
%d:表示删除全文
b,文件搜索,搜索可以使用模式搭配正则表达式进行
/:表示向文件尾部进行搜索
?:表示向文件首部进行搜索
n:表示以搜索方向一致的方向搜索下一个
N:表示以搜索方向相反的方向搜索下一个
c,查找替换,查找替换前可以搭配地址定界符进行范围定界,查找部分可以使用模式搭配正则表达式进行,替换部分不能使用模式
格式:
s///[options]:s是命令,第一个'/'和第二个'/'之间是查找部分,第二个'/'和第三个'/'之间是替换部分,[options]是修饰参数可选。


常用修饰参数:
g:全局替换
i:忽略大小写


///:可以使用任意不被匹配到符号


例如:
删除行首开头的#;
:%s/^#//
删除行首开头的#及后面紧跟的空白字符;
:%s/^#[[:space:]]*//
为空白字符开头的行的行首加上#;
:%s/^[[:sapce:]]/#&/
删除/etc/grub.conf文件中行首的空白符;
:%s/^[[:space:]]//
替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;
:%s/:3:/:5:/
删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;
:s/^#[[:space:]]\{1,\}//
替换文件中/dev/null为/tmp/null.txt忽略大小写;
:s/\/dev\/null/\/tmp\/null.txt/gi
:s#/dev/null#/tmp/null.txt#gi
d,属性定制,只针对当前vim进程生效
常用选项:
:set nu ,打开行号
:set nonu ,关闭行号


:set ai ,打开自动缩进
:set noai ,关闭自动缩进


:set ic ,不区分大小写
:set noic ,区分大小写


:set sm,显示匹配括号
:set nosm ,不现实匹配括号


:set hlsearch ,打开搜索高亮
:set nohlsearch ,关闭搜索高亮


:syntax on ,打开语法高亮
:syntax off ,关闭语法高亮


e、配置文件
全局配置文件/etc/vimrc,只有管理员可以编辑,所有用户有效
用户配置文件~/.vimrc ,只有当前用户有效

属性定制选项全部可以写入配置文件中,以便长期生效

推荐阅读:

Vim学习指南

快速学会 Vi编辑器

强大的Vim 编辑器

在CentOS 6.2上搭建Vim开发环境

Vim 7.4a 发布,全新更快的正则表达式引擎

CentOS 5.4 安装高亮Vim编辑工具

Vim技巧分享:C语言设置

Ubuntu中设置Vim的行号

Vim编辑器使用基础教程

相关内容