5

我正在使用 Vim 编辑 C 代码,我喜欢使用c<movement>它来快速更改文件的某些部分。c2W特别是,我发现“更改两个以空格分隔的单词”之 类的东西很有用。

但是有一个用例让我无法理解:当我的光标位于单词的最后一个字符时cb,“更改回一个单词”命令不会删除我要编辑的单词的最后一个字符。这是有道理的,因为从技术上讲,光标在最后一个字符之前,但这不是我想要的。

这是发生的事情,光标由 指示|

从...开始:

This is just a typ|ical series of words

我想将“典型”改为“不同”。我按e

This is just a typica|l series of words

然后cb

This is just a |l series of words

现在l剩下一个悬挂(小写的L,要清楚)!那不是我想要的。

更精明的你已经注意到,在这个例子中我可以简单地使用组合bcw,这会将我的光标放在单词的开头,然后改变整个单词。真的!但是,如果我想将“单词”更改为“字符串”怎么办?

从...开始:

This is just a typ|ical series of words

我想将“单词”更改为“字符串”。我按$

This is just a typical series of word|s

同样的问题!按下cb会留下一个悬挂的“s”(尽管在这个例子中这很好,因为“strings”无论如何都以“s”结尾)。当然,我可以按bcw,但这是一个额外的键,因此是不可接受的。

我只需要忍受这种难以置信的困难吗?

4

3 回答 3

11

您可以使用iw("inner word") 动作来选择光标当前所在的整个单词。因此结合c("change") 命令,您可以使用ciw.

这也适用于您的第一个示例:您也可以从当前位置开始使用,而不是首先向前移动到单词的末尾,e然后使用来更改向后的单词。cbciw

于 2013-06-17T18:30:19.080 回答
5

试试这些家伙之一:cawciw

这样您就可以在光标位于单词中间时替换单词。

于 2013-06-17T18:30:34.377 回答
3

尝试这个:

ciw- 改变内心的话。

于 2013-06-17T18:32:12.057 回答