代码之家  ›  专栏  ›  技术社区  ›  daniel451

vim:删除字符后一行中的所有内容,而不首先移动光标。

vim
  •  1
  • daniel451  · 技术社区  · 6 年前

    假设以下行和光标位置:

    foo = some_func(1 +[ ]2)
                       ^^^
                  cursor position
    

    使用 di + ( 我可以很容易地去掉括号内的所有内容,或者删除要行首或行尾使用的所有内容 d^ d$ 但如果我想删除后面的所有内容,我该怎么做呢? = ?

    结果行应为:

    foo =[ ]
         ^^^
    cursor position
    

    dT + = 删除所有内容直到(向后)字符 = 但它还是会离开 2) 在这行中,结束于:

    foo =[2])
         ^^^
    cursor position
    

    当然,我可以跳到 = 先用后用 D元 删除到行尾的所有内容,但我更喜欢基于当前光标位置的简单快捷方式,而不需要移动光标(如果存在这样的快捷方式)。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Amadan    6 年前

    T = D (跳到后面) = ,删除到行尾)是最短的方法,我相信。

    可以 不先移动,但要复杂得多: :s/=\@<=.*//