Vim知多少

Vim的官网

Vim最早在1991年由Bram Moolenaar发布,是Vi的一个改良版, 表示Vi IMproved.

Vi最早在1976年由Bill Joy发布。

Richard Stallman称Vi是魔鬼的编辑器(VI-VI-VI在罗马数字中表示兽名数目)。

Vi的支持者反讽Emacs是一个伟大的操作系统,只缺个体面的编辑器。两者有太多的往事不堪回首。

首页 » Vim » Vim

Vim介绍

也许自计算机诞生以来,编辑器就是最重要的应用之一。任何可输入的地方,我们都可以视为编辑,例如在邮箱中写信,在浏览器中输入目标URL,在IM中聊天,修改一个文件的文件名,在Excel写统计报表,在Google中搜索等等。

随着科技的进步,以键盘、鼠标控制的计算机时代很快就将一去不返,现在的手机、平板电脑可以语音和手势控制机器的运作,或许,不久的将来还可以用眼神与机器交流呢。但这些新技术的背后,总有以键盘为生的人,譬如程序员。而追求效率的成员又势必一套他自己的工具集。现在可选的编辑器实在太多了,尤其是一些集成开发环境占据了大量的市场份额,Vi似乎象征着过去和古老,象征着已经逝去的一个时代。然而,毕竟有部分人不这么认为,这些人或许认为Vi永不过时。

关于Vi有很多传说。其中最为著名的是

Vi是编辑器之神,Emacs是神的编辑器

Vi和Emacs之间的争论和笑话都很多。好比以下几幅漫画:

Editor learning curves

Emacs我没用过,但Vi却是我的好伙伴,用CSDN一位Vim用户的话来说叫剑不离手。Vim(Vi Improved)是Vi的一个延伸版本,最早由Bram Moolenaar在1991年发布。Vim在Vi的基础上增加了许多便捷易用的功能,是如今最流行的编辑器之一。下文中,我将对Vi和Vim不加区分,统称Vim。

那么,Vim究竟能做什么呢?Vim的唯一职责就是编辑,并且把编辑这件事做到极致,深切合符Douglas McIlroy总结的UNIX哲学:一个程序只做一件事,并做好。

在编辑(特别是编程)的时候,如果经常出现有以下需求

  1. 跳到文本开始、结束处;文本翻页。
  2. 转换字符串的大小写。
  3. 格式化代码,例如从其他地方复制代码到文本,缩进很混乱。
  4. 处理多列的代码段,例如在每行开始处添加一个注释符号。
  5. 删除一段文本。
  6. 反复进行类似的操作。
  7. 从不连续的文本段复制内容到另一个地方。
  8. 在不同的平台工作,如在Linux, Windows, MacOS上处理文本。
  9. 处理多种程序语言的代码,例如.cpp, .php, .java, .js, .python, .html等等,不同文本有各自的集成开发环境,每个集成开发环境又有各自定义的不同快键方式(也许同一个集成环境在不同平台的实现还有细微差别)。

通常而言,对于以上需求的处理方式可以是:

  1. 用键盘的Home/End/上下左右键处理,或用鼠标。但手必须离开键盘主要输入区。
  2. 用编辑器的搜索/替换功能。视角要离开目标文本,手可能要离开键盘主要输入区。
  3. 格式化代码,可以手工hack,一行一行的处理。
  4. 如果目标语言不支持多行注释,如某些程序配置文件的注释只用#行注释,基本就要移动到每行行首手工加注释符。
  5. 用Shirt+上下左右键选择文本,或用鼠标选择目标,用Delete/Backspace键删除。

用Vim处理以上需求,最大的一个优势是手不用离开键盘主要输入区,视线不用离开目标文本

  1. gg跳转到文本开始处,G跳转到文本结束处,h/j/k/l控制上下左右移动,Ctrl-f/Ctrl-b控制翻页。
  2. 单个字符转换大小写用Shirt~即可。多个字符转换大小写,用v进入Vritual模式,用H/J/K/L选中文本,用Shirt+~转换大小写。
  3. gg=G格式化整个文本。
  4. Ctrl+v(Windows下的gvim用Ctrl+q)进行列选中,i进入编辑模式,输入注释符即可。
  5. vCtrl+v进入列编辑,H/J/K/L选中文本,d删除。
  6. 使用Vim的宏录制操作。
  7. 使用Vim的多重剪切板。

以上只是一些很小的需求,以及可能不常见的情况,但效率都是由无数微不足道的小事构成。哪怕是视线的移动浪费了0.1秒的时间,一天、一个月、一年、十年积攒下来也蔚为可观。而Vim可以使我们的注意力集中在编辑上,让我们的思维如流水般从大脑倾泻到文本中。

《Web表单设计》的前言信誓旦旦的说:“表单牵动你和我。表单无处不在,绝大多数人每天都至少填写一个表单...我们的生活离不开表单。”作为vim用户,我们可以将其修正为“Vim牵动你和我。Vim无处不在!”

Vim无处不在。在Linux环境中,Vim无处不在,Linux环境外,Vim也无处不在。

初次使用vim

在Linux终端下,用vim打开文件:

vim my.cpp

进入vim界面后,输入i进入编辑模式(i是个命令,并不会直接在屏幕上显示),然后可以输入任意的文字,如果想要保存文档,按如下顺序输入:

  1. Esc键,使vim从编辑模式返回普通模式。
  2. 输入:w并回车,让vim保存文档。
  3. 上一步完成后,vim将停留在普通模式,此时输入a让vim进入编辑模式。

如果要退出vim,按Esc,输入:wq回车,即可退出。

以上是Vim的最简单使用,涉及到vim的一些基础知识,如普通模式、编辑模式、命令等。更详细的Vim入门笔记,参考Vim入门

其他

Linux发行版中,Vi/Vim通常是默认编辑器。Linux中,可以通过配置~/.inputrc从而使所有支持readline库的程序都使用Vim的输入模式。如果Linux发行版的Vim版本过低,可以从www.vim.org中下载最新版:

$ ./configure --prefix=$HOME/tools/ --enable-multibyte --with-features=huge
$ make && make install

参考

最好的帮助是使用Vim的手册,即h:帮助。入门最好的手册是Bram Moolenaar写的《Vim用户手册》,很容易下载到中文版的PDF。

分享

0

评论

comments powered by Disqus