Як я можу змінитись до наступного підкреслення в VIm?


60

Якщо у мене є цей текст in vim, і мій курсор знаходиться на першому символі:

www.foo.com

Я знаю, що можу:

  • cwзмінити до першого періоду, тому що word(нижній регістр w) закінчується в будь-якому розділовому знаку АБО пробіл
  • cWщоб змінити всю адресу, тому що Word(пропис w) закінчується лише на пробілі

А що робити, якщо я маю таке:

stupid_method_name

і хочете змінити це на це?

awesome_method_name

І те cwй cWінше змінити все, але я просто хочу змінити фрагмент перед підкресленням.

Моя резервна техніка - c/_означає "змінювати, поки ти не вкажеш наступного підкреслення в пошуку", але для мене це також спричиняє виділення всіх підкреслень як пошукових термінів, що трохи дратує.

Чи є специфікатор , як wі Wщо не включає в себе підкреслення?


Що не так :nohl?
Ігнасіо Васкес-Абрамс

Я робити хочу умова пошуку буде виділено великою частиною часу; просто не тоді, коли я використовую пошук як рух. (Я також щойно задав це питання: superuser.com/questions/244042/… )
Натан Лонг

Відповіді:


82

Можна зробити cf_. f не виділить шуканий символ.

Ви також можете зробити це, ct_якщо ви не хочете включати _.


15
Ви плутаєте f, t, F і T. fрухається вперед до персонажа; Fрухається назад до персонажа; tрухається вперед безпосередньо перед персонажем; і Tрухається назад до символу праворуч від цільового символу. Отже, ваш другий приклад повинен був бути ct_.
garyjohn

2
Тепер моя відповідь виправлена. Вибачте і дякую.
двосторонній

4
ct_це саме те, що я хотів. Тепер це стало частиною мого регулярного робочого процесу. Дякую!
Натан Лонг

1
Це також неймовірно розширюється і тому є потужним. Я здогадуюсь, що ви можете поставити будь-який символ після f або t, і він перейде до наступного (або попереднього для літери). Дякую.
Дом

2
Вім ніколи не дає збоїв, лише розуміння того, на що він здатний!
Бенджамін Р

64

Помістіть це у свій .vimrc:

set iskeyword-=_

Тоді _ розглядатиметься як межа слова (хоча це не межа WORD), а cw може використовуватися лише для зміни "awesome", а cW для зміни всієї речі.

Побачити:

:help iskeyword

і

:help word

для отримання додаткової інформації.


6
Чудово знати, що я можу визначити свої власні межі слів, але, подумавши, я вважаю, що найкращим рішенням є те, ct_як сказано внизу двосторонній, оскільки це стисло і поведінка vim за замовчуванням.
Натан Лонг

Це мій особистий фаворит
Джей,

2
Мені це подобається, але він порушує моє кодування синтаксису кольором у php.
Аарон Суррейн

Як я можу зняти чи переключити це?
Бехе

1

camelcasemotion - це досить зручний плагін Vim, який дозволяє пересуватися словами, використовуючи підкреслення або позначення верблюда. Використовуючи цей плагін, ви можете поставити кому перед багатьма традиційними командами руху vim, які дозволять вам ставитись до слів у підкресленнях або позначеннях верблюда як до повних слів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.