5

私のvimrcには、TODOを含むすべての行を見つけてクイックフィックスウィンドウに配置するためのマッピングがありました。

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

同じ方法で代替パターン FIXME を追加したいと思います。だから私は試しました

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

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

どちらも結果を返しません。

 vimgrep /TODO|FIXME/j %

手動で入力すると、: プロンプトで動作します。これまでのところ、私の回避策は次のとおりです。

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

しかし、なぜそれを単一のマップコマンドとして機能させることができないのか、私にはよくわかりません。

ありがとう。

4

1 に答える 1

9

代替の正規表現項目はであり、マッピング コマンドを終了しないように\|a をエスケープする必要があります。|まとめると、2 つのバックスラッシュが必要です。1つはエスケープ用、もう 1 つはアイテム用に残ります。

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

しかし、私は<Bar>表記法を好み<Bslash>ます。

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

これを次のようにさらに短縮できます。

nnoremap <leader>f :vimgrep /TODO<Bslash><Bar>FIXME/j %<Bar>cw<CR>
于 2015-11-25T19:12:26.340 に答える