私は毎日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