Vim: Jak skutecznie szukać tekstu?

30

Ilekroć chcesz wyszukać tekst w vimie, wpisz tekst, /a następnie ciąg, którego szukasz.

Jednak jeśli ciąg jest długi i chcesz to zrobić wiele razy, czy istnieje sposób, aby to zrobić, abyś nie musiał pisać /andthisreallylongstringwięcej niż jeden raz?

Mroczny Templariusz
źródło
12
Polecam krótko przejrzeć Ściągawki Vima lub Porady Vima - możesz znaleźć wiele innych sposobów na lepsze wykorzystanie Vima .
RedGrittyBrick
Protip: istnieją edytory tekstu dla Linuksa, których użycie nie wymaga tygodni nauki.
BlueRaja - Danny Pflughoeft
4
@BlueRaja: nie jestem pewien, czy to dobre miejsce na wojnę redaktora. Również na wojnę z systemem operacyjnym, ponieważ istnieją również miłe i przyjazne dla użytkownika edytory tekstu dla systemu Windows lub Mac OS. Konieczność przestudiowania efektywnego edytora sprawi, że ostatecznie będziesz bardziej wydajny niż trzymanie się podstawowych funkcji.
Benoit,

Odpowiedzi:

61

Naciśnij „n” po zakończeniu wyszukiwania, a następnie powtórzy poprzednie działanie (wyszukiwanie).

lamwaiman1988
źródło
12
Ponadto Nprzejdzie do poprzedniego wyniku.
Jin
15
Również uderzenie strzałki w górę po uderzeniu /przywołuje ostatnie wyszukiwane hasło
bastibe
6
Pokaże q/także edytowalne okno z wszystkimi ostatnimi wyszukiwanymi terminami.
UncleZeiv,
7
Również naciśnięcie /i Enter powtórzy poprzednie wyszukiwanie. Wciśnięcie ?i Enter powtórzy poprzednie wyszukiwanie do tyłu.
Andy Lester,
3
/Ctrl-Fjest alternatywą dla q/tego może być łatwiejszy mnemonik (ctrl-f == find). Podobnie jak q, działa również w trybie poleceń.
idbrii 12.10.11
34

Jeśli szukany ciąg znajduje się pod kursorem, możesz wpisać, *aby wyszukać go do przodu lub #do tyłu.

Didier Trosset
źródło
19

Jak zwykle szukam, to coś takiego;

  1. Naciśnij '/'
  2. Wpisz szukany termin
  3. naciśnij enter
  4. Użyj „n” i „N”, aby nawigować do przodu i do tyłu w trakcie wyszukiwania.

Vim przechowuje historię twoich wyszukiwań, więc jeśli potrzebujesz poprzednich wyszukiwań, możesz nacisnąć '/' i użyć klawiszy GÓRA i DÓŁ lub <Ctrl-P> <Ctrl-N> do przeglądania historii wyszukiwania.

Możesz także użyć '?' zamiast „/”, aby wyszukiwać wstecz.

Lubię też używać:

set ignorecase smartcase

Teraz wyszukiwanie będzie rozróżniać małe i wielkie litery, jeśli w ciągach wyszukiwania będą znajdować się wielkie litery.

Valadas
źródło
15

Dwie dodatkowe wskazówki, które mogą zwiększyć efektywność wyszukiwania, to set hlsearchi set incsearch.

  • set hlsearch, cóż, podkreśla wyniki wyszukiwania. Pisz, :nohaby je wyłączyć, gdy już go nie potrzebujesz.

  • set incsearch włącza wyszukiwanie przyrostowe.

    Uzyskane z :help incsearch

    Podczas wpisywania polecenia wyszukiwania pokaż, gdzie pasuje wzór, który został wpisany do tej pory. Dopasowany ciąg jest podświetlony. Jeśli wzór jest nieprawidłowy lub nie został znaleziony, nic nie jest wyświetlane. Ekran będzie często aktualizowany, jest to przydatne tylko na szybkich terminalach.

    Bez incsearchtego wyniki zostaną wyświetlone dopiero po naciśnięciu <CR>słowa kluczowego wyszukiwania.

    Przykład:

    Chcesz wyszukać wildignore

    wprowadź opis zdjęcia tutaj

    Wpisujesz, /wilda pierwsze dopasowanie zostanie automatycznie podświetlone.

    wprowadź opis zdjęcia tutaj

    Następnie wpisz ii przejdzie do następnego prawidłowego dopasowania.

    wprowadź opis zdjęcia tutaj

