Chciałbym wymienić mecze, kiedy trafię:
/example
aby zobaczyć, gdzie są wszystkie mecze naraz.
Chciałbym wymienić mecze, kiedy trafię:
/example
aby zobaczyć, gdzie są wszystkie mecze naraz.
Odpowiedzi:
" 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
:g//p
W dłuższej formie:
:global/regular-expression/print
Możesz pominąć wzorzec / wyrażenie regularne, a Vim ponownie użyje poprzedniego wyszukiwanego hasła.
Ciekawostki: grep narzędzie zostało nazwane po tej sekwencji poleceń.
:g//
- ponieważ p (rint) jest akcją domyślną, możesz ją również pominąć.
:g/
jest jeszcze krótsza!
--context 9
?
:%s/regular-expression//gn
It wyprodukuje coś takiego:X matches on Y lines
Możesz również wykonać:
g/pattern/#
który wydrukuje wybrany wzór i numer linii.
#
nie jest to wymagane. Domyślnie pokazuje numery linii
jeśli chcesz przejrzeć tę listę i szybko przeskakiwać między dopasowaniami, rozważ użycie
:vimgrep example %
lub
:grep example %
Spowoduje to zapełnienie „listy błędów” wszystkimi dopasowaniami, dzięki czemu będzie można :copen
wyświetlić je wszystkie w buforze quickfix, nacisnąć klawisz Enter w określonej linii, aby przejść do tego dopasowania, lub użyć poleceń takich jak :cn
i, :cp
aby przejść tam iz powrotem.
szczegółowe wyjaśnienie znajduje się w mojej odpowiedzi na podobne pytanie
E499: Empty file name for '%' or '#', only works with ":p:h"
MacVim 8.1
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
na liście lokalizacji .
Wpisz, :lopen
aby otworzyć listę lokalizacji w oknie quickfix, po którym jak zwykle można w pełni nawigować.
Użyj :lnext
/ :lprevious
to, aby przejrzeć listę (użyj tpope / unimpaired mapping, aby uzyskać najlepsze wrażenia)
Inną możliwością jest użycie poleceń dołączania 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 również wszystkie pliki zawarte w bieżącym pliku.
Ale fajną rzeczą w tym poleceniu jest to, że ekran wyników wyszukiwania pokazuje również liczbę dopasowań, oprócz numeru wiersza każdego dopasowania.
:help include-search
aby zobaczyć wiele wariantów.
Uwaga o
:g//p
Można to dalej zredukować do
:g//
ponieważ, jak powiedzieli inni, p (rint) jest akcją domyślną.
[I
z kontekstem, jak na grep --context 9
?
możesz otrzymać ładne quickfix
okno z dopasowaniami z twojego aktualnego wzorca wyszukiwania
:vim // %
:copen
bardzo przydatne, jeśli wcześniej utworzyłeś złożony wzorzec wyszukiwania przy użyciu tylko /pattern
Edycja : właśnie dowiedziałem się, że działa to również dla wszystkich otwartych buforów
:bufdo vimgrepadd // %
:copen
Użycie :set hlsearch
podświetli wszystkie dopasowania na żółto, umożliwiając łatwe skanowanie pliku w poszukiwaniu dopasowań. Może to jednak nie być to, czego chcesz, po wyszukaniu: g // p wyświetli listę dopasowań
:nohl
aby usunąć najciekawsze miejsca, gdy już ich nie potrzebujesz.
g/pattern
Jeśli masz :set number
, powyższe polecenie wyświetla również numery linii.
Jeśli nie :set number
, to
g/pattern/#
wyświetli numery linii.
Napisałem do tego kawałek kodu. W rzeczywistości unika problemów w vimgrep
. Działa nawet z nienazwanymi plikami. I jest łatwiejszy w użyciu.
function! Matches(pat)
let buffer=bufnr("") "current buffer number
let b:lines=[]
execute ":%g/" . a:pat . "/let b:lines+=[{'bufnr':" . 'buffer' . ", 'lnum':" . "line('.')" . ", 'text': escape(getline('.'),'\"')}]"
call setloclist(0, [], ' ', {'items': b:lines})
lopen
endfunction
Kiedy nazywasz to wzorem, otwiera okna lokalizacji ze wszystkimi dopasowaniami.
To może być rozkaz
command! -nargs=1 Mat call Matches(<f-args>)
Wszystko, co musisz zrobić, to wpisać :Mat pattern
Używam również następującego mapowania, aby uzyskać dopasowania do bieżącego wyboru wizualnego.
vnoremap Y "xy:call Matches(@x)<CR>
node_modules
? - - Jak wyrażenia regularne perla zmieniają domyślne działanie Vima? - - Oto jak zaprojektowałem moje wyszukiwanie plików .tex askubuntu.com/a/789769/25388 Byłoby miło nauczyć się od Ciebie, jak to ulepszyć. Nie jest to zbyt intuicyjne, więc często zapominałem o logice.