55

Если у меня есть этот текст в Vim, и мой курсор находится на первом символе:

www.foo.com

Я знаю, что я могу сделать:

  • cw чтобы изменить до первого периода, потому что word (строчная W) заканчивается на любой пунктуации ИЛИ пробел
  • cW изменить весь адрес, потому что Word (заглавная w) оканчивается только пробелом

Теперь, что если у меня есть это:

stupid_method_name

и хотите изменить это на это?

awesome_method_name

И cw и cW меняют все, но я просто хочу изменить фрагмент перед подчеркиванием.

Мой запасной метод - c/_ , что означает «изменяйся до тех пор, пока в поиске не будет достигнуто следующее подчеркивание», но для меня это также приводит к тому, что все подчеркивания выделяются в качестве поисковых терминов, что немного раздражает.

Есть ли такой спецификатор, как w или W , который не содержит подчеркивания?

3 ответа3

76

Вы можете сделать cf_ . f не будет выделять искомый символ.

Вы также можете сделать ct_ если не хотите включать _.

60

Поместите это в ваш .vimrc:

set iskeyword-=_

Тогда _ будет рассматриваться как граница слова (хотя и не граница WORD), а cw может использоваться только для изменения "удивительного", а cW - для изменения всего этого.

Увидеть:

:help iskeyword

а также

:help word

для получения дополнительной информации.

1

camelcasemotion - это очень удобный плагин vim, который позволяет вам перемещаться по словам при использовании символов подчеркивания или верблюда. Используя этот плагин, вы можете поставить запятую перед многими традиционными командами движения vim, которые позволят вам рассматривать слова в нижнем подчеркивании или записи верблюда как полные слова.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .