《友情推荐,欢迎大家关注》

Vim 动作 (vim motion) 是指移动光标的命令。

如经常使用的 hjkl/? 也是动作命令,如 2?the 可以将光标移动到倒数第二个 “the” 出现的位置;此外,w 表示移动至下一个单词的首部,b 表示移动至当前单词的首部4j` 表示下移四行,这些都是 Vim 动作命令

一个 Vim 动作可通过动作前和动作后的两个位置标识出一个文本区域,而标识出来的文本区域会用于执行Vim操作 (Vim operation)。

面向字符的 Vim 动作可以是闭区间的,也可以是开区间的。闭区间 Vim 动作的开始和结束位置包含在操作范围里;开区间动作中,靠近缓冲区尾端的最后一个字符被包含在内。例如,Vim字符查找与光标快速移动提到的命令 t

上述提到的开闭区间,在 Vim 中有一个专门的概念,即:exclusiveinclusive

Inclusive motion 意味着会在由该动作标识的开始位置和结束位置所对应的文本内容上执行Vim操作。
Exclusive motion 意味着会在由该动作标识的开始位置和结束位置所对应的文本内容上(但不包含结束位置的文本)执行Vim操作。

例如,w 就是一个 exclusive motion,而 e 是一个 exclusive motion 。假设在Vim的普通模式下,Vim光标所在位置为 hello world 的开头处,若使用 dw 命令,则会删除 hello 单词以及后面的空格而只剩下 world;而如果使用 de 命令,则只会删除 hello 这个单词,后面的空格和 world 均会被保留。

vim-inclusive

下面的Vim视频教程动图展示了使用 dwde 执行 d 操作的效果。

vim-motion

其实,Vim基于单词移动及Vim单词、字串概念一文中提到的单词和字串的概念,其本质也是 Vim 的 inclusive motion 和 exclusive motion。

扩展阅读:Vim文本周边around、内部inside命令

《女程序员说》

原创不易,希望能给小女子的公众号加个关注~