这是我在stackoverflow中找到的关于这个问题的链接.
但是,如果没有一个具体的例子,我仍然无法理解"改变内心词"和"改变词"之间的区别.
我在我的vim中测试了这两个命令,最后发现没有差异,请举个例子来帮助我理解,谢谢!
这是一个例子:
foo bar baz ^
在这种情况下键入cw和ciw会得到相同的结果(光标位于'bar'的'b').考虑一下:
foo bar baz ^
cw
会屈服
foo b baz ^
哪里ciw
会屈服
foo baz ^
所以无论光标位置如何,它都会改变整个单词.非常有用,我喜欢这个命令.非常有用的是caw
(或aw
)命令:
foo bar baz ^ -> caw foo baz ^
aw
还包含空间.使用v
(visual)命令尝试这些命令,看看它们都做了什么.另请阅读motion.txt
第6部分.
上面的答案解决了他们如何表现不同,我想分享他们为什么表现不同的想法.
首先,Vim的世界,w
并iw
有不同的语义,都可以被看作是target
(见下图):
w
in cw
指的是一个Motion
Object
而iw
在ciw
指的是TextObject
其次,在Vim的编辑操作(c/change
在你的情况下,和y/yank
,d/delete
,=/indenting
,>/shifting
等)和目标(w
和iw
你的情况),可以帮助你实现你想要用更少的按键做比较,使用的是什么visual selection
+ operator
.
TextObject定义目标范围(开始和结束位置).
Motion主要用于移动光标,因此它只定义最终目标位置(要移动的目标).
一些好的材料:
:h motion.txt
第4部分,5
来自atom-vim-mode-plus的 AdvancedTopicTutorial