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.

Jawaban:


105

Perintah yang Anda cari adalah args:

Sebagai contoh:

:args /path_to_dir/*

akan membuka semua file di direktori


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


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


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.


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 {} \;

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.