码农,程序员 和 骇客  • • •  New Start, On My Mark       all posts in Archive

我的一些 Vim 经验

正儿八经开始练习 Vim 也有5年的样子了。开始的一两年浅尝则止,学得不够勤勉,所以拖拖拉拉,到现在还是只能算是浏览过秘籍,要做到信手拈来,还得慢慢练着。

不过和公司同事分享经验得时候,有几个东西也给自己归个档。

编辑器之争

开始使用 Vim 的原因是因为要做很多 Terminal 的工作,而几乎所有Unix,Linux系统都预装了 Vi 或者 Vim,没有不用它的道理。 也别纠结在该不该用它,先尝试了再说吧,至于什么好什么更好的,就别关心了。

最好的学习就是不停得用

如果要学,最简单就是立刻用起来,不论是 Windows,Linux,Mac 都可以找到 GUI 的版本,他们都和新一代编辑工具一样,安全可以使用鼠标,不会为初学者带来太多不便。即使你没有电脑,在 Android 或者 iOS 设备上也能安装相应的版本。这都不愿意,那就玩玩 WEB 版的 Vim 工具。

要想短时间有大提高,最简单的方法是把默认文本编辑工具换成 vim。只有碰到足够多的问题,才能有相应的长进。

光标移动是Vim的根本

Vim 的哲学是,让你在手指根本不离开键盘的前提下,完成所有工作。理论上这的确是,最理想最有效率的工作方式。

鼠标的优势是指哪儿打哪儿,初学 Vim 的人对于光标的移动一定是满头包,怎么 hjkl 玩起来那么慢啊!恼火!可既然那么多高手说 Vim 用好了效率惊人,那么他们一定是掌握了媲美甚至超越鼠标的个中奥妙,不用怀疑。

你要做的就是,自己去挖掘秘籍吧。

和 Vim 聊天

Vim 要记命令,但也根本不用记。 掌握了基本的每个按键对应的含义,几种模式的区别。就可以和它说话了: 动词 + 动作 或者 目标。 大部分命令都可依葫芦画瓢,有些时候,你更可以充分发挥自己的想像力,来和它说话。Vim 比你想象中要更聪明。

简单列一部分:

  • Verbs : v (visual) , c (change) , d (delete)
  • Motion : hjkl , w (word) , ^ , $ , G
  • Objects : w (word) , s (sentence), i (inside), t (till), f (find character), /

我们要更换 “<html/>” 中 <> 里边的 html 内容时,就可以用 “ci<” (change inside <) 快速编辑了。

所以是记硬背什么的,都是相当违和的,多熟悉一点基本词汇,造句就行了!

活用 Register 和 Marks

Ctrl+C 和 Ctrl+V 这对所有操作系统的活宝,到 Vim 这里突然不管用了,相信也会让许多初学者不爽一下。搞清楚了 Register 就可以明白,到底怎么做到在程序之间相互拷贝的了。

另外 Vim 默认定义出26个 Named Registers 是相当有心的。如果用好了,能带来极大的便利,建议多看看高手是如何使用的,一定可以给你带来极大的便利。

Marks 顾名思义就是做锚点。它的用途也不只是快速的回到锚点,还可以使用到 Motion 里面去。譬如删除文字,直到某一个 mark。 在编写代码的时候相当有用。

同时编辑多个文档

Vim 可以用 :split 这一套命令划分出新窗口,每个都可以分别编辑不同文件。在文本比较的时候还比较有用。

另外 GUI 的 Vim 通常也有 Tab 的功能,和其他工具的分页是一个意思。 不过在 Vim 使用 Buffer 来管理多个文件才是最vim的方式。

用 GitHub 管理 Vim 配置

到了后期,一般都会使用不少的插件,(可以参考这里)即使是没有插件,.vimrc 也会变得非常复杂。为了复用方便,存到资源管理器是理所应当的。

是不是 Github 并不重要,SVN 也不是不可以,不过放到 Github 显然更适合分享经验。

写在最后

Vim 不简单

虽然开始不易,不过每次尝试用更少的按键,更高的效率命令,来完成同样的事情,也是挑战自己的有趣游戏。

不过一旦熟悉 Vim 后,一定爱不释手的,特别像是遇到像 Xcode 这样的不够高效的工具,就难免会想,能不能也像 Vim 那样工作啊! Bingo ~ 是有的。装个 XVim 插件就好了!

Vim 并不难

学好 Vim 只有一个前提,就是你必须是一个有心提高自己工作效率的人。

好些程序员是懒性很强的,他们总是觉得差不多就行了,只要能完成功能就行了,慢点没关系。这种人是不需要学习 Vim 的,他们也是永远不可能掌握 Vim 的,任何其他技术也是一个结果。

所以用不用 Vim 都是小事,不可能只剩下这么一个高效的编辑工具,选择其他完全没有问题。文本编辑也不是开发的全部,重点是要有期望高效开发的心 ~