Jak wyszukać zaznaczony tekst w Vimie?


61

Wiem, że mogę użyć /wyrażenia regularnego, aby wyszukać coś. I mogę użyć ?do wyszukiwania wstecz. I mogę użyć ni Npowtórzyć wyszukiwanie do przodu i do tyłu.

Istnieją również dwa ładne skróty: *lub #będą wyszukiwać słowo pod kursorem (do przodu / do tyłu). To bardzo przydatne! (są też g*i g#warianty)

Ale ... Po wybraniu tekstu za pomocą trybu wizualnego ( v), jak mogę poprosić Vima o wyszukanie dokładnie tego tekstu? Szybkie spojrzenie na :helpnie ... huh ... nie pomogło mi.



Dzięki za wskazówki z *i #! Byłoby miło, jeśli pytanie będzie również wyjaśnić, co g*i g#zrobi;)
winklerrr

Odpowiedzi:


22

Poniższa sekwencja zrobi to, co chcesz, biorąc pod uwagę już zaznaczony blok tekstu:

  • y( "domyślnie przeciągnij zaznaczony tekst do rejestru)
  • / (wejdź w tryb wyszukiwania)
  • ( \ V) (opcjonalnie, wprowadź tryb „bez magii” *)
  • Ctrl+ r "(wstaw tekst z "rejestru)
  • Enter (Angażować!)

(*) Tryb „bardzo bez magii” interpretuje następujący tekst jako zwykły tekst zamiast jako wyrażenie regularne. jednak pamiętać, że \i /nadal są szczególne i będą musiały być obsługiwane w inny sposób. Jeśli tekst nie zawiera żadnych znaków uznanych za specjalne, możesz pominąć ten krok.

Źródło: Vim Tips Wiki


1
Dziękuję Ci! Jest to o wiele bardziej zrozumiałe niż „jak to zrobić” na vim.wikia stronie
winklerrr

64

Najpierw możesz podciągnąć podświetlony tekst. Następnie

  • /

  • Ctrlr

  • "

Co wklei to, co szarpałeś po /.


7
Fajny pomysł ... poza tym, że wklejony tekst będzie interpretowany jako wyrażenie regularne, co nie jest pożądane. :-(
Denilson Sá Maia

4
Jeśli jest to dla ciebie prawie wystarczające, możesz /\V<C-r>"zamiast tego zrobić . Przygotowując się \Vdo zapytania, mówisz vimowi, żeby używał „bardzo bez magii”. Odwrotne ukośniki mogą nadal powodować problemy. Zobacz:help \V
idbrii,

3
Pomocne może być wyjaśnienie, w Ctrl+Rjaki sposób uzyskujesz dostęp do rejestru i *jest to po prostu rejestr schowka systemowego. Na przykład możesz także: yawszarpnąć słowo do rejestru "(rejestr domyślny), a następnie /<C-r>"wyszukać ten ciąg.
Ben Davis,

5
@ DenilsonSá - Możesz użyć tego rozwiązania, ale zamiast /przeprowadzać wyszukiwanie, użyj ?zamiast tego, ponieważ wyszukiwania wsteczne domyślnie usuwają ukośniki. Następnie możesz nacisnąć, Naby kontynuować wyszukiwanie w kierunku do przodu.
Brad Parks

7

Nigdy nie czułem potrzeby takiej funkcji, ale biorąc pod uwagę, że możesz znaleźć taką potrzebę w Vimie, myślę, że powinno to pomóc:

Wyszukaj wizualnie zaznaczony tekst

Nie przetestowałem tego, ale patrząc na kod, wydaje się, że jest dokładnie tym, czego szukasz.


4

Metodę tworzenia tego zachowania można znaleźć tutaj na wiki wiki .


Fajnie, okazało się, że wersja, która wymyka się ukośnikom, jest pomocna. vnoremap // y/\V<C-r>=escape(@",'/\')<CR><CR>
wyrób

1

To rozwiązanie zapewnia wizualnie wybrany kontekst wyszukiwania vim, nawet w przypadku znaków wielowierszowych i znaków ucieczki.

Dodaj następujący kod do siebie .vimrci przeszukuj wizualnie wybraną treść według //. Możesz również globalnie zastąpić wybraną treść przez /s. Lub Lokalnie zamień //najpierw wybrany kontekst , a następnie wizualnie wybierz region i :'<,'>s//{new_text}.

set incsearch
set hlsearch
set ignorecase
function GetVisualSelection()
  let raw_search = @"
  let @/=substitute(escape(raw_search, '\/.*$^~[]'), "\n", '\\n', "g")
endfunction
xnoremap // ""y:call GetVisualSelection()<bar>:set hls<cr>
if has('nvim')
  set inccommand=nosplit
  xnoremap /s ""y:call GetVisualSelection()<cr><bar>:%s/
else
  xnoremap /s ""y:call GetVisualSelection()<cr><bar>:%s//
endif

Powyższa konfiguracja dotyczy tylko wyszukiwania. Dla całej mojej konfiguracji vima, odwiedź .vimrc


0

W moich konfiguracjach na dwóch osobnych komputerach, jeśli zaznaczę tekst, a następnie kliknę /go, automatycznie wyszuka wybrany tekst.


To nie jest domyślne zachowanie. Tutaj, kiedy naciskam / (w trybie wizualnym), pokazuje tylko pusty monit o wyrażenie regularne, czekając, aż coś wpisam.
Denilson Sá Maia,

Dziwne, ponieważ nigdy nie zrobiłem nic, aby to umożliwić.
Nathan Fellman,

3
Wiele dystrybucji dostarcza niestandardową konfigurację vim jako domyślną (prawdopodobnie dlatego, że standardowa konfiguracja vim wyłącza wiele przydatnych funkcji, głównie dla kompatybilności z vi).
sleske
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.