vim:bash 'globstar'オプションを使用したgrep

vim:bash 'globstar'オプションを使用したgrep

私は毎日Ruby on Railsコーディング(Linux Cinnamon 64ビット)のために(ゆっくりと)Vimに切り替えています。初心者として最近理解できない内容に触れました。

:vimgrep および :grep コマンドを使用して Vim のファイルツリーからパターンを検索したいと思います。 :vimgrep コマンドを使用すると、問題なくこれを行うことができます。

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

ただし、:grep(システムgrepを使用する必要があります)と同じコマンドを使用しようとすると、結果は返されません。

:grep User **/*.rb

Googleが少し発見したグローバルスター私のbashシェルのオプションは有効になっていません。

$shopt globstar
globstar        off

つけることは容易です:

$shopt -s globstar

上記の行を.vimrcファイルに追加し、bashでそのオプションが永久に有効になっていることを確認しました。

新しいオプションを使用すると、この方法でgrepを実行して目的の結果を得ることができます。

$grep User **/*.rb

残念ながら、Vimの内部:grepコマンドはまだ '**'では機能しません。そして、以下を実行します。

!shopt globstar

Vim内では、結果はまだ去る

だから質問は:私のbashを広めることができますか?グローバルスター私のVim外部コマンド環境のオプションは何ですか?それ以外の場合は、どういうわけか私の設定を設定できます。grepgglobstarを正しく使用できるようにするオプションはVimにありますか?

お手伝いいただきありがとうございます。

ベストアンサー1

シェルオプションは分岐シェルに継承されませんが、:!Vimがこのコマンドを使用するときに実行することは、新しいシェルを起動することです。

次のオプションは、Vimの分岐シェルに影響を与える可能性があります'shell'

:set shell+=\ -O\ globstar

または

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

おすすめ記事