vim 入坑指南(零)— 序言

与其像众多 “vim 入门” 文章那样上来就直奔主题,给你看许多截图和代码,这第一篇咱就先提一些“没用的”。说说 vim 是个什么样的文字编辑器,它的逻辑是什么。

一些假设和说明

在准备入坑之前,先容 V字君列几条准备入坑的前提:

  1. 假设你有一点点的编程知识背景

    如果你刚刚入门编程,那么 V字君觉得你应该更关注编程本身,而非编辑器。使用 Sublime Text 类似的编辑器可能会更适合你。当然,如果你想上手编程的同时,就开始用 vim ,那么不妨试试 V 字君的这个“入坑”系列,希望能帮你省去不少麻烦。

  2. 假设你有一定时间

    学习 vim 是需要一定时间的,想要上手便有超高的生产力(productivity)也比较困难。不过磨刀不误砍柴工,vim 如独孤九剑,一旦练成,便知世间除 vim 外再无趁手兵刃(当然是因人而异。对于我,的确如此)。

还有几条说明:

  1. V 字君一直用的 Mac,所以所有的文章都主要针对 Mac 上 vim 谈的。不过无论你用的是 Ubuntu 还是 Windows,很多内容基本都是通用。

  2. 就本文写作时,V 字君使用的 vim 版本是 7.4


当我们谈及 vim 时,我们都说些什么

说完了前提,咱们先站在“坑外”观望一下,说说关于 vim 的几个说法,以及 vim 的逻辑是什么。

说法 1:vim 学习曲线很陡峭,上手不易

vim 其实很容易学的,很多人觉得难是因为:

  1. vim 的逻辑于其他的编辑器不同,而且需要养成相关的肌肉记忆
  2. 官方自带的 “入门” 材料和实际应用存在一定差距,上手期间是在太煎熬
  3. “纯天然” 的 vim 所提供的功能并不多,而且配置太过繁琐,想把 vim 变成想要的模样太麻烦
  4. 插件太多,各自的说明文件也并不易懂。

仔细想想,其实这些都不是大事儿,因为有了 V 字君的 vim 入坑系列,一切就都好办啦。

说法 2:vim 不如 emacs (或者 emacs 不如 vim)

这个主要还是看个人,文本编辑器本来就是个工具,只要你投入足够多的时间,你可以把任何编辑器打造成独一无二的利器。 V 字君只是恰巧当年选择了 vim 而已。

说法 3:vim 太古董了,应该使用像 Sublime Text 或者 Atom 那样的编辑器

就如前提所提到的那样,如果你刚刚入门编程,或者并没打算在编辑器上花太多功夫,那么 Sublime Text/Atom 自然是适合的,且它们的“天生”生产力也很高,比如 Sublime Text 的 multicursor 功能,简直是让人看呆眼(V 字君也是常年的 Sublime Text 用户)。


vim 的逻辑

无论是哪一个文本编辑器,键盘总是比鼠标要高效的。别说文本编辑器了,那些用 Word (其实这也是个文本编辑器),Excel 如飞的人也一定是掌握了很多快捷键的。对于任何一个文本编辑器来说,都要解决一个问题:如何利用键盘上有限的键,完成更多的功能以及更高效的输出

最简单的一个例子就是“复制”和“粘贴”:cmd/ctrl + ccmd/ctrl + v。基本上大部分的文本编辑器都采用的是这样的方式。V 字君把他们都划分为“Emacs 的方式”

emacs 的方式:按住 Ctrl, Alt/Meta 等键来提供更多的功能

1
2
3
4
ctrl + b 向后移动光标 backward
ctrl + f 向前移动光标 forward
ctrl + n 向下移动光标 next (line)
ctrl + p 向上移动光标 previous (line)

有的时候一层快捷键不够使,那就要两层,或者是三层。比如,emacs orgmode 里,如果我想要预览 LaTex 数学公式的话,需要按下:ctrl + c, ctrl + x, ctrl + l

千万别误会,V 字君也是超级钟爱 orgmode 的。如果当年上大学时我会用 orgmode,天知道我能省下多少时间。不过那些都是后话了,因为当时已经使用 vim + LaTex 几年了,也不需要换了。

vim 的方式: 提供几个不同的模式, 不同模式下,同个键有不同的功能

vim 采用的方式则完全不同,与其让你别扭的按住 ctrl 键一直不放,干脆提供多种模式,就好比画家的画笔和画刀,每种模式做不同的事情。

  • 普通模式 (normal mode)
  • 输入模式 (insert mode)
  • 可视模式 (visual mode)
  • 替换模式 (replace mode)
  • 选择模式 (select mode)

举个简单的例子, 在 输入模式 下,vim 就和其他的编辑器一样,输入什么,显示什么。而在 普通模式 下,同一个键则有不同的意义: 比如,w 键和 b 键在 普通模式 下其实使用来移动光标的。

这么做有几个好处:

  1. 对“手”比较好:因为做一些简单的动作(比如:移动光标)时,真心不需要长时间按住 ctrl 键
  2. 可以提供更多的功能:因为基本上每一个键都可以用来制定你想要的功能。 而且你也可以制定像 emacs 那样的快捷键(ctrl + …)
  3. vim 的文本对象:这个概念在以后要专门讲。但大致意思就是,在 vim 眼中,任何文本都是有“级别”的:字,行,段,同一的动作(action)可以应用到任何一“级别”。比如“删除”这个动作都是 d 这个键,你可以选择:
1
2
3
删除一字 dw  --> delete word
删除一行 dd --> delete line
删除一段 dp --> delete paragraph

基本上就是这些了。这些模式看起来多,其实常用的也就是三个,之后咱们慢慢展开。

观望结束

好啦,就这些了。不过在咱们撸袖子准备入坑之前,咱们先得把 vim 搞到手

VZJ wechat
欢迎您扫一扫上面的二维码,订阅 V 字君的微信公众号。