Vim 是 UNIX 文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff),语法高亮,全面的帮助系统,本地脚本(Vimscript),和便于选择的可视化模式。 Vim 专注于键盘操作,它并不是像 nano 或 pico 一样的简单编辑器。Vim 需要花时间来学习,并值得花上更多的时间来掌握。
【Vim预警】:Vim学习成本很陡
ProVim
ProVim界面
ProVim常用命令
F系列快捷键
| F系列快捷键 | 说明 |
|---|---|
| F1 | 帮助文档 |
| F2 | 回到启动页 |
| F3 | 打开目录 |
| F4 | 打开Tag |
| F5 | 打开UndoTree |
| F6 | 新建终端 |
| F7 | gcc编译 |
| F8 | gdb调试 |
| F9 | 无 |
Coc插件系列快捷键
| Coc快捷键 | 说明 |
|---|---|
| [g | 下一个 |
| ]g | 上一个 |
| gd | 上一个 |
| gy | 上一个 |
| gi | 上一个 |
| gr | 上一个 |
| K | 上一个 |
| rn | |
| \f | |
| \a | |
| \ac | |
| \qf | |
| Ctrl+s | |
| space+a | |
| space+e | |
| space+c | |
| space+o | |
| space+s | |
| space+j | |
| space+k | |
| space+p |
ultisnips插件系列快捷键
| ultisnips快捷键 | 说明 |
|---|---|
| tab | |
| Ctrl+b | |
| Ctrl+z |
Git插件系列快捷键
| Git快捷键 | 说明 |
|---|---|
| \gg |
fzf插件系列快捷键
| fzf快捷键 | 说明 |
|---|---|
| +tab | 查询快捷键 |
airline插件系列快捷键
| airline快捷键 | 说明 |
|---|
Vim常用命令
- 展开折叠代码,zi
- 跳转到第一行,:1 gg
- 跳转到最后一行 :$ shift+g
多窗口使用技巧
打开多个窗口
- new name.txt
- sp(lit) name.txt
- vsp(lit) name.txt
关闭多窗口
- q!,w!,x 真正退出
- close 暂时关闭窗口,内容还在缓存中
- tabc 关闭当前窗口
- tabo 关闭所有窗口
窗口切换
- ctrl + w + j/k 上下切换
- ctrl + w + 方向键 上下左右切换
- ctrl + w (双击) 依次切换
窗口大小调整
- ctrl + w + 纵向扩大,行数增加
- ctrl + w - 纵向缩小,行数减小
- res(ize) num 显示行数调整为num行
- res(ize) + num 增加num行
- res(ize) - num 减少num行
- vertical res(ize) num 指定当前窗口为num列
- vertical res(ize)+num 把当前窗口增加num列
- vertical res(ize)-num 把当前窗口减少num列
给窗口重命名
- f file
vi打开多个窗口
- vi a b c
文件浏览
- :Ex 开启目录浏览器,可以浏览当前目录下的所有文件,并可以选择
- :Sex 水平分割当前窗口,并在一个窗口中开启目录浏览器
- :ls 显示当前buffer情况
vi和shell切换
- :shell 可以在不关闭vi的情况下切换到shell命令行
- :exit 从shell回到vi
快速跳转
- %
- [m
- [M
- ]m
- ]M
- [{
- ]}
- [(
- ])
- gd
- gD
vim编辑常用快捷键
复制粘贴剪切
- yy 拷贝某一行的内容
- dd 剪切某一行的内容
- p 粘贴
- v + 光标移动选中一些,松开v,然后按下y => 即拷贝选中的内容
- v + 光标移动选中一些,松开v,然后按下d => 即剪切选中的内容
- ctrl + v 列模式,移动光标可以选择列的内容
- dd可以看成是删除单独行,v + 光标移动选中内容再按下d可以看成是删除多行内容。
查找与替换
-
全局查找
- 在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个
- 在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找。例如: /foo\c /Foo\C
-
查找当前单词
-
- 查找当前光标所在的单词
- g* 可查找光标所在单词的字符序列,每次出现前后字符无要求
-
-
查找和替换
-
:s(substitute)命令用来查找和替换字符串
-
:{作用范围}s/{目标}/{替换}/{替换标志}
-
eg :%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)
-
作用范围
- 当前行 :s/foo/bar/g
- 全文 :%s/foo/bar/g
- 选区 :'<,'>s/foo/bar/g在Visual模式下选择区域后输入:,Vim即可自动补全为 :'<,'>
- 2-11行 :5,12s/foo/bar/g
- 当前行.与接下来两行+2 :.,+2s/foo/bar/g
-
替换标志
- 空替换标志 表示只替换从光标位置开始,目标的第一次出现
- g,表示全局global替换(即替换目标的所有出现)
- i表示大小写不敏感查找,I表示大小写敏感
- c表示需要确认,例如全局查找"foo"替换为"bar"并且需要确认
-
-
代码折叠
-
set foldenable 启动折叠
-
:set foldmethod=manual (Manual(手工折叠)、Indent(缩进折叠)、Marker(标记折叠)和Syntax(语法折叠))
-
za 打开关闭当前的折叠
-
zc 关闭当前打开的折叠
-
zo 打开当前的折叠
-
zm 关闭所有的折叠
-
zM 关闭所有的折叠及其嵌套的折叠
-
zr 打开所有折叠
-
zR 打开所有折叠及其嵌套的折叠
-
zd 删除当前的折叠
-
zE 删除所有的折叠
-
zj 移动至下一个折叠
-
zk 移动至上一个折叠
-
zn 禁用折叠
-
zN 启用折叠
-
Manual Fold
- zf
- zfa(
-
Indent Fold
-
Syntax Fold
-
Marker Fold
会话
- :mksession 保存当前会话
- :mkVimball
- :mkexrc
- mkspell
- mkview
- mkvimrc