当前位置:  开发笔记 > 开发工具 > 正文

在Vim中命令cw和ciw之间的区别是什么?

如何解决《在Vim中命令cw和ciw之间的区别是什么?》经验,为你挑选了2个好方法。

这是我在stackoverflow中找到的关于这个问题的链接.

但是,如果没有一个具体的例子,我仍然无法理解"改变内心词"和"改变词"之间的区别.

我在我的vim中测试了这两个命令,最后发现没有差异,请举个例子来帮助我理解,谢谢!



1> pschulz..:

这是一个例子:

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部分.



2> Xlee..:

上面的答案解决了他们如何表现不同,我想分享他们为什么表现不同的想法.

首先,Vim的世界,wiw有不同的语义,都可以被看作是target(见下图):

win cw指的是一个MotionObject

iwciw指的是TextObject

其次,在Vim的编辑操作(c/change在你的情况下,和y/yank,d/delete,=/indenting,>/shifting等)和目标(wiw你的情况),可以帮助你实现你想要用更少的按键做比较,使用的是什么visual selection+ operator.

TextObject定义目标范围(开始和结束位置).

Motion主要用于移动光标,因此它只定义最终目标位置(要移动的目标).

一些好的材料:

    :h motion.txt 第4部分,5

    来自atom-vim-mode-plus的 AdvancedTopicTutorial

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有