W vimie często wykonuję wyszukiwania, aby przeskoczyć do słowa lub frazy zamiast nawigować się tam h/j/k/l
. Potem uderzyłem, n
aby przeskoczyć między wystąpieniami.
Powiedz, że mam ten tekst:
Time flies like an arrow; fruit flies like a banana. - Groucho Marx
Piszę /an arrow
i wciskam Enter. To zdanie jest podświetlone i przeskakuję do niego n
.
Teraz chcę wizualnie zaznaczyć ten tekst , może go zmienić lub usunąć. (Tak, znam :s
polecenie zamiany).
Ponieważ mój kursor znajduje się na literze „a” na początku „strzałki”, mogę nacisnąć v
, a następnie nacisnąć e
kilka razy, aby podświetlić całą frazę. Ale mam wrażenie, że istnieje krótszy i bardziej semantyczny sposób. W końcu określiłem już tekst, który mnie interesuje.
Jak napisać polecenie „wizualnie wybierz bieżący wybór wyszukiwania?”
gn
działa dokładnie tak, jak zadano. Przesłanie go jako oddzielnej odpowiedzi podkreśla, że jest to kompletny zamiennikv//e
. Właśnie zredagowałem swoją odpowiedź, aby dodać dokumentację, czy to jest lepsze?Spróbuj tego:
Przechodzi w tryb wizualny, powtarza ostatnie wyszukiwanie i wybiera do końca.
źródło
gn
robi to również (bez zmiany, co ton
oznacza)Przekonałem się, że
v//e
samo w sobie jest niewystarczające, ponieważ po wyjściu z trybu wizualnego przeskakiwanie do następnego / poprzedniego wyniku wyszukiwania powoduje umieszczenie kursora na końcu wyniku, a nie na jego początku, jak zwykle można oczekiwać.Aby to naprawić, powinniśmy najpierw przejść do końca wyniku wyszukiwania (
//e
), a następnie wizualnie wybrać do jego początku (v??
):Twoje zdrowie.
źródło
nnoremap g? ??b<cr>v//e<cr>
(robi to samo, ale szuka do tyłu zamiast do przodu)Jest teraz wtyczka Vim-Search-Objects, która sprawia, że Vim traktuje dopasowania wyszukiwania jako zwykłe obiekty tekstowe, dzięki czemu możesz po prostu
va/
(wizualnie wybrać dopasowanie) po przeprowadzeniu wyszukiwania.źródło
„Głupszym” sposobem na to jest mapowanie klucza (w tym przypadku F5), jak poniżej:
Po
/an arrow
trafieniu F5.źródło
+1
. Pomiń to, a wybierze tylko szukaną część. Z drugiej stronynnoremap <F5> v//e<CR>
wydaje się , że działa dobrze.x
lubc
po zrobieniu,F5
ale bez+1
całego łańcucha wyszukiwania, łącznie ze znakiem pod kursorem, zostanie usunięty.