![](/img/trans.png)
[英]VIM: how to highlight selected words from another buffer's visual mode?
[英]How to use vimgrep to grep work that's high-lighted by vim?
我已经在vim内部安装了vimgrep插件,在正常模式下我可以输入:
:vimgrep mywords %
在“mywords”中搜索当前目录下的文档。
但我希望在正常模式下,当我使用gd突出显示一个单词时,或者在可视模式下使用'viw'来选择单词时,我会使用热键来进行vimgrep。 所以我添加了我的.vimrc并重新启动vim:
vnoremap <F8> :vimgrep expand('<cword>') %<CR>
好吧,它对我不起作用,当我把焦点放在一个单词并选择它时,我按F8,在vim中没有响应。 怎么实现呢?
谢谢!
Vimscript中是完全一样的键入的防爆命令评价:
命令行。 ex
中没有变量,因此无法指定它们。 以交互方式键入命令时,您可能使用<CR>=
来插入变量内容:
:vimgrep <C-R>=expand('<cword>')<CR> '%'<CR>
...但在脚本中,必须使用:execute
。 必须引用Ex命令的所有文字部分(单引号或双引号),然后与变量连接:
execute 'vimgrep' expand('<cword>') '%'
实际上,有一个内置命令用于将当前单词插入命令行:help c_CTRL-R_CTRL-W
:
:vimgrep <C-R><C-W>
你可以使用所有三种方法; 让我们使用最后一个:
vnoremap <F8> :<C-u>vimgrep <C-r><C-w> %<CR>
<Cu>
清除自动插入的'<,'>
范围。
使用视觉模式中的当前单词很奇怪。 您可能想要搜索当前选择。 没有expand()
。 最简单的是y
rk,如@ ryuichiro的回答所述:
vnoremap <F8> y:vimgrep /<C-r>"/ %<CR>
仍然缺少的是文本文本( :vimgrep
搜索正则表达式模式)和/
delimiter的转义:
vnoremap <F8> y:execute 'vimgrep /\V' . escape(@@, '/\') . '/ %'<CR>
现在,如果你还想避免默认寄存器的破坏,它会变得非常复杂。 看看我的GrepHere插件 ; 它提供了一个{Visual}<AM>
映射。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.