How do I open all files in the current directory and all subdirectories using vim?
With zsh
:
vim ./**/*(.)
Other shells:
find . -name '.?*' -prune -o -type f -exec vim {} +
To open only the (non-hidden) regular files (not directories, symlinks, pipes, devices, doors, sockets...) in any level of subdirectories.
vim ./**/*(D-.)
Other shells, GNU find
:
find . -xtype f -exec vim {} +
To also open hidden files (and traversing hidden directories) and symlinks to regular files.
And:
vim ./***/*(D-.)
other shells:
find -L . -type f -exec vim {} +
to also traverse symlinks when looking into subdirectories.
If you only want one level of subdirectories:
vim ./* ./*/*
Note that it's a good habit to prefix your globs with ./
in case some of the file names start with -
or +
.
(of course the find
ones also work in zsh
. Note that they may run several instances of vim
if the list of files is big, and at least with GNU find
, will fail to skip hidden files/dirs whose name contains sequences of bytes that don't form valid characters in your locale).