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