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


8

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

Answers:


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 {} +

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

如果只需要一级子目录:

vim ./* ./*/*

请注意,./在某些文件名以-或开头的情况下,为glob加上前缀是一个好习惯+

(当然,它们也可以find在中使用zsh。请注意,vim如果文件列表很大,它们可能会运行多个实例)。


1

猛烈地shopt -s extglob

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

请注意,根据Stéphane的评论,在Bash 4.3之前,它将遵循所涵盖目录中的所有符号链接。


1
vim每个文件运行一个。请注意,4.3之前的bash用来遍历与的符号链接**。它已在4.3中修复。
斯特凡Chazelas

@StéphaneChazelas每个文件一个vim 本身是否不好(假设我们在谈论几个文件,而不是数百个)?感谢您对符号链接的说明:我会编辑英寸
jasonwryan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.