5.13. 技巧12——合并与征服——扩展 Vim 的组合能力

未匹配的标注

5.13 技巧12——合并与征服——扩展 Vim 的组合能力

使用 Vim 的默认的操作符和移动集可以完成很多动作。但还可以制作自定义的移动和操作符来进一步地扩展。让我们考虑一下可能的影响。

与现有移动一起工作的自定义操作符

Vim 附带的标准操作符集合相对地小,但是可以定义新的操作符。Tim Pope 的 commentary.vim 插件提供了一个好的例子。它添加了一个命令,用于在 Vim 支持的所有语言中注释代码行和取消注释代码行。

注释命令被 gc{motion} 触发,它为指定行切换注释。它是一个操作符命令,所以可以将它和所有普通的移动组合在一起。gcap 为当前段落切换注释,gcG 从当前行一直注释到文件末尾,gcc 注释当前行。

如果你对如何创建自定义的操作符感兴趣,请先阅读 :h :map-operator

与现有操作符一起工作的自定义移动

Vim 的移动标准集是相当全面的。但是还可以通过添加新的移动和文本对象进一步地增强它。

Kana Natsuno 的 testobj-entire 插件是一个好的例子。它向 Vim 添加了两个文本对象:ieae,它们作用于整个文件。

如果想使用 = 命令自动缩进整个文件,可以运行 gg=G(那就是说,gg 跳到文本的顶部,然后=G 将从光标位置到文件末尾的所有东西自动缩进)。但是如果安装了 testobject-entire 插件,可以简单地运行 =ae。当运行这个命令时,光标在哪里是无所谓的,它总是可以作用于整个文件。

注意,如果同时安装了 commentary 和 testobj-entire 插件,可以两个一起使用。运行 gcae 将会对整个文件切换注释。

如果你对如何创建自己自定义的移动感兴趣,请先阅读 :h omap-info

本节内容动画演示

practical-vim-5.13

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~