Vim作为Linux系统自带的文本编辑器,掌握如何使用是很有必要的。
Vim模式
- Normal 模式:进入Vim后的一般模式。
- Insert 模式:按下i键后进入插入模式,可以修改文档。
- Visual 模式:按下v键后进入选择模式,可以选择文档内容。
Vim打开和切换文件
- 终端vim file1 file2 ...可以打开多个文件。
- :ls显示打开的文件,可以使用- :bn在文件间切换( n也可以换成- :ls里给出的文件序号 )。
- 打开vim后,可以用:e fileName来打开文件或者新建文件。
- 在终端vim -o file1 file2 ...可以打开多个文件(横向分隔屏幕)。
- 终端vim -O file1 file2 ...可以打开多个文件(纵向分隔屏幕)。
- Ctrl+- w+- w在窗口间切换光标,第二个- w也可以用- h、j、k、l来光标代表移动方向。
Vim退出
- :q:退出。
- :q!:强制退出,放弃所有修改。
- :wq:保存修改并退出。
常用快捷键
- 方向键\(\leftarrow\downarrow \uparrow \rightarrow\)也可以用h、j、k、l。
- 0到行首,- $到行尾。
- gg到文档首行,- G到文档结尾。
- Ctrl+- f下一页,- Ctrl+- b上一页。
- Ctrl+- u往上半页,- Ctrl+- d往下半页。
- w或- e光标往后跳一个单词,- b光标往前跳一个单词。
- :98跳转到第98行。
- q:显示命令行历史记录窗口。
- !bash_Command不退出vim暂时返回终端界面执行该命令。
- H将光标移动到屏幕首行,- M将光标移动到屏幕中间行,- L将光标移动到屏幕最后一行。
Vim分屏
- :sp或者- :split横向分隔屏幕,后面可以加文件名。
- :vs或者- :vsplit纵向分隔屏幕,后面可以加文件名。
- :only只保留光标所在分屏,关闭其他分屏。
- 在nerdtree插件中,选中文件后按s纵向分隔屏幕,按i水平分隔屏幕。
复制粘贴
- 
    在Visual模式下选择文档内容后按 y键,复制被选择内容。
- 
    按 p键粘贴,注意粘贴从紧跟光标后的那个字符之后才开始。abc \(\big|\) d “COPIED_TEXT” efghk… ( \(\big|\) 是光标) 
- 选择内容后按d删除或者剪贴。
- yy复制当前行,- dd删除(剪贴)当前行。
查找和替换
查找
- 在Normal模式下,按/进入查找模式,输入/word后回车,高亮显示所有文档word,按n跳到下一个word,按N跳到上一个。
- 若输入/word\c代表大小写不敏感查找,\C代表大小写敏感。
- 输入:noh取消高亮。
- 按下*高亮查找光标位置处的单词,但若查找word,helloword中的word不会被高亮。
- 按下g*高亮查找光标位置处的单词,若查找word,helloword中的word也会被高亮。
- 在Normal模式下按q+/显示查找历史记录窗口。
替换
- :s/word/excel:替换当前行所有- word为- excel。
- :s/word/excel/g:替换当前行第一个- word为- excel,- /g代表只替换每行第一个。
- :%s/word/excel:替换全文所有- word为- excel。
- :%s/word/excel/gc:其中- /c代表需要确认,并提示:- replace with excel (y/n/a/q/l/^E/^Y)?,其中- a表示替换所有,- q表示退出查找模式,- l表示替换当前位置并退出,- ^E与- ^Y是光标移动快捷键。
- :2,11s/word/excel:替换第2到11行的- word为- excel。
- :.,$s/word/excel:替换当前行到最后一行的- word为- excel,- .代表当前行,- $代表最后一行。
- :.,+2s/word/excel:替换当前行与接下来2行的- word为- excel。
- 在Visual模式下选择后按:, Vim自动补全为:'<,'>,然后手动补全:'<,'>s/word/excel,将选择区域的word替换为excel。
- :s/word/excel/i:- /i代表大小不敏感查找,等同于- :s/word\c/excel,而- /I代表大小写敏感查找。
代码折叠
代码折叠是Vim的高级功能,意思就是即便没掌握也不影响Vim的正常使用。
- set foldenable: 打开代码折叠功能,可以写在根目录下的.vimrc文件里。
- set foldmethod=syntax: 设置折叠方式(- foldmethod可缩写为- fdm),常用的折叠方式有:- syntax: 按 C \ C++ 语法折叠- {};
- indent: 按缩进折叠,适用于 Python 。
 
- set foldlevelstart=99: 打开文件时不自动折叠代码。
- zc&- zo: 在Normal模式下将光标移动到代码的可折叠位置,按- zc折叠代码(close),- zo打开折叠的代码(open)。
小技巧 : 将nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>写入.vimrc文件,可将zc和zo映射为空格键。
拼写检查
对于英文单词的拼写,Vim 可以自动检查拼写 (Spell Checking)。
- set spell: 打开拼写检查,可以写在根目录下的 .vimrc 文件里,不过更推荐在需要使用时在 Vim 中手动打开- :set spell。
- 在 .vimrc 文件里写入 inoremap <C-l> <c-g>u<Esc>[s1z=`]a<c-g>u来将Ctrl+l映射为快捷键,其中[s代表光标跳到上一个拼写错误处,1z=选择第一个推荐的正确拼写,`]a光标跳回原来位置。设置完就可以通过Ctrl+l快速改正单词。

