目前我在~/.vimrc
中有这个映射
noremap <Leader>a :Ack <cword><cr>
这使我能够在光标下搜索一个单词。
我想搜索当前的视觉选择,因为有时单词是不够的。
有没有办法可以向ack.vim
发送视觉选择?
您可以编写一个视觉模式地图,用于拉出突出显示的文本,然后将其逐字(正确转义)粘贴到vim命令行:
vnoremap <Leader>a y:Ack <C-r>=fnameescape(@")<CR><CR>
此解决方案使用<C-r>=
技巧,允许您输入一种二级命令行,允许您输入任何vimscript表达式,然后对其进行求值,并将结果字符串化并粘贴到(原始,第一级) )光标所在的命令行。
这种方法的一个小缺点是它会占用你可能不想要的未命名寄存器。
在撰写本文时,这是Ack的默认行为。
只需执行以下操作:
Esc
按钮进入正常模式,你知道......):Ack
没有参数通常我在搜索文件时选择文本(例如将光标放在word中并键入* repeateadly)类型:Ack
以在项目的其他文件中查找该工作。
虽然bgoldst的答案应该可以正常工作,你也可以考虑我的ack.vim的分支:https://github.com/AndrewRadev/ack.vim
它在可视模式下提供了一个有效的:Ack
命令,以及我在README顶部总结的一些其他附加功能。