Jak zmienić do następnego podkreślenia w VIm?

60

Jeśli mam ten tekst w vimie, a mój kursor znajduje się na pierwszym znaku:

www.foo.com

Wiem, że mogę zrobić:

  • cwzmienić do pierwszego okresu, ponieważ word(małe litery w) kończą się dowolną interpunkcją LUB białą spacją
  • cWaby zmienić cały adres, ponieważ Word(wielkie litery w) kończą się tylko białymi znakami

Co jeśli mam to:

stupid_method_name

i chcesz to zmienić?

awesome_method_name

Zarówno cwi cWzmienić całą rzecz, ale po prostu chce zmienić fragment przed podkreślenia.

Moja technika rezerwowa polega na c/_„zmianie, dopóki nie trafisz następnego podkreślenia w wyszukiwaniu”, ale dla mnie powoduje to również, że wszystkie podkreślenia są wyróżniane jako wyszukiwane hasła, co jest nieco denerwujące.

Czy istnieje specifier jak wlub Wże nie zawiera podkreślenia?

Nathan Long
źródło
Co jest nie tak z :nohl?
Ignacio Vazquez-Abrams,
Chcę , aby wyszukiwane hasła były podświetlane przez większość czasu; po prostu nie, kiedy używam wyszukiwania jako ruchu. (Zadałem również to pytanie: superuser.com/questions/244042/... )
Nathan Long

Odpowiedzi:

82

Można to zrobić cf_. f nie podświetli szukanego znaku.

Możesz także zrobić, ct_jeśli nie chcesz dołączać _.

podwójna twarz
źródło
15
Mylisz f, t, F i T. fprzesuwa się do przodu do postaci; Fprzesuwa się do tyłu do postaci; tprzesuwa się do przodu tuż przed postacią; i Tprzesuwa się do tyłu na postać po prawej stronie postaci docelowej. Tak powinien być twój drugi przykład ct_.
garyjohn
2
Teraz moja odpowiedź jest poprawiona. Przepraszam i dziękuję
doubleface
4
ct_jest dokładnie tym, czego chciałem. To stało się teraz częścią mojego regularnego przepływu pracy. Dzięki!
Nathan Long
1
Jest to również niezwykle rozszerzalne, a zatem potężne. Domyślam się, że możesz umieścić dowolną postać po f lub t, a ona przejdzie do następnego (lub poprzedniego dla czapek) wystąpienia. Dzięki.
Dom,
2
Vim nigdy nie zawodzi, tylko rozumie, do czego jest zdolny!
Benjamin R
64

Umieść to w swoim .vimrc:

set iskeyword-=_

Wówczas _ będzie traktowane jako granica słów (choć nie granica WORD), a cw może być użyte do zmiany „niesamowitej”, a cW do zmiany całej rzeczy.

Widzieć:

:help iskeyword

i

:help word

po więcej informacji.

frabjous
źródło
6
Wspaniale jest wiedzieć, że mogę zdefiniować własne granice słów, ale po namyśle myślę, że najlepszym rozwiązaniem jest to, ct_co mówi podwójna strona poniżej, ponieważ jest zwięzłe i jest domyślnym zachowaniem vim.
Nathan Long
To mój osobisty faworyt
Jay
2
Podoba mi się ten, ale łamie kodowanie kolorami składni w php.
Aaron Surrain
Jak mogę to rozbroić lub przełączyć?
Behe
1

camelcasemotion to całkiem przydatna wtyczka vim, która pozwala poruszać się po słowach podczas korzystania z podkreślenia lub notacji camelcase. Za pomocą tej wtyczki możesz umieścić przecinek przed wieloma tradycyjnymi poleceniami ruchu vim, co pozwoli ci traktować słowa w notacji podkreślenia lub notacji wielbłąda jako pełne słowa.

Jdoherty
źródło