Pertanyaan Bagaimana cara efektif bekerja dengan banyak file di Vim?


Saya sudah mulai menggunakan Vim untuk mengembangkan skrip Perl dan mulai menemukannya sangat kuat.

Satu hal yang saya suka adalah dapat membuka banyak file sekaligus dengan mis. vi main.pl maintenance.pl lalu lompat di antara mereka dengan:

:n
:prev

dan lihat file mana yang terbuka

:args

Dan untuk menambahkan file, saya dapat mengatakan:

:n test.pl

yang saya harapkan kemudian akan DITAMBAHKAN ke daftar file saya, tetapi malah menghapus daftar file saya saat ini dan ketika saya mengetik :args aku hanya mempunyai test.pl Buka.

Jadi bagaimana saya bisa MENAMBAHKAN dan menghapus file ke daftar argumen saya?


969
2017-09-10 09:03


asal


Jawaban:


Mengapa tidak menggunakan tab (diperkenalkan di Vim 7)? Anda dapat beralih antar tab dengan :tabn dan :tabp, Dengan :tabe <filepath> Anda dapat menambahkan tab baru; dan dengan reguler :q atau :wq Anda menutup tab. Jika Anda memetakan :tabn dan :tabp untuk Anda F7/F8 kunci Anda dapat dengan mudah beralih di antara file.

Jika tidak ada banyak file atau Anda tidak memiliki Vim 7, Anda juga dapat membagi layar Anda dalam beberapa file: :sp <filepath>. Kemudian Anda dapat beralih di antara splitscreens dengan Ctrl+W dan kemudian tombol panah ke arah yang ingin Anda pindahkan (atau alih-alih tombol panah, w untuk selanjutnya dan W untuk splitscreen sebelumnya)


1052
2017-09-10 09:09



Daftar

Untuk melihat daftar buffer saat ini, saya menggunakan:

:ls

Pembukaan

Untuk membuka file baru, saya gunakan

:e ../myFile.pl

dengan penyempurnaan tab yang disempurnakan (letakkan set wildmenu di dalam kamu .vimrc).

Catatan: Anda juga bisa menggunakan :find yang akan mencari serangkaian jalur untuk Anda, tetapi Anda perlu menyesuaikan jalur tersebut terlebih dahulu.


Berpindah

Untuk beralih di antara semua file yang terbuka, saya gunakan

:b myfile

dengan penyempurnaan tab yang disempurnakan (masih set wildmenu).

catatan: :b# memilih file yang terakhir dikunjungi, sehingga Anda dapat menggunakannya untuk beralih cepat antara dua file.


Menggunakan windows

Ctrl-W s dan Ctrl-W v untuk membagi jendela saat ini secara horizontal dan vertikal. Anda juga bisa menggunakan :split dan :vertical split (:sp dan :vs)

Ctrl-W w untuk beralih di antara jendela yang terbuka, dan Ctrl-W h (atau j atau k atau l) untuk menavigasi melalui jendela yang terbuka.

Ctrl-W c untuk menutup jendela saat ini, dan Ctrl-W o untuk menutup semua jendela kecuali yang sekarang.

Memulai vim dengan -o atau -O flag membuka setiap file dalam split-nya sendiri.


Dengan semua ini saya tidak perlu tab di Vim, dan jari saya menemukan buffer saya, bukan mata saya.

Catatan: jika Anda ingin semua file untuk pergi ke instance Vim yang sama, mulailah Vim dengan --remote-silent pilihan.


492
2017-09-10 09:47



:ls

untuk daftar buffer terbuka

  • :bp penyangga sebelumnya
  • :bn penyangga berikutnya
  • :bn (n nomor) pindah ke buffer n'th
  • :b <filename-part> dengan tab-key menyediakan pelengkapan otomatis (awesome !!)

Dalam beberapa versi vim, bn dan bp sebenarnya bnext dan bprevious masing-masing. Penyelesaian otomatis tab berguna dalam kasus ini.

Atau saat Anda berada dalam mode normal, gunakan ^ untuk beralih ke file terakhir yang sedang Anda kerjakan.

Plus, Anda dapat menyimpan sesi vim

:mksession! ~/today.ses

