Bagaimana cara membuka semua file di direktori saat ini dan semua subdirektori menggunakan vim?

8

Sejauh ini saya telah menggunakan vim */**yang tampaknya membuka semua file dalam subdirektori tetapi tidak pada direktori saat ini, dan vim *yang membuka semua file dalam currentdirektori. Tetapi bagaimana cara membuka semua file di direktori saat ini dan semua subdirektori?

bergalah
sumber

Jawaban:

8

Dengan zsh:

vim ./**/*(.)

Kerang lainnya:

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

Untuk membuka hanya file biasa (tidak tersembunyi) (bukan direktori, symlink, pipa, perangkat, pintu, soket ...).

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

Kerang lainnya, GNU find:

find . -xtype f -exec vim {} +

Untuk juga membuka file tersembunyi (dan melintasi direktori tersembunyi) dan symlink ke file biasa.

Dan:

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

kerang lainnya:

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

untuk juga melintasi symlink ketika melihat ke dalam subdirektori.

Jika Anda hanya menginginkan satu tingkat subdirektori:

vim ./* ./*/*

Perhatikan bahwa merupakan kebiasaan yang baik untuk ./mengawali gumpalan Anda dengan seandainya beberapa nama file dimulai dengan -atau +.

(tentu saja findyang juga berfungsi zsh. Perhatikan bahwa mereka dapat menjalankan beberapa contoh vimjika daftar file besar).

Stéphane Chazelas
sumber
1

Bash dengan shopt -s extglob:

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

Perhatikan bahwa, sesuai komentar Stéphane , sebelum Bash 4.3 ini akan mengikuti semua tautan di direktori yang dicakup.

jasonwryan
sumber
1
Itu berjalan satu vimper file. Perhatikan bahwa bash before 4.3 digunakan untuk melintasi symlink dengan **. Sudah diperbaiki di 4.3.
Stéphane Chazelas
@ StéphaneChazelas Apakah satu vim per file buruk per se (dengan asumsi kita berbicara tentang beberapa file, bukan beberapa ratus)? Terima kasih atas catatan tentang symlinks: Saya akan mengeditnya di.
jasonwryan