EasyVim
简单强大的vim配置,熟练后可大大提高开发效率(VS Code的两倍以上)。

安装
安装过程需要从github下载很多插件,国内尽量挂VPN
git clone https://github.com/yuesong-feng/EasyVim
cd EasyVim/
sh ./install.sh
vim
:PlugInstall
tagbar显示和CTRL-]跳转需要安装ctags程序,推荐universal-ctags
写程序时,ALE相关功能建议安装LSP,C/C++推荐clangd
模式
| 快捷键 | 原指令 | 描述 |
|---|---|---|
| ESC | 返回到命令模式 | |
| i | 在光标位置插入 | |
| a | 在光标后一个位置插入 | |
| I | 在行首插入 | |
| A | 在行尾插入 | |
| o | 在下方新建一行并插入 | |
| O | 在上方新建一行并插入 | |
| s | 删除光标字符并插入 | |
| S | 删除光标所在行并插入 | |
| v | 进入可视模式 | |
| V | 进入可视行模式,此时会整行选中 | |
| CTRL-V | 进入可视块模式,此时会竖行部分选中 | |
| R | 进入替换模式 |
光标与搜索(也可在可视模式进行选中)
| 快捷键 | 原指令 | 描述 |
|---|---|---|
| [count]k或j或h或l | 上下左右移动光标,前面加数字表示移动多少单位 | |
| w | 右移光标到下一个单词的开头 | |
| e | 右移光标到单词的末尾 | |
| b | 左移光标到单词的开头,已在开头则左移到前一个单词的开头 | |
| f{char} | 光标移动到行内下一个char字符处 | |
| F{char} | 光标移动到行内上一个char字符处 | |
| ;h或;l | ^或$ | 光标移动到第一个非空字符(或行尾) |
| 0 | 左移光标到本行的开始 | |
| gg或G | 光标移动到文件首(或文件尾) | |
| M或H或L | 光标移动到屏幕中间一行/第一行/最后一行 | |
| zz或zt或zb | 将当前行居中/显示为顶行/显示为第行 | |
| zh或zl | 向左(右)滚动一行 | |
| zH或zL | 向左(右)滚动半屏 | |
| CTRL-E或CTRL-Y | 向下(上)滚动一行 | |
| ;j或;k | CTRL-D或CTRL-U | 向下(上)滚动半屏 |
| CTRL-F或CTRL-B | 向下(上)滚动整屏 | |
| /或? | 正向(或反向)搜索,输入回车重复上一次搜索 | |
| n或N | 下一个(或上一个)搜索结果 | |
| ;/ | :noh | 取消搜索结果高亮 |
| CTRL-P | 模糊搜索当前目录下的文件 |
编辑
| 快捷键 | 原指令 | 描述 |
|---|---|---|
| u | 撤销 | |
| CTRL-R | 反撤销 | |
| x | 删除当前字符 | |
| [count]r{char} | 替换(count个)为char | |
| J | 删除当前行尾的换行符 | |
| [count]dd | 剪切count行,没有count表示剪切一行 | |
| dw/de/db | 剪切到w/e/b指令处 | |
| 视图模式 d | 剪切选中区域 | |
| d{ ( 或 ) 或 [ 或 ] 或 { 或 } } | 剪切到段首或段尾 | |
| di{ ( 或 ) 或 [ 或 ] 或 { 或 } } | 剪切括号内的内容 | |
| d0 | 剪切到当前行的开始 | |
| d;h | d^ | 剪切到当前行首第一个非空字符 |
| d;l | D或d$ | 剪切当前行到行尾 |
| [count]yy | 复制count行,没有count表示复制当前行 | |
| yw/ye/yb | 复制到w/e/b指令处 | |
| 视图模式 y | 复制选中区域 | |
| y{ ( 或 ) 或 [ 或 ] 或 { 或 } } | 复制到段首或段尾 | |
| yi{ ( 或 ) 或 [ 或 ] 或 { 或 } } | 复制括号内的内容 | |
| y0 | 复制到当前行的开始 | |
| y;h | y^ | 复制到当前行首第一个非空字符 |
| y;l | y$ | 剪切当前行到行尾 |
| p | 在当前位置后粘贴 | |
| P | 在当前位置前粘贴 | |
| ;c | 注释/反注释当前行或选中内容 | |
| ;w | :w | 保存 |
| ;q | :q | 退出 |
窗口与跳转
| 快捷键 | 原指令 | 描述 |
|---|---|---|
| CTRL-O或CTRL-I | 返回光标上一个/下一个所在位置 | |
| ;n | :NERDTreeToggle | 打开目录 |
| ;m | :TagbarToggle | 打开tag列表 |
| ;[1-9] | 转到第n个buffer | |
| Tab | 下一个buffer | |
| S-Tab | 上一个buffer | |
| ;b | :bd | 关闭当前buffer |
| gt | 跳转到下一个tab | |
| gT | 跳转到上一个tab | |
| ;t | :shell | 打开新终端,在终端中使用CTRL-W使用vim窗口控制 |
| CTRL {h或j或k或l} | CTRL-W {h/j/k/l} | 在多个窗口跳转 |
| CTRL-W {H/J/K/L} | 将当前窗口移动到某一方向 | |
| CTRL-W o | 仅保留当前窗口,关闭其他所有窗口 | |
| CTRL-W = | 将所有窗口的高度宽度设置为与当前窗口一样 | |
| CTRL-W [count]+或- | 增加或减少[count]单位的当前窗口高度 | |
| CTRL-W _ | 将当前窗口的高度设置为尽可能最高 | |
| CTRL-W [count]<或> | 增加或减少[count]单位的当前窗口宽度 | |
| CTRL-W | | 将当前窗口的宽度设置为尽可能最宽 |
C/C++、LSP、代码提示补全等
| 快捷键 | 原指令 | 描述 |
|---|---|---|
| CTRL-] | 跳转到定义,需要ctag生成tags文件 | |
| gf | 跳转到头文件,找不到则需要在.vimrc中设置path | |
| ;g | :ALEGoToDefinition | 跳转到定义,需要LSP |
| ;f | :ALEFindReferences | 查找引用出现的地方 |
| ;s | :ALESymbolSearch | 查找系统符号 |
| ;space | :ALEHover | 显示详细信息 |
| ;rn | :ALERename | 重命名 |
| 完善中 | 完善中 | 完善中 |



















