Saya ingin mengedit beberapa file yang cocok dengan ekspresi glob. Sebagai contoh, untuk mengedit semua file git config di direktori anak, saya dapat melakukan ini di shell:
vim */.git/config
Pada :
baris perintah Vim , saya berharap :find */.git/config
untuk melakukan sesuatu yang serupa (yaitu, buka semua file yang cocok dengan ekspresi glob), tetapi malah mengeluh E77: Too many file names
.
Apakah ada perintah Vim atau satu-liner untuk membuka beberapa file yang cocok dengan wildcard / glob expression (yang tidak melibatkan penulisan fungsi)?
sumber
:args */.git/config
sebenarnya mengisi daftar buffer juga, jadi:bnext
berfungsi juga. Apakah itu terlihat aneh? (Vim 7.4.52, dan Neovim)]a
siklus:args
daftar jika github.com/tpope/vim-unimpaired diinstal.:argadd file*
bisa dilakukan.**
), Anda harusglobstar
menyetel, lihat: Mencocokkan semua file di bawah semua direktori bersarang dengan globbing shell .Untuk membuka file yang cocok di tab terpisah ...
Penjelasan:
:n
(:next
) mengatur daftar file-berikutnya untuk semua kecocokan.tab all
membuka semua file dalam daftar file selanjutnya di tab baru.… atau …
Penjelasan: Dalam
glob(…)
, 0 berarti untuk memasukkan semua file yang cocok, bahkan jika mereka akan diabaikan karena pengaturansuffixes
atauwildignorecase
. 1 berarti mengembalikan daftar, bukan string.exe "tabe" f
adalah bentuk singkatexecute "tabedit" f
dan sarana untuk membuka file yang ditentukan oleh variabelf
di tab baru.sumber
:n */.git/config | buffer
bekerja.Jangan mengharapkan apa pun sebelum membaca dokumentasi.
Selain jawaban Tom, Anda dapat langsung menggunakan
:next
sebagai alternatif:args
.sumber
Membuka file dengan
vim */.git/config
pasti harus berhasil. Jika tidak, Anda harus meningkatkan Vim ke 7.4 (versi sebelumnya lebih bermasalah).Atau coba salah satu dari yang berikut (di dalam editor):
sumber
:args
.args
hanyalah solusinya, tetapi lebih jauh lagi itu menunjukkan Anda bagaimana menggunakan ekspansi shell dalam vim sendiri jika pengguna lebih lanjut ingin menggunakannya untuk solusi yang lebih kompleks, dengan menggunakanfind
, seperti ini . Jadi saya pikir itu memberikan beberapa nilai tambahan untuk pertanyaan Anda. Jadi saya harap tidak apa-apa dengan Anda.vim */foo
, dan tidak ada cara yang dapat dikaitkan dengan versi Vim, karena itu fitur shell .Jelas, tetapi tidak tercantum di atas - contoh menemukan semua file sql memiliki string create_table dalam namanya
dan memeriksanya
dan buka yang pertama
sumber