使用ag在Vim中搜索光标下的单词

9
我希望将<Leader>a映射为在光标下搜索使用ag的单词。
我写了以下代码:
noremap <Leader>a  :Ag!<C-u><C-r>=Escape(expand('<cword>'))<CR>

function! Escape(stuff)
    return substitute(escape(a:stuff, '\/.*$^~[]'), "\n", '\\n', "g")
endfunction

很不幸,当我在单词foo上按下<Leader>a时,我得到了这个:

:foo
Ag! 消失了,尾随的 <CR> 没有执行。
我哪里出错了?
3个回答

9
你在你的映射中添加了<c-u>,这将删除:Ag!
对于<CR>问题,你的<CR>是为了<c-r>=表达式,你需要额外添加一个<CR>来启动命令。
你可能希望使用-Q进行字面搜索。

1
好的,谢谢。那么我将使用noremap <leader>a :Ag! -Q <C-r>=expand('<cword>')<CR>。为什么<CR>没有被考虑在内呢? - nowox
谢谢!对我来说,这个有效:noremap <leader>a :Ag! <C-r>=expand('<cword>')<CR><CR>(我删除了 -Q,因为它不是我想要的)。 - CIsForCookies

3
noremap <leader>a :Ag! "<cword>"<cr>

2

我在GitHub上找到了一个答案,由junegunn回答,以防有人需要

nnoremap <silent> <Leader>ag :Ag <C-R><C-W><CR>

Original link


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接