# 可组合性是 VIM 最强大的理念

By [IGAOZP](https://paragraph.com/@igaozp-2) · 2022-01-05

---

个人认为 **VIM** 中各种指令的可组合性，是 **VIM** 保持经久不衰的最深层次的源泉，是实现各种高效操作的基石。

使用过 **VIM** 的人都知道，可以使用简短的 **VIM** 快捷键完成一些相对复杂的操作。以个人经常使用的快捷键 `ciw` 为例，`ciw` 并不是一个完整独立的命令，而是由 _c_、_i_、_w_ 这 3 个命令组合起来，其中 _c_ 为 Change 即修改，_i_ 为 Inner 即内部，_w_ 为 Word 即单词，整个命令组合并直译过来，即为“修改内部的单词”，实际上的效果是修改当前光标选中的单词。正是因为这些原子命令的可组合性，允许这些命令可以有机地结合，实现 1+1 > 2 的效果。一旦这种可组合性的特性让使用者产生印象，便会给人一种这样的隐喻：「组合中的指令是可以替换的」，使用者可能会通过自己的想法，在可组合的规则内自由的尝试其他的组合。例如将 `ciw` 中的 _c_ 替换为 _d_，`diw` 这个指令即代表删除当前光标所在的单词，如果替换为 _y_，`yiw` 即代表复制当前光标所在的单词。**VIM** 在这样用户的自由地实践中，通常会诞生一些连作者都未曾设想的操作，这使得 **VIM** 在用户的使用「迭代」中迸发出惊人的生产力。

可组合性不仅仅是 **VIM** 中最强大的理念，同时也是软件领域最为强大的武器。

1.  编程语言只提供少量的关键词及对应的约束规则，使用有限的元件「组合」出可运行的程序。
    
2.  UNIX 中通过管道（pipe）将功能不同的程序组合成一个整体实现复杂的数据操作。
    
3.  互联网中使用不同的通信协议或者 API 将不同的软件和服务组合起来，实现更加复杂的互动结构。

---

*Originally published on [IGAOZP](https://paragraph.com/@igaozp-2/vim)*
