一起来说 Vim 语

作为一款古老而具有持久生命力的编辑器,Vim 自有它的强大之处。很多人觉得 Vim 的学习曲线太陡峭了,为了能够把 Vim 用得风生水起,不得不记忆大量的命令。如果你是 Vim 新手,刚入门就开始面对着浩如烟海的命令逐条学习,我相信你一定会逐渐失去对它的兴趣。其实,Vim 以一种近乎自然语言的方式帮助你完成文本的编辑工作。只需要熟悉几条简单的语法,你就会坐在旋转座椅上前后打转,感慨美妙的生活又回来了。

我们假设你已经了解了 Vim 的几种常用的工作模式(正常模式、插入模式、命令模式等),如果你还不了解,请先阅读 这里。现在就让我们一起来学习一下 Vim 语吧。

一起来说 Vim 语

 

动词

动词代表了我们打算对文本进行什么样的操作。例如:

  • d 表示删除(delete)
  • r 表示替换(replace)
  • c 表示修改(change)
  • y 表示复制(yank)
  • v 表示选取(visual select)

 

名词

名词代表了我们即将处理的文本。Vim 中有一个专门的术语叫做文本对象(text object),下面是一些文本对象的示例:

  • w 表示一个单词(word)
  • s 表示一个句子(sentence)
  • p 表示一个段落(paragraph)
  • t 表示一个 HTML 标签(tag)
  • 引号或者各种括号所包含的文本称作一个文本块。

 

介词

介词界定了待编辑文本的范围或者位置。例如:

  • i 表示“在...之内”(inside)
  • a 表示“环绕...”(around)
  • t 表示“到...位置前”(to)
  • f 表示“到...位置上”(forward)

下面是几个有关范围的示意图,你们感受一下:

一起来说 Vim 语
Prepositions

 

组词为句

有了这些基本的语言元素,我们就可以着手构造一些简单的命令了。文本编辑命令的基本语法如下:

  1. <span class="pun">动词</span><span class="pun">介词</span><span class="pun">名词</span>

下面是一些例子(如果熟悉了上面的概念,你将会看到这些例子非常容易理解),请亲自在 Vim 中试验一番。

  1. <span class="com">#</span><span class="pun">删除一个段落:</span><span class="kwd">delete</span><span class="pln"> inside paragraph</span>
  2. <span class="pln">dip</span>
  3. <span class="com">#</span><span class="pun">选取一个句子:</span><span class="pln"> visual select inside sentence</span>
  4. <span class="pln">vis</span>
  5. <span class="com">#</span><span class="pun">修改一个单词:</span><span class="pln"> change inside word</span>
  6. <span class="pln">ciw</span>
  7. <span class="com">#</span><span class="pun">修改一个单词:</span><span class="pln"> change around word</span>
  8. <span class="pln">caw</span>
  9. <span class="com">#</span><span class="pun">删除文本直到字符“</span><span class="pln">x</span><span class="pun">”(不包括字符“</span><span class="pln">x</span><span class="pun">”):</span><span class="kwd">delete</span><span class="pln"> to x</span>
  10. <span class="pln">dtx</span>
  11. <span class="com">#</span><span class="pun">删除文本直到字符“</span><span class="pln">x</span><span class="pun">”(包括字符“</span><span class="pln">x</span><span class="pun">”):</span><span class="kwd">delete</span><span class="pln"> forward x</span>
  12. <span class="pln">dfx</span>

 

数词

数词指定了待编辑文本对象的数量,从这个角度而言,数词也可以看作是一种介词。引入数词之后,文本编辑命令的语法就升级成了下面这样:

  1. <span class="pun">动词</span><span class="pun">介词/数词</span><span class="pun">名词</span>

下面是几个例子:

  1. <span class="com">#</span><span class="pun">修改三个单词:</span><span class="pln">change three words</span>
  2. <span class="pln">c3w</span>
  3. <span class="com">#</span><span class="pun">删除两个单词:</span><span class="kwd">delete</span><span class="pln"> two words</span>
  4. <span class="pln">d2w</span>

另外,数词也可以修饰动词,表示将操作执行 n 次。于是,我们又有了下面的语法:

  1. <span class="pun">数词</span><span class="pun">动词</span><span class="pun">名词</span>

请看示例:

  1. <span class="com">#</span><span class="pun">两次删除单词(等价于删除两个单词):</span><span class="pln"> twice </span><span class="kwd">delete</span><span class="pln"> word</span>
  2. <span class="lit">2dw</span>
  3. <span class="com">#</span><span class="pun">三次删除字符(等价于删除三个字符):</span><span class="pln">three times </span><span class="kwd">delete</span><span class="pln"> character</span>
  4. <span class="lit">3x</span>

怎么样,是不是很容易理解?

更多Vim相关教程见以下内容

vim

相关推荐