vim :grep 使用 bash 'globstar' 选项

vim :grep 使用 bash 'globstar' 选项

我正在(慢慢地)切换到 Vim 进行日常 Ruby on Rails 编码(Linux Cinnamon 64 位)。作为一个新手,我最近遇到了一些我不明白的事情。

我想使用 :vimgrep 和 :grep 命令从 Vim 中搜索文件树中的模式。我可以使用 :vimgrep 命令毫无问题地执行此操作:

:vimgrep /User/gj **/*.rb

但是,当我尝试对 :grep 使用相同的命令(应该使用系统 grep)时,没有返回结果:

:grep User **/*.rb

谷歌搜索了一下,我发现环球星我的 bash shell 的选项未启用:

$shopt globstar
globstar        off

很容易开启:

$shopt -s globstar

我将上面的行添加到我的 .vimrc 文件中,并确保该选项在我的 bash 中永久启用。

使用新选项,我可以通过这种方式执行 grep 并获得所需的结果:

$grep User **/*.rb

不幸的是,Vim 内部的 :grep 命令仍然无法使用 '**'。并执行:

!shopt globstar

从 Vim 内部来看,结果仍然是离开

所以问题是:我可以传播我的 bash环球星我的 Vim 外部命令环境的选项?否则,我可以以某种方式设置我的格雷普格Vim 中的选项是否允许我正确使用 globstar?

预先感谢任何愿意提供帮助的人

答案1

shell 选项不会继承到分叉的 shell,但这就是 Vim 在您使用该:!命令时所做的事情:它启动一个新的 shell。

您可以通过以下选项影响 Vim 中的那些分叉 shell 'shell'

:set shell+=\ -O\ globstar

或者

:set shell=/bin/bash\ -O\ globstar

相关内容