如何更改直到 VIm 中的下一个下划线?

Nat*_*ong 74 vim

如果我在 vim 中有此文本,并且我的光标位于第一个字符处:

www.foo.com
Run Code Online (Sandbox Code Playgroud)

我知道我可以做到:

  • cw更改到第一个句点,因为 a word(小写 w)以任何标点符号或空格结尾
  • cW更改整个地址,因为 a Word(大写 w)仅以空格结尾

现在,如果我有这个怎么办:

stupid_method_name
Run Code Online (Sandbox Code Playgroud)

想改成这个?

awesome_method_name
Run Code Online (Sandbox Code Playgroud)

双方cwcW改变了整个事情,但我只是想下划线前更改片段。

我的后备技术是c/_,意思是“更改直到您在搜索中找到下一个下划线”,但对我来说,这也会导致所有下划线都突出显示为搜索词,这有点烦人。

是否有类似wW不包含下划线的说明符?

dou*_*ace 98

你可以做到cf_。f 不会突出显示搜索到的字符。

ct_如果您不想包含 _,您也可以这样做。

  • 助记符:`改变'直到`。即`ct_` 可以被记住为“change 'til underscore”。 (3认同)
  • 这也是令人难以置信的可扩展性,因此功能强大。我猜你可以在 f 或 t 之后放置任何字符,它会转到下一个(或大写的上一个)出现。谢谢。 (2认同)

fra*_*ous 73

把它放在你的 .vimrc 中:

set iskeyword-=_

然后 _ 将被视为单词边界(尽管不是 WORD 边界),并且 cw 可用于更改“awesome”,而 cW 可用于更改整个内容。

看:

:help iskeyword

:help word

了解更多信息。

  • 很高兴知道我可以定义自己的单词边界,但经过深思熟虑后,我认为最好的解决方案是 `ct_`,如下面的 doubleface 所说,因为它简洁且是默认的 vim 行为。 (9认同)
  • 我喜欢这个,但它破坏了我在 php 中的语法颜色编码。 (2认同)