首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在键映射中使用Vimgrep中的多个模式

在键映射中使用Vimgrep中的多个模式
EN

Stack Overflow用户
提问于 2015-11-25 18:29:28
回答 1查看 1.1K关注 0票数 5

在我的vimrc中,我有一个映射来查找它们中所有与TODO相关的行,并将它们放在quickfix窗口中:

代码语言:javascript
复制
 nnoremap <leader>f :vimgrep /TODO/j % \| :cw<CR>

现在,我想以同样的方式添加替代模式FIXME。所以我试着

代码语言:javascript
复制
 nnoremap <leader>f :vimgrep /TODO\|FIXME/j % \| :cw<CR>

代码语言:javascript
复制
nnoremap <leader>f :vimgrep /TODO<bar>FIXME/j % \| :cw<CR>

但都不返回任何结果。

代码语言:javascript
复制
 vimgrep /TODO|FIXME/j %

手动键入时,在:提示符下工作。到目前为止我的工作是:

代码语言:javascript
复制
function! FindFixme()
    vimgrep /TODO\|FIXME/j %
    cw
endfunction
nnoremap <leader>f :call FindFixme()<CR>

但是我真的不明白为什么我不能把它作为一个map命令来工作。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-25 19:12:26

用于替换的正则表达式项是\|,您确实需要转义一个|,这样它就不会结束映射命令。综合起来,您需要两个反斜杠:一个用于逃跑,另一个用于该项:

代码语言:javascript
复制
nnoremap <leader>f :vimgrep /TODO\\|FIXME/j % \| :cw<CR>

但我更喜欢<Bar>表示法,甚至可能与<Bslash>相结合。

代码语言:javascript
复制
nnoremap <leader>f :vimgrep /TODO<Bslash><Bar>FIXME/j % <Bar> :cw<CR>

您可以将其进一步缩短为:

代码语言:javascript
复制
nnoremap <leader>f :vimgrep /TODO<Bslash><Bar>FIXME/j %<Bar>cw<CR>
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33923948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档