2009-02-04 5 views

Odpowiedz

3
" put in your ~/.vimrc file 
    " START search related configs and helps 
    " 
    " ignore case when searching 
    set ignorecase 

    " search as characters are entered, as you type in more characters, the search is refined 
    set incsearch 

    " highlight matches, in normal mode try typing * or even g* when cursor on string 
    set hlsearch 

    " yank those cheat commands, in normal mode type q: than p to paste in the opened cmdline 
    " how-to search for a string recursively 
    " :grep! "\<doLogErrorMsg\>" . -r 
    " 
    " how-to search recursively , omit log and git files 
    " :vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log` 
    " :vimgrep /srch/ `find . -type f -name '*.pm' -o -name '*.pl'` 
    " 
    " how-to search for the "srch" from the current dir recursively in the shell 
    " vim -c ':vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`' 
    " 
    " how-to highlight the after the search the searchable string 
    " in normmal mode press g* when the cursor is on a matched string 

    " how-to jump between the search matches - open the quick fix window by 
    " :copen 22 

    " how-to to close the quick fix window 
    " :ccl 

    " F5 will find the next occurrence after vimgrep 
    map <F5> :cp!<CR> 

    " F6 will find the previous occurrence after vimgrep 
    map <F6> :cn!<CR> 

    " F8 search for word under the cursor recursively , :copen , to close -> :ccl 
    nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR> 

    " omit a dir from all searches to perform globally 
    set wildignore+=**/node_modules/** 

    " use perl regexes - src: http://andrewradev.com/2011/05/08/vim-regexes/ 
    noremap//\v 
    " 
    " STOP search related configs and helps 
+1

bardzo lubię swoją r5- F8 pomysłów. Byłoby miło mieć tutaj kilka wizualizacji/wyników tych poleceń. Jak działa F8? Przeszukuje tylko bieżący katalog? - - Pominięcie dir jest niestandardowe - - dlaczego 'node_modules'? - - W jaki sposób wyrażeń regularnych perla zmienia domyślne funkcjonowanie Vima? - - Oto, w jaki sposób zaprojektowałem moje wyszukiwanie plików .tex https://askubuntu.com/a/789769/25388 Byłoby miło uczyć się od ciebie, jak to poprawić. Nie jest to tak intuicyjne, że często też zapomniałem o logice. –

+0

node_modules jest katalogiem zawierającym wiele kodu js z modułów npm, jeśli tworzysz front-endy ... to tylko przykład ... –

+1

wykonaj kopię zapasową .vimrc i dodaj te ustawienia, załaduj je: więc%, a następnie spróbuj uruchomić polecenie "pomaga" w poleceniach ... vim jest trudne - trzeba powtarzać te tysiące razy, ale gdy je opanujesz, będziesz się śmiać @ Każdy, kto wskaże ich nowe funkcje interfejsu użytkownika interfejsu użytkownika. .. –

10

Podświetli wszystkie mecze na żółto, co umożliwi łatwe zeskanowanie pliku w poszukiwaniu dopasowań. Że nie może być to, co chcesz, choć, po poszukiwaniach,: g // p daje wymienione mecze

+2

powinno być ': set hlsearch' nie ': hlsearch'. –

+0

Przydaje się również mapowanie ': nohl', aby wyczyścić najważniejsze momenty, gdy już ich nie potrzebujesz. – Kos

178
:g//p 

W swojej dłuższej formie:

:global/regular-expression/print 

można pominąć wzór/regex a Vim ponownie użyje poprzedniego wyszukiwanego hasła.

Ciekawostki: Narzędzie grep zostało nazwane po tej sekwencji poleceń.

+65

+1 za niesamowite trivia !!! – manifest

+14

': g //' ponieważ p (rint) jest domyślną akcją, możesz to również opuścić. – dekeguard

+3

': g /' jest jeszcze krótszy! – Sparhawk

8

Aby rozwinąć ten ... zamiast

/example 
:g//p 

można również pisać bezpośrednio

:g/example/p 

lub, jak p (rukuj) jest akcja domyślna: G (skroniowe) komenda, można ją skrócić do

A zamiast p (rint), inne akcje są możliwe, np. kasować). Zobacz: help: globalne

42

Można również zrobić:

g/pattern/#

że będzie wydrukować wzór, który chcesz i numer linii.

+2

+1 dla numerów linii. – iamnotmaynard

+0

Niezły.Ale jeśli masz już włączone numery linii, "#" nie jest wymagane. Domyślnie pokazuje numery linii –

38

jeśli chcesz wyglądać na tej liście i skakać szybko pomiędzy meczami, należy rozważyć użycie

:vimgrep example %

lub

:grep example %

To będzie zapełnić „Lista błędów” ze wszystkimi wyników, aby można było użyć ich :copen, aby wyświetlić je wszystkie w buforze quickfix, naciśnij klawisz Enter w konkretnej linii, aby przejść do tego dopasowania, lub użyj komend, takich jak :cn i :cp, aby przejść w tę iz powrotem.

do dokładnego wyjaśnienia, patrz my reply to a similar question

+3

+1 dla możliwości nawigowania w wynikach wyszukiwania! –

12

Inną możliwością jest użycie zawierać polecenia wyszukiwania plików.

[I 

Spowoduje to wyświetlenie wszystkich wystąpień słowa pod kursorem. Może to być jednak więcej, niż potrzebujesz, ponieważ przeszuka także wszystkie pliki zawarte w bieżącym pliku.

Ale miłą rzeczą w tym poleceniu jest to, że wyświetlacz wyników wyszukiwania pokazuje także liczbę dopasowań, oprócz numeru wiersza każdego meczu.

:help include-search 

aby zobaczyć wiele wariantów.

Wzmiankę o

:g//p 

ta może być zmniejszona do dalszego

:g// 

ponieważ, jak mówili inni, p (rukuj) jest domyślne działanie.

+0

Czy można uzyskać wynik z '[I' z kontekstem, jak na grep' --context 9'? –

23

Właśnie nauczyłem się nowego: Location List!
Wpisz :lvim foo %, aby wyszukać foo w bieżącym pliku i wprowadź wszystkie dopasowania zawierające foo do listy lokalizacji .
Wpisz :lopen, aby otworzyć listę lokalizacji w oknie quickfix, w pełni nawigacyjnym.
Zastosowanie :lnext/:lprevious się do po liście (stosowanie tpope/bez utraty wartości mapowania dla najlepszych doświadczeń)

+0

jest ustawienie, które ma domyślnie: lopen? – lkraav

+1

Dobra wskazówka! To doprowadziło mnie do tego odwzorowania, które automatycznie rozszerza słowo pod kursorem i nie lopen w jednym cyklu: nnoremap f: lvim/ = expand ("") /% : lopen

4
g/pattern 

Jeśli masz :set number, powyższe polecenie wyświetla numery linii, jak również.

Jeśli nie masz :set number, następnie

g/pattern/# 

wyświetla numery linii.

2

można uzyskać ładny quickfix okno z meczów tworzą aktualną wyszukiwarki wzór

:vim // % 
:copen 

bardzo przydatne, jeśli uprzednio wykonane złożony wzorzec wyszukiwania przy użyciu tylko /pattern

Edit: Właśnie się dowiedziałem, działa to również dla wszystkich otwartych buforów

:bufdo vimgrepadd // % 
:copen 
0

Ctrl-F, aby wyświetlić wszystkie wyniki wyszukiwania:

nmap <C-f> :vimgrep /<C-r>//g %<CR> \| !:copen <Enter>