在键映射中使用 Vimgrep 中的多个模式
Use Multiple Patterns in Vimgrep in Key Mapping
在我的 vimrc 中,我有一个映射来查找其中包含 TODO 的所有行并将它们放入 quickfix window:
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>
但return 都没有任何结果。
vimgrep /TODO|FIXME/j %
在手动输入时在 : 提示符下工作。到目前为止,我的解决方法是:
function! FindFixme()
vimgrep /TODO\|FIXME/j %
cw
endfunction
nnoremap <leader>f :call FindFixme()<CR>
但我真的不明白为什么我不能让它作为一个地图命令工作。
谢谢。
alternation的正则表达式项是\|
,你确实需要转义一个|
这样它就不会结束映射命令.合起来,您需要 两个 个反斜杠:一个用于转义,一个保留用于项目:
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>
在我的 vimrc 中,我有一个映射来查找其中包含 TODO 的所有行并将它们放入 quickfix window:
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>
但return 都没有任何结果。
vimgrep /TODO|FIXME/j %
在手动输入时在 : 提示符下工作。到目前为止,我的解决方法是:
function! FindFixme()
vimgrep /TODO\|FIXME/j %
cw
endfunction
nnoremap <leader>f :call FindFixme()<CR>
但我真的不明白为什么我不能让它作为一个地图命令工作。
谢谢。
alternation的正则表达式项是\|
,你确实需要转义一个|
这样它就不会结束映射命令.合起来,您需要 两个 个反斜杠:一个用于转义,一个保留用于项目:
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>