:grep/ :vimgrepBeide verwenden die Quickfix-Liste, um Standorte zu speichern. Wie Sie bemerkt haben, springt vim automatisch zum ersten Vorkommen (verwenden Sie !, um dieses Verhalten zu vermeiden). Verwenden Sie einfach :cnext, um zum nächsten Speicherort in der Quickfix-Liste zu gelangen.
Quickfix-Befehle
:cnext/ :cpreviousum den Quickfix in der Quickfix-Liste vorwärts und rückwärts zu navigieren
:cfirst/ :clastum zum Anfang und Ende der Quickfix-Liste zu springen
- Verwenden Sie
:copendiese Option, um das Quickfix-Fenster zu öffnen. Verwenden Sie <cr>diese Option, um zu einem Eintrag zu springen
- Verwenden Sie
:cclosediese Option, um das Quickfix-Fenster zu schließen
- Verwenden Sie
:ccdiese Option , um den aktuellen Fehler anzuzeigen.
:colder/ :cnewerum ältere / neuere Quickfix-Listen zu überspringen
Ich würde empfehlen, dass Sie Zuordnungen für :cnextund erstellen :cprevious. Ich persönlich benutze unimpaired.vim , das ]q& [qMappings für :cnextund bereitstellt :cprevious.
Wenn Sie möchten, dass das Quickfix-Fenster automatisch geöffnet wird, geben Sie Folgendes in Ihr Feld ein vimrc:
augroup autoquickfix
autocmd!
autocmd QuickFixCmdPost [^l]* cwindow
autocmd QuickFixCmdPost l* lwindow
augroup END
Zu diesem Thema gibt es eine Vimcasts- Episode : Durchsuchen Sie mehrere Dateien mit: vimgrep .
Projektweite Suche und Ersetzung
Wenn Sie :grep/ :vimgrepals Möglichkeit verwenden, eine projektweite Suche und Ersetzung durchzuführen, empfehle ich Ihnen, :cdo/ :cfdo(in Vim 7.4.980+) zu verwenden.
:grep 'foo'
:cfdo %s/foo/bar/g|w
Wenn Ihre Version von Vim nicht haben :cdo/ :cfdogeben Sie die folgenden Befehle in der vimrcDatei zur Verfügung zu stellen :Cdo/ :Cfdoalternative Befehle.
if !exists(':cdo')
command! -nargs=1 -complete=command Cdo try | sil cfirst |
\ while 1 | exec <q-args> | sil cn | endwhile |
\ catch /^Vim\%((\a\+)\)\=:E\%(553\|42\):/ |
\ endtry
command! -nargs=1 -complete=command Cfdo try | sil cfirst |
\ while 1 | exec <q-args> | sil cnf | endwhile |
\ catch /^Vim\%((\a\+)\)\=:E\%(553\|42\):/ |
\ endtry
endif
Verwenden eines alternativen Programms für :grep
Manchmal grepist es nicht gut genug für Ihre Suchanforderungen. Sie können Ihr :grepProgramm über die 'grepprg'Einstellung ändern (müssen möglicherweise auch geändert 'grepformat'werden). Persönlich verwende ich ripgrep, indem ich Folgendes zu meiner vimrcDatei hinzufüge, wie in rgder Manpage angegeben:
set grepprg=rg\ --vimgrep
set grepformat^=%f:%l:%c:%m
Hinweis: Möglicherweise möchten Sie ein -SFlag verwenden, z. B. die set grepprg=rg\ -S\ --vimgrepSuche nach "intelligenten Groß- und Kleinschreibung" (Suche ohne Berücksichtigung der Groß- und Kleinschreibung, wenn alle Kleinbuchstaben verwendet werden).
Jetzt :grepwird verwendet, um rgzu suchen. zB :grep foo -t js.
Es gibt einige alternative Grep-Programme, die Sie sich ansehen sollten: ack , ag , ripgrep und git grep( Fugitive.vim bietet :GgrepWrapper)
Weitere Hilfe finden Sie unter:
:h :grep
:h 'grepprg'
:h quickfix
:h :cnext
:h :copen
:h :ccl
:h :cc
:h :colder
:h :cdo
:h :cfdo