【问题标题】:Change last word on line in Vim在 Vim 中在线更改最后一个单词
【发布时间】:2013-06-13 19:18:28
【问题描述】:

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

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

以下是发生的情况,光标由| 指示:

开始于:

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,但这是一个额外的键,因此是不可接受的。

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

【问题讨论】:

    标签: vim


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!我应该明白这一点......另外,我选择了你的答案,因为它最清晰,布局最清楚。另外两个答案也相当正确。
    • 为什么你比bcw 更喜欢这个,你在最初的问题中因为输入太多而拒绝了它?
    【解决方案2】:

    试试这些人之一:cawci w.

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

    【讨论】:

    • 感谢您提及a 选项。
    【解决方案3】:

    试试这个:

    ciw - 改变内心的话。

    【讨论】:

      猜你喜欢
      • 2011-05-31
      • 2013-03-27
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多