做为一款古老而具备持久生命力的编辑器,Vim 自有它的强大之处。不少人以为 Vim 的学习曲线太陡峭了,为了可以把 Vim 用得风生水起,不得不记忆大量的命令。若是你是 Vim 新手,刚入门就开始面对着浩如烟海的命令逐条学习,我相信你必定会逐渐失去对它的兴趣。其实,Vim 以一种近乎天然语言的方式帮助你完成文本的编辑工做。只须要熟悉几条简单的语法,你就会坐在旋转座椅上先后打转,感慨美妙的生活又回来了。html
咱们假设你已经了解了 Vim 的几种经常使用的工做模式(正常模式、插入模式、命令模式等),若是你还不了解,请先阅读这里。如今就让咱们一块儿来学习一下 Vim 语吧。vim
动词表明了咱们打算对文本进行什么样的操做。例如:编辑器
d
表示删除(delete)ide
r
表示替换(replace)学习
c
表示修改(change)spa
y
表示复制(yank).net
v
表示选取(visual select)code
名词表明了咱们即将处理的文本。Vim 中有一个专门的术语叫作文本对象(text object),下面是一些文本对象的示例:htm
w
表示一个单词(word)对象
s
表示一个句子(sentence)
p
表示一个段落(paragraph)
t
表示一个 HTML 标签(tag)
引号或者各类括号所包含的文本称做一个文本块。
介词界定了待编辑文本的范围或者位置。例如:
i
表示“在...以内”(inside)
a
表示“环绕...”(around)
t
表示“到...位置前”(to)
f
表示“到...位置上”(forward)
下面是几个有关范围的示意图,大家感觉一下:
有了这些基本的语言元素,咱们就能够着手构造一些简单的命令了。文本编辑命令的基本语法以下:
动词 介词 名词
下面是一些例子(若是熟悉了上面的概念,你将会看到这些例子很是容易理解),请亲自在 Vim 中试验一番。
# 删除一个段落: delete inside paragraph dip # 选取一个句子: visual select inside sentence vis # 修改一个单词: change inside word ciw # 修改一个单词: change around word caw # 删除文本直到字符“x”(不包括字符“x”): delete to x dtx # 删除文本直到字符“x”(包括字符“x”): delete forward x dfx
数词指定了待编辑文本对象的数量,从这个角度而言,数词也能够看做是一种介词。引入数词以后,文本编辑命令的语法就升级成了下面这样:
动词 介词/数词 名词
下面是几个例子:
# 修改三个单词:change three words c3w # 删除两个单词:delete two words d2w
另外,数词也能够修饰动词,表示将操做执行 n 次。因而,咱们又有了下面的语法:
数词 动词 名词
请看示例:
# 两次删除单词(等价于删除两个单词): twice delete word 2dw # 三次删除字符(等价于删除三个字符):three times delete character 3x
怎么样,是否是很容易理解?