在视觉选择上使用Ack.vim
目前我的在视觉选择上使用Ack.vim,vim,ack,Vim,Ack,目前我的~/.vimrc noremap <Leader>a :Ack <cword><cr> noremap a:Ack 这使我能够在光标下搜索单词 我想搜索当前的视觉选择,因为有时文字是不够的 是否有一种方法可以将视觉选择发送到ack.vim?您可以编写一个视觉模式映射,将突出显示的文本拖动,然后将其逐字粘贴(正确转义)到vim命令行: vnoremap <Leader>a y:Ack <C-r>=fnameescape(@")
~/.vimrc
noremap <Leader>a :Ack <cword><cr>
noremap a:Ack
这使我能够在光标下搜索单词
我想搜索当前的视觉选择,因为有时文字是不够的
是否有一种方法可以将视觉选择发送到
ack.vim
?您可以编写一个视觉模式映射,将突出显示的文本拖动,然后将其逐字粘贴(正确转义)到vim命令行:
vnoremap <Leader>a y:Ack <C-r>=fnameescape(@")<CR><CR>
vnoremap a y:Ack=fnameescape(@)
这个解决方案使用了=
技巧,允许您输入一种第二级命令行,它允许您输入任何vimscript表达式,然后对其求值,结果被字符串化并粘贴到光标所在的(原始的第一级)命令行上
这个方法的一个小小缺点是它命令未命名的登记簿,你可能不想要。
< P>而BGOLDST的答案应该很好,你也可以考虑我的叉子。它在视觉模式下带有一个工作的
:Ack
命令,以及我在自述文件顶部总结的一些其他额外功能。在撰写本文时,这是Ack的默认行为
只需执行以下操作:
Esc
按钮进入正常模式,您知道…):带有无参数的Ack
通常我在搜索文件时选择文本(例如,将光标放在word中并重复键入
*
),键入:Ack
,以便在项目的其他文件中查找该单词。一个小调整:与其使用vnoremap
,不如使用xnoremap
。前者还可以在“选择”中映射击键“模式,通常由代码段插件使用。阅读:帮助mapmode-x
了解详细信息。@AndrewRadev,好主意,尽管所写的映射不适用于选择模式,因为前导的y
将覆盖选择并启动插入模式。我想可以通过为选择模式(smap)编写一个单独的映射,并使用gv
预先设置映射参数,从而在不造成任何损坏的情况下退出选择模式,然后进入(常规)视觉模式,我的意思是,vnoremap
也会在选择模式下映射击键,您可能不希望这样xnoremap
仅在视觉模式下映射它们。有点反直觉:)。啊哈,我刚刚阅读了vim帮助,你说得对!当我读到你的评论时,我以为你说“前者”是指“后者”,但那是我的错误。有趣的是,你基本上说出了我在回答中试图表达的观点。老实说,“后”和“前”是英语中最令人困惑的词。直到今天,我还不知道是谁编的。是的,准确地说,这种行为与视觉选择或搜索无关。只需将光标放在正常模式下的任何单词上,然后使用:Ack
,它就会搜索光标下的单词。@Pierre AdrienBuisson谢谢,我更新了答案并添加了您的贡献。2015年的fork和原始Ack.vim仍然没有视觉模式。