vimを使用して現在のディレクトリとすべてのサブディレクトリにあるすべてのファイルを開くにはどうすればよいですか?


8

これまでのところ、現在のディレクトリにあるファイルではなくvim */**、サブディレクトリにあるすべてのファイルを開くように見え、ディレクトリにあるすべてのファイルを開くを使用してきました。しかし、どうすれば現在のディレクトリすべてのサブディレクトリにあるすべてのファイルを開くことができますか?vim *current

回答:


8

zsh

vim ./**/*(.)

他のシェル:

find . \( -name '.?*' -prune \) -o -type f -exec vim {} +

(非表示ではない)通常のファイル(ディレクトリ、シンボリックリンク、パイプ、デバイス、ドア、ソケットなどではない)のみを開くには。

vim ./**/*(D-.)

他のシェル、GNU find

find . -xtype f -exec vim {} +

隠しファイル(および隠しディレクトリのトラバース)と通常のファイルへのシンボリックリンクを開くこと

そして:

vim ./***/*(D-.)

他のシェル:

find -L . -type f -exec vim {} +

サブディレクトリを調べるときにシンボリックリンクもトラバースします。

1レベルのサブディレクトリのみが必要な場合:

vim ./* ./*/*

./一部のファイル名が-またはで始まる場合に備えて、グロブにプレフィックスを付けることは良い習慣であることに注意してください+

(もちろん、これらfindもで機能しzshます。vimファイルのリストが大きい場合、複数のインスタンスが実行される可能性があることに注意してください)。


1

バッシュでshopt -s extglob

for file in **/**; do [[ -f "$file" ]] && vim "$file"; done

Stéphaneのコメントに従って、Bash 4.3より前のバージョンでは、対象となるディレクトリ内のシンボリックリンクを追跡することに注意してください。


1
vimただし、ファイルごとに1つ実行されます。4.3より前のbashは、を使用してシンボリックリンクをトラバースするために使用されていたことに注意してください**。4.3で修正されました。
ステファンChazelas

@StéphaneChazelasファイルごとに1つのvim 自体は悪いですか(数百ではなく、複数のファイルについて話していると仮定)。シンボリックリンクについての注意をありがとう:私はその中を編集します。
jasonwryan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.