在视觉选择上使用 Ack.vim
Using Ack.vim on visual selection
目前我的 ~/.vimrc
中有此映射
noremap <Leader>a :Ack <cword><cr>
这使我能够搜索光标下的单词。
我想改为搜索当前视觉选择,因为有时字数不够。
有什么方法可以将视觉选择发送到 ack.vim
?
您可以编写一个视觉模式映射,将突出显示的文本提取出来,然后将其逐字粘贴(正确转义)到 vim 命令行:
vnoremap <Leader>a y:Ack <C-r>=fnameescape(@")<CR><CR>
此解决方案使用 <C-r>=
技巧,允许您输入一种二级命令行,它允许您输入任何 vim 脚本表达式,然后对其进行评估,并且结果被字符串化并粘贴到光标所在的(原始的,第一级的)命令行上。
这种方法的一个小缺点是它占用了您可能不想要的未命名寄存器。
虽然 bgoldst 的回答应该没问题,但您也可以考虑我对 ack.vim 的分叉:https://github.com/AndrewRadev/ack.vim
它带有可视模式下的工作 :Ack
命令,以及我在自述文件顶部总结的其他一些额外内容。
在撰写本文时,这是 Ack 的默认行为。
只需执行以下操作:
- 在普通模式中将光标移到任何单词上(例如,点击
Esc
按钮进入普通模式 ,你知道...)
- 键入
:Ack
无参数
- 它将搜索光标下的单词
通常我 select 在文件中搜索文本(例如将光标放在单词中并重复输入 *
)类型 :Ack
以在其他文件中查找该单词项目的。
目前我的 ~/.vimrc
noremap <Leader>a :Ack <cword><cr>
这使我能够搜索光标下的单词。
我想改为搜索当前视觉选择,因为有时字数不够。
有什么方法可以将视觉选择发送到 ack.vim
?
您可以编写一个视觉模式映射,将突出显示的文本提取出来,然后将其逐字粘贴(正确转义)到 vim 命令行:
vnoremap <Leader>a y:Ack <C-r>=fnameescape(@")<CR><CR>
此解决方案使用 <C-r>=
技巧,允许您输入一种二级命令行,它允许您输入任何 vim 脚本表达式,然后对其进行评估,并且结果被字符串化并粘贴到光标所在的(原始的,第一级的)命令行上。
这种方法的一个小缺点是它占用了您可能不想要的未命名寄存器。
虽然 bgoldst 的回答应该没问题,但您也可以考虑我对 ack.vim 的分叉:https://github.com/AndrewRadev/ack.vim
它带有可视模式下的工作 :Ack
命令,以及我在自述文件顶部总结的其他一些额外内容。
在撰写本文时,这是 Ack 的默认行为。
只需执行以下操作:
- 在普通模式中将光标移到任何单词上(例如,点击
Esc
按钮进入普通模式 ,你知道...) - 键入
:Ack
无参数 - 它将搜索光标下的单词
通常我 select 在文件中搜索文本(例如将光标放在单词中并重复输入 *
)类型 :Ack
以在其他文件中查找该单词项目的。