Perintah di atas menyimpan buffer dan buffer file terbuka saat ini ~/today.ses. Anda dapat memuat sesi itu dengan menggunakan

vim -S ~/today.ses

Tidak perlu repot mengingat di mana Anda tinggalkan kemarin. ;)


202
2017-09-15 19:03



Untuk ditambahkan ke args daftar:

:argadd

Untuk menghapus dari args daftar:

:argdelete

Dalam contoh Anda, Anda bisa menggunakannya :argedit test.pl untuk menambahkan test.pl ke args daftar dan edit file dalam satu langkah.

:help args memberikan lebih banyak detail dan penggunaan tingkat lanjut


96
2017-09-10 09:34



Saya menggunakan perintah buffer - :bn (penyangga berikutnya), :bp (penyangga sebelumnya) :buffers (daftar buffer terbuka) :b<n> (buka buffer n) :bd (hapus buffer). :e <filename> hanya akan membuka buffer baru.


45
2017-09-10 09:43



Saya pikir Anda mungkin menggunakan perintah yang salah untuk melihat daftar file yang Anda buka.

Coba lakukan :ls untuk melihat daftar file yang Anda buka dan Anda akan melihat:

   1 %a   "./checkin.pl"            line 1
  2 #    "./grabakamailogs.pl"     line 1
  3      "./grabwmlogs.pl"         line 0
  etc.

Anda kemudian dapat memantul melalui file dengan merujuk pada mereka dengan angka yang tercantum, mis. : 3b

atau Anda dapat membagi layar Anda dengan memasukkan nomor tetapi menggunakan sb, bukan hanya b.

Sebagai samping% mengacu pada file yang saat ini terlihat dan # merujuk ke file alternatif.

Anda dapat dengan mudah beralih antara dua file ini dengan menekan Ctrl  Bergeser  6

Edit: suka :ls Kamu dapat memakai :reg untuk melihat isi register Anda saat ini termasuk register 0-9 yang berisi apa yang telah Anda hapus. Ini sangat berguna jika Anda ingin menggunakan kembali beberapa teks yang sebelumnya telah Anda hapus.


36
2017-09-10 09:34



Vim (tapi bukan Vi asli!) Memiliki tab yang saya temukan (dalam banyak konteks) lebih unggul dari buffer. Anda bisa katakan :tabe [filename] untuk membuka file di tab baru. Bersepeda antar tab dilakukan dengan mengklik tab atau dengan kombinasi tombol [n]gt dan gT. Graphical Vim bahkan memiliki tab grafis.


30
2017-09-10 09:07



Hal-hal seperti :e dan :badd hanya akan menerima SATU argumen, oleh karena itu berikut ini akan gagal

:e foo.txt bar.txt
:e /foo/bar/*.txt
:badd /foo/bar/*

Jika Anda ingin menambahkan beberapa file dari dalam vim, gunakan arga[dd]

:arga foo.txt bar.txt
:arga /foo/bar/*.txt
:argadd /foo/bar/*

23
2017-12-08 19:43



Banyak jawaban di sini! Apa yang saya gunakan tanpa menciptakan kembali roda - plugin yang paling terkenal (yang tidak akan mati dalam waktu dekat dan digunakan oleh banyak orang) menjadi sangat cepat dan culun.

  • ctrlpvim / ctrlp.vim - untuk mencari file dengan nama pencarian fuzzy berdasarkan lokasinya atau hanya namanya
  • jlanzarotta / bufexplorer - untuk menelusuri buffer yang terbuka (ketika Anda tidak ingat berapa banyak file yang dibuka dan dimodifikasi baru-baru ini dan Anda tidak ingat di mana mereka, mungkin karena Anda mencari mereka dengan Ag)
  • rking / ag.vim untuk mencari file sehubungan dengan gitignore
  • scrooloose / nerdtree untuk melihat struktur direktori, mencari, menambah / menghapus / memodifikasi file

MEMPERBARUI : Baru-baru ini saya gunakan dyng / ctrlsf.vim  untuk mencari dengan tampilan kontekstual (seperti pencarian Sublime) dan saya beralih dari mesin ag untuk ripgrep. Pertunjukannya luar biasa.


21
2018-03-31 11:47