Şuna bastığımda maçları listelemek istiyorum:
/example
böylece tüm eşleşmelerin aynı anda nerede olduğunu görebilirim.
Şuna bastığımda maçları listelemek istiyorum:
/example
böylece tüm eşleşmelerin aynı anda nerede olduğunu görebilirim.
Yanıtlar:
" 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
Daha uzun biçiminde:
:global/regular-expression/print
Kalıp / regex'i dışarıda bırakabilirsiniz ve Vim önceki arama terimini yeniden kullanacaktır.
Diğer bilgiler: grep aracı bu komut dizisi almıştır.
:g//- p (rint) varsayılan eylem olduğundan, bunu da atlayabilirsiniz.
:g/daha da kısa!
--context 9?
:%s/regular-expression//gn It şu satırlarda bir şeyler üretecek:X matches on Y lines
Ayrıca şunları da yapabilirsiniz:
g/pattern/#
bu, istediğiniz deseni ve satır numarasını yazdıracaktır.
#gerekli değildir. Varsayılan olarak satır numaralarını gösterir
Bu listeye bakmak ve eşleşmeler arasında hızlıca atlamak istiyorsanız, kullanmayı düşünün
:vimgrep example %
veya
:grep example %
Bu, "hata listesini" tüm eşleşmelerle doldurur, böylece :copenhepsini hızlı düzeltme arabelleğinde listeleyebilir, o eşleşmeye atlamak için belirli bir satırda enter tuşuna basabilir veya ileri geri gitmek için :cnve gibi komutları kullanabilirsiniz :cp.
ayrıntılı bir açıklama için benzer bir soruya verdiğim cevaba bakın
E499: Empty file name for '%' or '#', only works with ":p:h", MacVim 8.1'de verir
: Sadece bir yenisini öğrendik Location List!
Tip :lvim foo %aramak için foogeçerli dosyasında bulunan ve gerekli tüm maçları girmek fooiçine konum listesinin .
Tip :lopenzamanki gibi tam gezilebilir QuickFix penceresinde, konum listesini açın.
Kullanım :lnext/ :lpreviousetmek üzere listede (kullanım tpope / zarar görmemiş en iyi deneyim için eşleştirmeleri)
Diğer bir olasılık, dosya içerme arama komutlarını kullanmaktır.
[I
Bu, imlecin altındaki kelimenin tüm geçtiği yerleri listeleyecektir. Yine de ihtiyacınız olandan daha fazlası olabilir, çünkü geçerli dosyada bulunan dosyaları da arayacaktır.
Ancak bu komutla ilgili güzel olan şey, arama sonucu ekranının her bir eşleşmenin satır numarasına ek olarak eşleşme sayısının da göstermesidir.
:help include-search
birçok varyantı görmek için.
Hakkında bir not
:g//p
Bu daha da azaltılabilir
:g//
çünkü, diğerlerinin de söylediği gibi, p (rint) varsayılan eylemdir.
[IGrep'teki gibi bağlamdan sonuç almak mümkün mü --context 9?
quickfixMevcut arama modelinizden eşleşmelerle güzel bir pencere elde edebilirsiniz
:vim // %
:copen
daha önce karmaşık bir arama modeli oluşturduysanız çok kullanışlıdır. /pattern
Düzenleme : bunun tüm açık arabellekler için de işe yaradığını öğrendim
:bufdo vimgrepadd // %
:copen
Kullanımı :set hlsearchtüm eşleşmeleri sarı renkte vurgular ve böylece eşleşmeler için dosyayı kolayca taramanıza olanak tanır. Yine de istediğiniz şey bu olmayabilir, aradıktan sonra: g // p size listelenen eşleşmeleri verecektir
:nohlArtık ihtiyacınız kalmadığında vurguları temizlemek için haritalamak da yararlıdır .
g/pattern
Varsa :set number, yukarıdaki komut satır numaralarını da görüntüler.
Eğer yapmadıysan :set numbero zaman
g/pattern/#
satır numaralarını gösterecektir.
Bunun için bir kod parçası yazdım. Aslında içindeki sorunları önler vimgrep. Adsız dosyalarla bile çalışır. Ve kullanımı daha kolay.
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
Bir kalıpla çağırdığınızda, tüm eşleşmeleri içeren konum pencerelerini açar.
Bu bir komut olabilir
command! -nargs=1 Mat call Matches(<f-args>)
Yani tek yapmanız gereken yazmak :Mat pattern
Mevcut görsel seçimin eşleşmelerini elde etmek için aşağıdaki eşleştirmeyi de kullanıyorum.
vnoremap Y "xy:call Matches(@x)<CR>
node_modules? - - Perl normal ifadeleri Vim'in varsayılan işlevini nasıl değiştirir? - - Aşağıdakiler .tex dosyalarına yönelik aramamı nasıl tasarladığımdır askubuntu.com/a/789769/25388 Bunu nasıl geliştireceğinizi sizden öğrenmek güzel olurdu. O kadar sezgisel değil, bu yüzden ben de sık sık mantığı unuttum.