命令 | 含义 |
---|
$ | 移至行尾 |
0 | 移至行首 |
:set nu | 设置行号 |
:set nonu | 取消行号 |
gg | 第一行 |
G | 最后一行 |
:n | 第n行 |
:4,5d | 删除4~5行的内容 |
D | 删除光标所在处到行尾内容 |
dG | 删除光标所在行到文件末尾内容 |
dd | 删除光标所在行,ndd删除n行 |
nx | 删除光标所在处后n个字符 |
x | 删除光标所在处字符 |
yy | 复制当前行 |
nyy | 复制当前行以下n行 |
dd | 剪切当前行 |
p | 剪切当前行以下n行 |
P | 粘贴在当前光标所在行上 |
r | 取代光标所在处字符 |
R | 从光标所在处开始替换字 |
u | 取消上一步操作 |
/string | 搜索指定字符串 |
:set ic | 搜索时忽略大小写 |
:%s/7/9 | 将所有的7替换成9 |
:4,5s/7/9 | 将4~5行的7替换成9 |
:4,5s/^/# | 将4~5行注释 |
1. vim的几种模式
- 正常模式下,输入":",可以在下方输入各种命令
- 正常模式下,按"i"、“a”、"o"都可以进入插入模式
- 正常模式下,按"v"可以进入可视模式,在可视模式下,移动光标可以选择文本。按V进入可视行模式,总是整行整行的选中
- 正常模式下,按"R"进入替换模式
2. 启动vim
- vim -R file 以只读的方式打开文件,但可以强制保存
- vim -M file 以只读的方式打开文件,不可以强制保存
- vim + file 从文件的末尾开始
- vim +num file 从第num行开始
- vim +/string file 打开file,并将光标停留在第一个找到的string上
3. 文档操作
- :e file 关闭当前编辑的文件,并开启新的文件。如果对当前文件的修改未保存,vim会警告。
- :e! file 放弃对当前文件的修改,编辑新的文件。
- :e + file 开始新的文件,并从文件尾开始编辑。
- :e +n file 开始新的文件,并从第n行开始编辑。
- :e 重新加载当前文档。
- :e! 重新加载当前文档,并丢弃已做的改动。
- :e# 回到刚才编辑的文件。
- :f 显示文档名,是否修改和光标位置。
- :f file 改变编辑的文件名,这时再保存相当于另存为。
- :n1,n2w filename 选择性保存从某n1行到另n2行的内容。
- :saveas newfilename 另存为。
- :Sex 水平分割一个窗口,浏览文件系统。
- :Vex 垂直分割一个窗口,浏览文件系统。
4. 光标移动
- “h” 或者退格,左移一个字符。
- “l” 或者空格,右移一个字符。
- “j” 下移一行。
- “k” 上移一行。
- “+” 或者 “enter” 把光标移动到下一行第一个空白字符。
- “-” 把光标移动到上一行第一个非空白字符。
- “w” 后移一个单词,光标停在下一个单词开头。
- “W” 后移一个单词,光标停在下一个单词开头,但忽略标点。
- “e” 后移一个单词,光标停在下一个单词末尾。
- “E” 后移一个单词,如果词尾有标点,则光标移动到标点。
- “b” 前移一个单词,光标停在上一个单词开头。
- “B” 前移一个单词,光标停在上一个单词开头,但忽略标点。
- “(” 前移一段
- “)” 后移一段
- “fc” 把光标移动到同一行的下一个c字符处。
- “Fc” 把光标移动到同一行的上一个c字符处。
- “tc” 把光标移动到同一行的下一个c字符前。
- “Tc” 把光标移动到同一行的上一个c字符前。
- “0” 移动到行首。
- “g0” 移动到光标所在屏幕行行首。
- “^” 移动到本行第一个非空白字符。
- “n|” 移动光标到第n列上。
- “nG” 移动光标到第n行上。
- “:n” 移动到第n行。
- “$” 移动到行末尾。
- “H” 把光标移动到屏幕最顶端一行。
- “M” 把光标移动到屏幕中间一行。
- “L” 把光标移动到屏幕最底端一行。
- “gg” 到文件头部。
- “G” 到文件尾部。
5. 翻屏
- “ctrl + f” 下翻一屏。
- “ctrl + b” 上翻一屏。
- “ctrl + d” 下翻半屏。
- “ctrl + u” 上翻半屏。
- “ctrl + e” 向下滚动一行。
- “ctrl + y” 向上滚动一行。
- “n%” 到文件n%的位置
- “zz” 将当前行移动到屏幕中央。
- “zt” 将当前行移动到屏幕顶端。
- “zb” 将当前行移动到屏幕底端。
6. 剪切和复制、粘贴
- “nx” 剪切光标右边n个字符。
- “nX” 剪切光标左边n个字符。
- “y” 复制在可视模式下选中的文本。
- “yy” “Y” 复制整行文本。
- “y[n]w” 复制一(n)个词。
- “y[n]l” 复制光标右边1(n)个字符。
- “y[n]h” 复制光标左边1(n)个字符。
- “y” 从光标当前位置复制到行尾。
- “y0” 从光标当前位置复制到行首。
- “m,n y” 复制m行到n行的内容。
- “D” 删除(剪切)当前位置到行尾的内容。
- “d[n]w” 删除(剪切)1(n)个单词
- “d[n]l” 删除(剪切)光标右边1(n)个字符。
- “d[n]h” 删除(剪切)光标左边1(n)个字符。
- “d0” 删除(剪切)当前位置到行首的内容。
- “n dd” 删除(剪切)n 行。
- “:m,nd” 剪切m行到n行的内容。
- “dgg” 剪切光标以上的所有行。
- “dG” 剪切光标以下的所有行。
- “p” 在光标之后粘贴。
- “P” 在光标之前粘贴。
7. 查找
- “/something” 在后面的文本中查找something。
- “?something” 在前面的文本中查找something。
- “n” 向后查找下一个。
- “N” 向前查找下一个。
8. 替换(所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc,加上i则忽略大小写。)
":s/old/new" 用new替换当前行第一个old。
":s/old/new/g" 用new替换当前行所有的old。
":n1,n2s/old/new/g" 用new替换文件n1行到n2行所有的old。
":%s/old/new" 用new替换文件中所有的old。
":%s/^/xxx" 在每一行的行首插入xxx,^表示行首。
":%s/$/xxx/g" 在每一行的行尾插入xxx。