我正在(慢慢地)切换到 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