我正在(慢慢地)切换到Vim进行日常的Ruby on Rails编码(Linux Cinnamon 64位)。作为新手,我最近遇到了一些我不了解的事情。
我想使用:vimgrep和:grep命令从Vim搜索文件树中的模式。我能够做到:vimgrep命令没有问题:
:vimgrep /User/gj **/*.rb
但是,当我尝试对:grep使用同一命令(应使用系统grep)时,未返回任何结果:
:grep User **/*.rb
到处搜寻,我发现我的bash shell的globstar选项未启用:
$shopt globstar
globstar off
很容易打开:
$shopt -s globstar
我将以上行添加到我的.vimrc文件中,并确保在bash中永久启用了该选项。
使用新选项,我可以通过这种方式执行grep并获得所需的结果:
$grep User **/*.rb
不幸的是,Vim内部的:grep命令仍然不能和'**'一起使用。并执行:
!shopt globstar
从Vim内部,结果仍然关闭。
所以问题是:我可以将bash的globstar选项传播到Vim外部命令环境吗?否则,我可以通过某种方式在Vim中设置grepprg选项,以使我能够正确使用globstar吗?
在此先感谢任何将提供帮助的人
shell选项不会继承到派生的shell,但这是Vim在使用:!
命令时所做的:它启动一个新的shell。
您可以通过以下'shell'
选项在Vim中影响那些分叉的shell :
:set shell+=\ -O\ globstar
或者
:set shell=/bin/bash\ -O\ globstar
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句