为什么要用vim
都知道vim编辑器功能很强大,但是命令太多,上手难度高,实乃从入门到放弃的典范。工作中用vim比较多的就是运维同学了,在linux系统中,编辑各种配置文件,都是用到了vim编辑器。但身边做开发的小伙伴,可能用vim的就非常少了,当然也有把vim当IDE做开发的大神。
这里总结了下个人使用vim的历程和经验,这么多年的过程大概就是入门->放弃->再入门->再放弃....,目前主要结合Intellij Idea Vim Plugin做为开发的主要工具,vim真的是对开发效率有很大的提升。
定位
这里主要是针对普通开发人员,定位可以算是轻度使用,很多vim好用的命令都没用到,优势就是简单、快速上手,vim大神误喷。
使用场景
这里只介绍结合Intellij系列IDEA中使用Vim Plugin进行代码开发。
原生命令
这些命令为vim自带命令,总结了平时开发中比较常用的命令
| 功能 | 命令 | 说明 |
|---|---|---|
| 光标移动 | j/k/h/l | 上下左右 |
| 切换输入模式 | i | - |
| 向下新增一行,进入输入模式 | o | - |
| 向上新增一行,进入输入模式 | O | - |
| 光标移动到行头 | shift + 6 | |
| 光标移动到行尾 | shift + 4 | |
| 向下翻半页 | ctrl + d | |
| 向上翻半页 | ctrl + u | |
| 删除一行 | dd | |
| 向下删除N行 | Ndd | N代表要删除的行数 |
| 撤销一步操作 | u | - |
| 将光标所在位置置为屏幕中央 | zz | - |
| 移动光标到第N行 | NG | N代表行号 |
| 行内搜索光标位置后的字符 | f字符 | - |
| 行内搜索光标位置前的字符 | F字符 | - |
| 替换光标位置字符 | r新字符 | - |
| 从光标位置删除到指定字符位置 | df字符 | - |
| 剪切光标位置字符 | x | 也可以当删除用 |
| 粘贴 | p | 只能粘贴使用vim命令复制或剪切的字符 |
修改vim快捷键Handler
我们可以使用IDE自带的功能来代替vim的一些能力。以及使用vim的一些命令,扩展IDEA的一些能力。
在IDEA中安装了VimPlugin后,很多快捷键如果和vim中冲突,IDE会提示我们选择使用vim还是IDE,我们也可以通过在Settings中自己手动修改快捷键Handler。
下面是建议修改Handler为IDE的快捷键:
| 快捷键 | 功能 | |
|---|---|---|
| Ctrl + A | 选择全部 | |
| Ctrl + C | 复制 | - |
| Ctrl + E | 最近打开过的文件列表 | - |
| Ctrl + F | 本页搜索 | - |
| Ctrl + K | git commit | - |
| Ctrl + R | Replace | - |
| Ctrl + T | git pull | - |
| Ctrl + V | 粘贴 | - |
| Ctrl + X | 剪切 | - |
其它技巧
修改Keymap(本人用的Ubuntu系统,所以截图是Alt+Shift,win系统是Alt+Ctrl):
| 修改前 | 修改后 | 功能 |
|---|---|---|
| Alt + 左箭头 | Alt + H | 选择前一个tab |
| Alt + 右箭头 | Alt + L | 选择后一个tab |
| Alt + Ctrl + 左箭头 | Alt + Ctrl + J | 移动到前一个光标位置 |
| Alt + Ctrl + 右箭头 | Alt + Ctrl + K | 移动到后一个光标位置 |
总结
- 使用jkhl、ctrl+u/d、以及其他技巧中的快捷键,可以在不使用鼠标的情况下进行快速光标移动、翻页、以及切换tab
- 这里只是个人习惯,不代表最佳方案,实际根据个人习惯,结合vim和IDEA快捷键可极大提升开发体验和效率
- 如果没有任何vim基础,需要强迫自己学习与适应,过了适应期,你可能会发现再没有vim plugin的环境下写代码体验极差