Ag.vim:使用光标下的单词作为搜索模式的* part *?

时间:2014-07-04 20:07:17

标签: search vim

使用Ag.vim插件,您可以通过调用:Ag而无需任何参数轻松搜索光标下的单词,但如何将光标下的单词包含在 part 中搜索模式?我正在尝试向我的vimrc添加一些内容来搜索Ruby文件中的方法定义。类似的东西:

autocmd FileType ruby noremap K :Ag! "\bdef <C-R><C-W>\b"<CR>

它无法识别<C-R><C-W>。另外,我已尝试将\b\<\>作为字边界。 Ag在Vim的上下文之外使用\b,但我知道在某些情况下它会将\<\>翻译为\b(虽然不确定这个上下文)。

2 个答案:

答案 0 :(得分:9)

我通常只使用一个技巧,只需在当前单词上按*然后使用:AgFromSearch,就可以指定具体路径,例如:AgFromSearch /any/path/

如果你真的想在搜索模式中使用单词,可以使用<cword>(当前单词)

 nmap  <silent> <D-f> :Ag "def <cword>" /any/path/<CR>   

答案 1 :(得分:2)

augroup Ruby

  " clear this augroup's autocmds
  autocmd!

  " use this version:
  autocmd FileType ruby nnoremap <buffer> K :<C-u>execute 'Ag! "\bdef ' . expand('<cword>') . '\b"'<CR>

  " or this one, ^R^W is obtained by pressing <C-v><C-r> then <C-v><C-w>:
  autocmd FileType ruby nnoremap <buffer> K :Ag! "\bdef ^R^W\b"<CR>

augroup END
  • 如上所述,使用augroupautocmd!作为清洁工~/.vimrc

  • nnoremap优于noremap,除非您确实想要正常,可视和操作员待处理模式的单一映射(实际上并不是义)。

  • <buffer>需要确保您的映射仅限于当前缓冲区。