在我的vimrc中,我有一个映射来查找它们中所有与TODO相关的行,并将它们放在quickfix窗口中:
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>但是我真的不明白为什么我不能把它作为一个map命令来工作。
谢谢。
发布于 2015-11-25 19:12:26
用于替换的正则表达式项是\|,您确实需要转义一个|,这样它就不会结束映射命令。综合起来,您需要两个反斜杠:一个用于逃跑,另一个用于该项:
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>https://stackoverflow.com/questions/33923948
复制相似问题