在视觉选择上使用Ack.vim

问题描述 投票:2回答:3

目前我在~/.vimrc中有这个映射

noremap <Leader>a :Ack <cword><cr>

这使我能够在光标下搜索一个单词。

我想搜索当前的视觉选择,因为有时单词是不够的。

有没有办法可以向ack.vim发送视觉选择?

vim ack
3个回答
8
投票

您可以编写一个视觉模式地图,用于拉出突出显示的文本,然后将其逐字(正确转义)粘贴到vim命令行:

vnoremap <Leader>a y:Ack <C-r>=fnameescape(@")<CR><CR>

此解决方案使用<C-r>=技巧,允许您输入一种二级命令行,允许您输入任何vimscript表达式,然后对其进行求值,并将结果字符串化并粘贴到(原始,第一级) )光标所在的命令行。

这种方法的一个小缺点是它会占用你可能不想要的未命名寄存器。


1
投票

在撰写本文时,这是Ack的默认行为。

只需执行以下操作:

  1. 在正常模式下将光标移动到任何单词上(例如,点击Esc按钮进入正常模式,你知道......)
  2. 键入:Ack没有参数
  3. 它将搜索光标下的单词

通常我在搜索文件时选择文本(例如将光标放在word中并键入* repeateadly)类型:Ack以在项目的其他文件中查找该工作。


0
投票

虽然bgoldst的答案应该可以正常工作,你也可以考虑我的ack.vim的分支:https://github.com/AndrewRadev/ack.vim

它在可视模式下提供了一个有效的:Ack命令,以及我在README顶部总结的一些其他附加功能。

© www.soinside.com 2019 - 2024. All rights reserved.