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


60

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

www.foo.com

我知道我可以做到:

  • cw可以更改为第一个期间,因为word(小写字母w)以任何标点符号或空格结尾
  • cW更改整个地址,因为Word(大写w)仅在空白处结束

现在,如果我有这个:

stupid_method_name

并想要将其更改为此?

awesome_method_name

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

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

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


这有什么错:nohl
伊格纳西奥·巴斯克斯

确实希望在大多数情况下突出显示搜索词;而不是当我使用搜索作为运动时。(我也刚刚问过这个问题:superuser.com/questions/244042/…
Nathan Long

Answers:


82

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

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


15
您将f,t,F和T弄混f了。F向后移动到角色;t向前移动到角色之前;并向后T移到目标字符右侧的字符。因此,您的第二个例子应该是ct_
garyjohn

2
现在我的答案已更正。对不起,谢谢你。
doubleface '02

4
ct_正是我想要的。现在,这已成为我常规工作流程的一部分。谢谢!
弥敦道(Nathan Long)

1
这也是难以置信的可扩展性,因此功能强大。我猜您可以在f或t之后放置任何字符,它将转到下一个(或大写字母为prev)事件。谢谢。
Dom

2
Vim永远不会失败,只有一个人了解它的能力!
本杰明·R

64

将其放在您的.vimrc中:

set iskeyword-=_

然后_将被视为单词边界(虽然不是WORD边界),并且cw可以用来更改“ awesome”,而cW可以用来更改整个事物。

看到:

:help iskeyword

:help word

有关更多信息。


6
很高兴知道我可以定义自己的单词边界,但是经过一番思考,我认为最好的解决方案是ct_下面的双重说明,因为它简洁明了,是默认的vim行为。
弥敦道(Nathan Long)

这是我个人的最爱
Jay

2
我喜欢这个,但是它破坏了我在php中的语法颜色编码。
亚伦·索兰

如何取消设置或切换?
Behe

1

camelcasemotion是一个非常方便的vim插件,使用下划线或camelcase表示法时,您可以在单词之间移动。使用此插件,您可以在许多传统的vim运动命令前放置一个逗号,这将使您可以将下划线或驼峰表示法中的单词视为完整单词。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.