Vim是vi的高级版本(Vi IMproved),是一种文本编辑器,与vim的插件相结合,同时也是Linux平台下很好用的程序编辑器。所有的Linux发行版都会默认安装vim作为文本编辑器,很多软件编辑接口都会主动调用vim(crontab, visudo, edquota)。我这里用的RHEL6平台,其实vi就直接使用的是vim。
[clef@rhel6164 rc]$ which vi
alias vi='vim'
/usr/bin/vim
Vim的三种基本模式:
- 一般模式:以vim打开一个文件就直接进入一般模式(默认的模式),在一般模式下可以进行删除字符或删除整行,也可以复制、粘贴文件数据。
- 编辑模式:在一般模式下可以进行删除、复制、粘贴等的操作,但是却无法编辑文件内容,按下"i, I, o, O, a, A, r, R"中任何一个字母就可以进入编辑模式,对文件进行编辑,按下【Esc】就可以从编辑模式返回到一般模式。
- 命令行模式:在一般模式当中,输入“:, /, ?"三个中的任何一个字符,就可以进入命令行模式。在命令行模式中,可以进行查询数据的操作、大量替换字符串,离开vim,按下【Esc】就可以从编辑模式返回到一般模式。
一般模式与编辑模式的转换
字符 | 说明 |
---|---|
i或I | 进入插入模式,i为从当前光标处插入,I(大写i)在目前所在行的第一个非空格处插入 |
a或A | 进入插入模式,a为从当前光标所在的下一个字符处插入,A在目前所在行的最后一个字符处插入 |
o或O | 进入插入模式,o为在当前光标所在行处的下一行插入新的一行,O为在上一行插入新的一行 |
r或R | 进入替换模式,r只会替换光标所在的那一个字符一次,R会一直替换光标所在的字符,直到输入【Esc】 |
【Esc】 | 退出编辑模式,进入一般模式 |
命令行模式一些简单说明
字符 | 说明 |
---|---|
:w或:w! | 保存数据,'!'表示强制的意思 |
:q或:q! | 退出vim,'!'表示强制的意思 |
:f | 显示文件名 |
:wq或:wq! | 保存后退出vim,'!'表示强制的意思 |
:w [filename] | 将编辑的数据保存成另一个文件(类似于另存于) |
:r [filename] | 在编辑的数据中,读入另一个文件的数据,即将'filename'这文件内容加到光标所在行的下面 |
:n1, n2w [filename] | 将n1到n2行的内容保存成filename这个文件 |
:! command | 暂时离开vim的命令行模式下执行command的显示结构 |
:help | 查看vim的帮助信息,进入帮助页面,查看最前面关于帮助文档页面操作的说明 |
:set all | 显示所有可以设置的选项 |
:set nu | 显示行号 |
:set nonu | 取消行号 |
一般模式中移动光标的方法
字符 | 说明 |
---|---|
h或者向左箭头 | 光标向左移动一个字符 |
j或者向下箭头 | 光标向下移动一个字符 |
k或者向上箭头 | 光标向上移动一个字符 |
l或者向右箭头 | 光标向右移动一个字符 |
G | 移动到这个文件的最后一行 |
n和上面的字符结合 | n为数字,移动n个字符/行,例如10j表示想下移动10字符 |
gg | 移动到这个文件的第一行,相当于1G |
0或者功能键【home】 | 数字’0‘,移动到这一行的最前面的字符处 |
$或者功能键【End】 | 移动到这一行的最后面的字符处 |
J | 将光标所在行与下一行数据结合成一行 |
u | 复原/撤销前一个操作 |
1+Ctrl+g | 显示打开文件的路径和文件名 |
查找与替换
字符 | 说明 |
---|---|
/word | 从光标所在行向下查找word字符串 |
?word | 从光标所在行向上查找word字符串 |
n或者N | n表示向下重复上一个查找,N表示向上重复上一个查找 |
:n1, n2s/word1/word2/g | 在n1与n2行之间用word2替换word1字符串 |
:1, $s/word1/word2/g | 从第一行到最后一行,用word2替换word1字符串 |
:1, $s/word1/word2/gc | 在替换的时候,有确认信息提示 |
删除、复制与粘贴
字符 | 说明 |
---|---|
x, X | x表示从光标处向后删除,X表示从光标处先一个字符向前删除 |
dd | 删除光标所在的一行 |
yy | 复制光标所在的一行 |
n和上面的字符结合 | n为数字,删除多个字符/行、复制多行 |
p, P | p表示将复制的数据在光标的下一行粘贴,P则为上一行粘贴 |
d/y与1G/G字符结合 | 分别表示删除/复制光标所在行到第一行/最后一行的所有数据 |
d/y与$/0字符结合 | 分别表示删除/复制光标所在的那个字符到改行行首/行尾的所有数据 |
一些高级的vim操作
- 块选择(Visual Block)
- 多文件编辑,同时用vim打开多个文件
- 多窗口功能
块选择操作
字符 | 说明 |
---|---|
小写v | 字符选择,会将光标经过的地方反白选择 |
大写V | 行选择,会将光标经过的行反白选择 |
【Ctrl】+v | 块选择,可以用长方形的方式选择数据 |
y | 将反白的地方复制起来 |
d | 将反白的地方删除 |
【Esc】 | 退出块选择模式 |
多文件编辑操作
字符 | 说明 |
---|---|
:n | 编辑下一个文件 |
:N | 编辑上一个文件 |
:files | 列出当前vim打开的所有文件 |
多窗口功能
字符 | 说明 |
---|---|
:sp [filename] | 打开一个新窗口,如果没有加filename表示两个窗口都是显示同一个文件 |
【Ctrl】+w+j/向下箭头 | 光标移动到下面一个窗口 |
【Ctrl】+w+k/向上箭头 | 光标移动到上面一个窗口 |
Vim环境设置与记录
- ~/.vimrc:用户自己定制vim的设置
- ~/.viminfo:记录曾经做过的vim操作
当在定制vim选项的时候,可以参考vim命令行模式里面的所有选项(:set all),注意,在进行设置的时候,~/.vimrc文件里面就不包含冒号了(:)。
Vim查看帮助文档
- 在vim中使用:help
- 直接使用命令vimtutor