在Vim中更改最后一个单词

时间:2013-06-17 18:26:43

标签: vim

我正在使用Vim编辑C代码,我喜欢使用c<movement>快速更改文件的部分内容。特别是,我发现c2W之类的内容对于“更改两个以空格分隔的单词”非常有用。

但是有一个用例逃脱了我:当我的光标位于单词的最后一个字符时,命令cb,“更改单词”,不会删除单词I的最后一个字符想要编辑。这是有道理的,因为光标在技术上是在最后一个角色之前,但它不是我想要的。

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

开始于:

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”(虽然在这个例子中可以没问题,因为“字符串”无论如何以“s”结尾)。当然,我可以按bcw,但这是一个额外的关键,因此是不可接受的。

我是否只能忍受这种令人难以置信的困难?

3 个答案:

答案 0 :(得分:11)

您可以使用 i w (“内部字”)动作来选择光标当前所在的整个单词。因此结合 c (“更改”)命令,它会让你 c i w

这也适用于你的第一个例子:而不是先用 e 继续前进到单词的结尾,然后使用 c b 要更改后退单词,您还可以使用当前位置的 c i w

答案 1 :(得分:4)

尝试其中一个人: c a w c i 瓦特

这样,当光标位于单词的中间时,您可以替换单词。

答案 2 :(得分:3)

试试这个:

ciw - 改变内心的话语。