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