如何使用vim打开当前目录和所有子目录中的所有文件?

qua*_*ant 8 vim

到目前为止,我一直在使用vim */**which 似乎打开子目录中的所有文件而不是当前目录中的文件,并且vim *它打开目录中的所有文件current。但是如何打开当前目录所有子目录中的所有文件?

Sté*_*las 9

zsh

vim ./**/*(.)
Run Code Online (Sandbox Code Playgroud)

其他贝壳:

find . -name '.?*' -prune -o -type f -exec vim {} +
Run Code Online (Sandbox Code Playgroud)

仅打开任何级别子目录中的(非隐藏)常规文件(不是目录、符号链接、管道、设备、门、套接字...)。


vim ./**/*(D-.)
Run Code Online (Sandbox Code Playgroud)

其他外壳,GNU find

find . -xtype f -exec vim {} +
Run Code Online (Sandbox Code Playgroud)

还可以打开隐藏文件(并遍历隐藏目录)和指向常规文件的符号链接。


和:

vim ./***/*(D-.)
Run Code Online (Sandbox Code Playgroud)

其他贝壳:

find -L . -type f -exec vim {} +
Run Code Online (Sandbox Code Playgroud)

在查看子目录时也遍历符号链接。


如果您只想要一级子目录:

vim ./* ./*/*
Run Code Online (Sandbox Code Playgroud)

请注意,./如果某些文件名以-或开头,则在glob 前加上前缀是一个好习惯+

(当然,它们find也适用于zsh. 请注意,vim如果文件列表很大,它们可能会运行多个实例,至少在 GNU 中find,将无法跳过名称包含未形成的字节序列的隐藏文件/目录您的语言环境中的有效字符)。