5.12. 技巧12——合并与征服——操作符 + 移动 = 动作
5.12 技巧12——合并与征服——操作符 + 移动 = 动作
Vim 的强大之处来源于操作符和移动能被结合起来的方式。在本技巧中我们将学习这是怎么工作的,然后考虑它的影响。
操作符 + 移动 = 动作
d{motion} 这个命令能作用于一个单一字符(dl),一个完整的单词(daw),或者是一个完整的段落(dap)。它的范围是由移动来定义的。c{motion},y{motion} 还有其它一些也是这样。总的来说,这些命令都被称为操作符,你可以查阅 h: operator ⓘ 来找到完整列表。表2 Vim 的操作命令总结了一些更常用的。
表2 Vim 的操作命令
g~,gu 和 gU 命令包括两次键击。在每个例子中,我们将 g 视为一个修改随后键击行为的前缀。进一步的讨论请见 初识操作符挂起模式。
操作符与移动的结合形成了一种语法。第一个规则很简单:一个动作由一个操作符跟着一个移动组成。学习新的移动和操作符,就像学习 Vim 的词汇。如果遵循这个简单的语法规则,随着词汇量的增长就能表达更多的想法。
假如我们已经知道了利用 daw 来删除一个单词,然后知道 gU 命令(见 :h gU ⓘ ),它也是一个操作符,所以我们可以调用 gUaw 来将当前的单词转为大写。如果我们将词汇扩展到包括作用于一个段落的 ap 移动,就会发现两个新的操作可供使用:dap 用来删除整段,或者 gUap 使整段大写。
Vim 的语法还有另外一个规则:当一个操作符命令被重复调用,它就作用于当前行,所以 dd 删除当前行,而>> 缩进当前行。 gU 命令是一个特例,可以通过运行 gUgU 或者简写 gUU 来使得它作用于当前行。