Bagaimana saya bisa membuka beberapa file sekaligus di Vim?

87

Apakah ada cara untuk membuka semua file di direktori dari dalam Vim? Jadi :commanditu akan mengatakan berlaku "Buka semua file di bawah /some/pathke dalam buffer".

Idealnya, akan sangat bagus untuk membuka semua file di bawah direktori secara rekursif.

Ethan
sumber

Jawaban:

105

Perintah yang Anda cari adalah args:

Sebagai contoh:

:args /path_to_dir/*

akan membuka semua file di direktori

skinp
sumber
32
Gunakan **untuk mencocokkan file secara rekursif. Misalnya:args /path_to_dir/**
daf
1
Untuk membuka file tanpa ekstensi, tentukan direktori induknya misalnya args ** /. Hg / hgrc berfungsi tetapi ** / hgrc tidak.
79E09796
11
Setelah file dibuka, gunakan :tab alluntuk meletakkannya di tab individual.
Backlin
"Semua file" akan menyertakan sub-direktori yang mungkin tidak diinginkan. (Kesalahan vim saya "/path_to_dir/subdir/" Illegal file name). Solusi cepat adalah dengan menjalankan perintah kedua argd */untuk menghapus orang dari daftar lagi
lessthanideal
Akan sangat menyenangkan untuk melengkapi jawaban dengan saran berikut: Sebagai praktik yang baik dan untuk menunjukkan bagaimana menerapkan sekumpulan perintah yang sama ke semua file yang telah dibuka, Anda dapat menjalankan perintah berikut untuk menerapkan semua perintah terkandung dalam file my_commands_batch.vim:argdo source my_commands_batch.vim
aturegano
21

Mengapa tidak berhasil jika saya ingin membuka semua file yang diakhiri dengan ekstensi tertentu? Saya mencoba

:n ./**.cs

dan hanya membuka file di direktori saat ini.

Saya menemukan jawabannya, kode yang benar adalah :n **/*.cs

Untuk informasi lebih lanjut :h find

mp.
sumber
9

Apakah kamu mencoba

:n /some/path/*

Ini akan membuka semua file di / some / path

Saya tidak berpikir itu akan membuka file secara rekursif.

EDIT

Mungkin menggunakan ** akan terbuka secara rekursif seperti yang disebutkan sebelumnya

Luc M
sumber
Apa artinya: n? Melihat bantuan vim hanya mengarahkan saya untuk "mengulangi pola terakhir" .. yang saya mengerti adalah penekanan tombol. Apakah ada cara untuk mendapatkan bantuan hanya untuk mode perintah?
U0001
1
Terlalu mudah: h: n .. dapatkan bantuan untuk ": n". Bukankah saya suka menjawab pertanyaan saya sendiri;)
U0001
4

Metode yang tidak perlu dipusingkan argsadalah dengan meletakkan daftar file dalam file teks, lalu menggunakan :soperintah untuk menjalankan perintah di file tersebut.

Misalnya, jika Anda ingin membuka semua file yang diakhiri .phpdengan direktori tertentu, pertama buat yang files.txtberisi daftar file, diawali dengan perintah apa pun yang ingin Anda gunakan untuk membukanya.

sp alpha.php
sp bravo.php
sp charlie.php

Kemudian, dalam vim:

:so files.txt

Jika daftar file besar, relatif mudah untuk menghasilkan files.txtfile dengan cepat, dengan mengarahkan output lske file, dan kemudian menggunakan makro vim untuk menambahkan spsebelum setiap nama file.

Ini jelas tidak seelegan menggunakan perintah argsdan argdo, tetapi perintah itu juga jauh lebih rumit.

Mungkin juga ada cara untuk melakukan ini dengan satu perintah pada baris perintah, tetapi bahkan setelah 16 tahun saya masih menemukan pemrograman vim menjadi aneh dan misterius.

dirtside
sumber
Menarik! Kedengarannya seperti cara yang baik untuk tetap mengontrol file mana yang harus dibuka, daripada membuka semua file dari direktori tertentu secara membabi buta jika file-file ini tidak semuanya diperlukan.
cram2208
1

Cara lain untuk membuka file secara rekursif

find . -type f -exec vi {} \;
nakal-satu
sumber
4
Tidak memenuhi batasan "dari dalam Vim".
ZyX
namun melakukan apa yang dibutuhkan :)
nakal-satu
3
Itu tidak. Yang dibutuhkan adalah file dari direktori yang diberikan secara rekursif dari dalam vim . Jika Anda membuang kondisi, Anda mungkin juga mengatakan bahwa kate **/*(^/)(menggunakan sintaks globbing zsh) melakukan apa yang diperlukan: membuka file dari direktori yang diberikan secara rekursif. Ini bukan “dari dalam” dan tidak menggunakan vim sama sekali, tapi “namun melakukan apa yang dibutuhkan”. Atau bahkan kate ~/.vimrc ~/.bashrc. Menghilangkan "from withing", "from the given directory" dan "recursively" sekaligus, tetapi "yet melakukan apa yang diperlukan": membuka file.
ZyX
Ini membuka file satu per satu
Paul
1

Jika Anda ingin menambahkan ke daftar argumen;

:arga what_you-d_like_to_add

Lihat

:he arga

dari / in vim untuk informasi lebih lanjut.

segera
sumber