2015-11-25 8 views
5

Nel mio vimrc ho avuto una mappatura per trovare tutti i linea con TODO in loro e metterli nella finestra quickfix:Utilizzare i modelli multipli in Vimgrep in Mapping Key

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

Ora voglio aggiungere il FIXME modello alternativo nello stesso modo. Così ho provato

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

e

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

ma né prodotto risultati.

vimgrep /TODO|FIXME/j % 

funziona al prompt: quando digitato manualmente. Finora il mio work-around è questa:

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

Ma io non capisco perché non riesco a farlo funzionare come un unico comando map.

Grazie.

risposta

8

La voce espressione regolare per alternanza è \|, e in effetti bisogno di sfuggire a una | in modo che non finisce il comando di mappatura. Nel loro insieme, è necessario due backslash: uno per fuggire e uno di rimanere per la voce:

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

ma io preferirei il <Bar> notazione, magari anche in combinazione con <Bslash>:

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

È può ulteriormente ridurre questo a:

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