Jin
źródło
13

Kolejna wskazówka, której jeszcze nie uwzględniono: Naciśnięcie znaków, qa następnie /, wyświetli listę poprzednich wyszukiwanych terminów. Możesz edytować je jak każdy inny wiersz w dokumencie, a następnie naciśnij klawisz Enter, aby ponownie użyć ich do nowego wyszukiwania.

Marcin
źródło
3
Szukałem tego. To ważna uwaga i bardzo na temat.
cincodenada,
8

Po naciśnięciu, /aby rozpocząć wyszukiwanie, możesz użyć strzałki w górę, aby przewinąć historię wyszukiwania.

Możesz wprowadzić wyrażenie regularne, aby uniknąć konieczności wpisywania całego wyszukiwanego terminu: and.*longstring

Graham Borland
źródło
7

Czy samo trafienie / brak argumentów nie działa dla Ciebie? We wszystkich naszych systemach powoduje to powtórzenie wyszukiwania, które zostało wykonane jako ostatnie.

Kyle Banerjee
źródło
6

Jest ładny wzór, który można zastosować do wyszukiwania szarpanego tekstu . Nie musisz nawet wpisywać samego słowa, jeśli nawigujesz do niego w inny sposób niż wyszukiwanie. Podsumowując, jeśli wpisujesz pierwszy znak słowa, którego chcesz wyszukać:

v
e
y
/
Ctrl-r
0
Enter

(następnie przejdź do następnego meczu z n lub N)

Jednak *(lub #) osiąga prawie to samo, co wszystkie te polecenia. Jedyną różnicą jest to, że możesz być elastyczny, określając ilość słowa, które podajesz (zamiast e, do końca słowa, możesz wybrać tyle, ile chcesz, np. 9l)

Benedykt
źródło
1
  • /string - Wyszukaj ciąg znaków do przodu
  • ?string - Wyszukaj ciąg znaków
  • n - Wyszukaj następną instancję ciągu
  • N - Wyszukaj poprzednie wystąpienie ciągu
AbdulFattah Popoola
źródło
1

Dużo czasu przy programowaniu będę szukał aVeryLongVariableNameInTheProgram.

W vimie możesz bardzo łatwo wciągnąć tekst do bufora / rejestru, a następnie wyszukać go:

  • Umieść kursor na pierwszym znaku słowa
  • "Bywprzeciągnąć tekst aVeryLongVariableNameInTheProgramdo bufora B (wybierz swój ulubiony, użyłem B)
  • /^RB (ukośnik, Ctrl-R, B), aby wkleić bufor B w wierszu wyszukiwania

Oczywiście możesz także ciągnąć do końca linii itp. Zamiast ciągnąć jedno słowo - akurat zdarza mi się używać powyższej sekwencji przez cały czas.

Dan7119
źródło
1

Dodatkowo możesz wkleić zawartość dowolnego rejestru do monitu wyszukiwania, naciskając Ctrl+, Ra następnie nazwę rejestru, np. / Ctrl+ R0 Enter.

tdammers
źródło
Myślę, że słowo.
dotancohen
0

Czy długi ciąg, w który wpisujesz nazwę zmiennej? Lub długi ciąg znaków w tekście? Następnie naciśnij, *aby wyszukać słowo / ciąg pod kursorem.

Andy Lester
źródło