将光标移动到vim中的行尾(删除最后一个单词)

dek*_*rub 3 vim editor

我通常输入命令db在Vim中向后移除一个单词.在没有空格的行的末尾执行此操作会留下该单词的最后一个字符,因为光标开始从第二个最后一个字符中删除.

我可以按b其次de代替,但我觉得这混乱的,有时连续做很多时候它,导致unneccesary错误.我希望有一种方法可以到达终点并向后移除最后一个单词.

有没有办法做到这一点?

DJM*_*hem 7

你应该训练自己停止使用db并学习爱文本对象.即使您不在一行的末尾,也会出现此问题.

foo bar baz
      ^
Run Code Online (Sandbox Code Playgroud)

然后db会给

foo r bax
    ^
Run Code Online (Sandbox Code Playgroud)

而不是使用dbdedw至训练自己使用diwdaw.这可能需要一些人习惯,但在路上它将变得自然并且使用起来更方便.一旦文本对象变得自然,您就可以开始使用其他命令('c''y'等)甚至其他文本对象.(我甚至无法计算我使用了多少次dap或者ci()

有关这些内容的简短说明,请考虑diwas (d)elete (i)nside this (w)orddawas (d)elete (a)round this (w)ord(d)elete (a) (w)ord.有关更具体的示例:

foo bar baz
          ^
Run Code Online (Sandbox Code Playgroud)

打字diw

foo bar 
       ^
(note the leading space)
Run Code Online (Sandbox Code Playgroud)

foo bar baz
          ^
Run Code Online (Sandbox Code Playgroud)

打字daw

foo bar
      ^
Run Code Online (Sandbox Code Playgroud)

只要你的光标在同一个单词上,这些仍然可以做同样的事情.因此,如果我们将光标移回"a"或"b",您将获得完全相同的结果.本博客更深入地介绍了文本对象.