为什么要学 vim
可怕的 vim (缺点)
- vim 学习门槛高
- 操作奇怪
- 不能用鼠标
- 功能弱
- 不配置不折腾的话, 什么功能都没有, 就是一个普通的编辑器
- 不能管理项目
- 没有代码高亮
- 没有代码提示
- ......
- 什么都没有
如此来说, vim 没有任何优势... 可是业内有一句话:
世界上只有三种编辑器 vim, Emacs, 其他
vim 的优点
为何会这样呢? 我们来看看 vim 的优点:
- 运指如飞
- 所思即所得
可以这样说, 用 vim 和用 IDE 什么的, 完全是两个感觉.
用 IDE 就像用一双筷子, 夹住一把勺子, 然后去舀菜吃. 别扭不? 想想都别扭.
用 vim 就像用手直接去抓菜吃, 那个淋漓畅快.
为什么这样说呢?
- vim 使用的是肉体记忆
- 其他使用的是技巧记忆
肉体记忆是反射性的, 相当于给你增加了一个绘图的 GPU, 不会中断和占用你的 CPU
而技巧记忆必须中断 CPU, 切换 CPU 去做其他事情, 然后再切换回来.
比如我要将文本中一行代码剪切到最顶端.
- vim:
ddggp敲下这几个字母你就实现了这个功能了 - 其他党: 把手从键盘上拿下来, 抓住鼠标, 颤抖的小心翼翼的拖拉着光标选中对应的文本, 千万要小心, 不要少选中任何一个字符. 按下右键, 在弹出的一堆菜单中仔细的找到 剪切 小心翼翼的选中 剪切 , 然后拼命的滚动滚轮, 直到滚不动以后, 仔细查看是否滚最上面了, 有没有少滚一点, 然后把颤抖的光标移动到最上面那一行的顶端. 接着按下右键, 在弹出的密密麻麻的菜单中, 仔细的找到 粘贴 这两个字.
可怜的其他党, 做完这些以后, 你还能想得起来复制到最上面是干什么么?
嗯, 没错你花了 2 分钟, 还是能想得起来, 可能就是复制上去测试一下. 然后不行还是得改回去.
- vim:
uu就改回去了 - 其他党: 好累, 就是把上面的操作反向再重复一次. 我都懒得写了. 难点是要找到该插回代码的哪里?别插错了. 不能用 ctrl+z 哦. 纯粹的其他党不应该使用热键的.
中断对我们的工作效率影响是非常巨大的, 可以参见 碎片化对我们脑力智力的摧残
不要说上面这种不人性的操作了, 即使是将手从键盘上拿下来, 也是影响非常大的.
所以一个优秀的 vim 程序员, 操作编辑文本的能力和效率可能只是其他党的 4-5 倍.
但是考虑到持续思考不中断编辑的产出, vim 程序员的工作效率甚至能达到其他党的 10-20 倍.
vim 甚至能让你思维方式和看待事物的发生不一样的改变. 所以身为一个程序员, 不使用一个真正的编辑器, 那是不称职的.
vi的历史
vi 由 Bill Joy 于 1976 年发表, 已经有接近 40 年的历史. 目前是 UNIX 规范的一部分, 只要是 UNIX 的衍生类操作系统, 里面一定能使用 vi.
vi/vim 是一款能够一辈子使用下去的工具, 永远不会过时, 而且你永远可以持续性的学习技巧, 持续性的提高自己的生产效率. 是不变应万变的神器
然后 IDE 呢? 这几年流行过的 IDE 数不胜数 jbuilder, Netbeans, IntelliJ, Eclipse, webstorm, Sublime 还有 jetbrains 出品的各种IDE. 可能我孤陋寡闻了, 还有很多优秀的 IDE 没列出来, 没错 IDE 是很好用, 以后可能还有更好用的 IDE 出来, 你就慢慢的没有积累的学下去吧.
如何学习 vim
- 打开一个 vim 编辑器, 输入
:help - 部门有一本书
- 网络上有很多简单的入门技巧
你随时可以开始学习, 但是学习的过程, 怎么说呢?并不是那么让人愉快的, 更类似学习一款新的输入法. 你会痛苦纠结彷徨, 但是坚持过来了, 形成肉体记忆了, 就都好了.
你要抱着一种思路: 不求完美, 但求使用
只要学到基础的东西, 坚持的用下去, 每次遇到不会的操作, 停下手头工作, 都去查出来, 记下来.
vim 有两种(其实是三种)模式:
- 移动 esc
- 插入 i
- 虚拟 v(可以不用管)
基本能力
- 移动模式: h(左)j(下)k(上)l(右) 一定要最先的记死用熟
- 插入模式: 你可以输入想要输入的东西, 没什么可以说的
- 保存文件:
:w然后回车 - 复制内容: v 进入虚拟模式, hjkl 移动复制, 然后按下 y
- 粘贴内容: p
- ....
自己慢慢学, 其实入门也很简单, 只是形成肉体记忆比较难. 我现在熟悉的 vim 命令也很少, 就是常用那几个, 因为编码工作不够多吧.