2015-11-25 7 views
5

In meinem vimrc hatte ich eine Abbildung aller Linie mit ERLEDIGEN in ihnen zu finden und sie im quickfix Fenster setzen:Verwenden Sie mehrere Patterns in Vimgrep in Key Mapping

nnoremap <leader>f :vimgrep /TODO/j % \| :cw<CR> 

Ich möchte nun die alternative Muster FIXME hinzufügen auf die gleiche Weise. Also habe ich versucht

nnoremap <leader>f :vimgrep /TODO\|FIXME/j % \| :cw<CR> 

und

nnoremap <leader>f :vimgrep /TODO<bar>FIXME/j % \| :cw<CR> 

aber weder Rückkehr keine Ergebnisse.

vimgrep /TODO|FIXME/j % 

Arbeiten am: aufzufordern, wenn manuell eingegeben. Bisher meine Work-around ist dies:

function! FindFixme() 
    vimgrep /TODO\|FIXME/j % 
    cw 
endfunction 
nnoremap <leader>f :call FindFixme()<CR> 

Aber ich verstehe wirklich nicht, warum ich es nicht als eine einzige Karte Befehl zu arbeiten bekommen.

Danke.

Antwort

8

Der reguläre Ausdruck Punkt für Wechsel ist \|, und man in der Tat eine | entkommen müssen, damit sie nicht das Mapping Befehl endet. Zusammengenommen müssen Sie zwei Schrägstriche: eine für Flucht und eine für den Artikel bleiben:

nnoremap <leader>f :vimgrep /TODO\\|FIXME/j % \| :cw<CR> 

Aber ich würde die <Bar> Schreibweise bevorzugen, vielleicht sogar mit <Bslash> kombiniert:

nnoremap <leader>f :vimgrep /TODO<Bslash><Bar>FIXME/j % <Bar> :cw<CR> 

Sie kann dies weiter verkürzen zu:

nnoremap <leader>f :vimgrep /TODO<Bslash><Bar>FIXME/j %<Bar>cw<CR> 
Verwandte Themen