Bagaimana saya bisa mengedit banyak file di VIM?

169

Saya tahu saya bisa membuka banyak file dengan vimmelakukan sesuatu seperti vim 2011-12*.log, tetapi bagaimana saya bisa beralih di antara file dan menutup file satu per satu? Juga, bagaimana saya bisa memberi tahu nama file dari file saat ini yang saya edit?

cwd
sumber
Terkait: gvim -p batas tab yang dibuka?
Grzegorz Wierzowiecki

Jawaban:

172

Pertama-tama, di vim Anda dapat memasukkan :(titik dua) dan kemudian membantu help, ala :helpuntuk daftar topik bantuan mandiri, termasuk tutorial singkat. Dalam daftar topik, gerakkan kursor Anda di atas topik yang diminati, lalu tekan ctrl]dan topik itu akan dibuka.

Tempat yang baik untuk memulai adalah topik pembicaraan

|usr_07.txt|  Editing more than one file

Oke, lanjutkan ke jawaban Anda.

Setelah memulai vim dengan daftar file, Anda dapat pindah ke file berikutnya dengan memasukkan :nextatau :nsingkatnya. :wnextkependekan untuk menulis perubahan saat ini dan kemudian pindah ke file berikutnya.

Ada juga yang analog :previous, :wpreviousdan :Next. (Perhatikan bahwa :padalah istilah untuk :print. Singkatan The untuk :previousini :prevatau :N.)

Untuk melihat di mana Anda berada dalam daftar file, masukkan :argsdan file yang sedang diedit akan muncul di [](tanda kurung).

Contoh:

vim foo.txt bar.txt
:args

hasil:

[foo.txt] bar.txt
bsd
sumber
25
: wn adalah bentuk singkat dari: wnext.
Kowh
Anda juga dapat melakukan: rew untuk kembali ke file pertama. : e # swap antara 2 file. : n! pergi ke file berikutnya tanpa menulis. Lihat juga: atur autowrite.
Sasquiha
4
Sehubungan dengan beberapa buffer / windows / tab juga lihat StackOverflow's Bagaimana cara efektif bekerja dengan banyak file di Vim? dan Menggunakan tab Vim seperti buffer .
mmoya
1
Saya menemukan bab 22 "Menemukan file untuk diedit" juga sangat berguna. Ini berjalan menggunakan direktori explorer untuk mengedit file yang Anda inginkan.
Harry Moreno
: salah satu yang mengagumkan.
rammayur
54

Anda dapat membuka file lain saat vim terbuka dengan :tabe filenamedan untuk beralih ke file lain yang Anda ketikkan :tabnatau :tabpselanjutnya dan sebelumnya.

Pintasan keyboard gT dan gt juga dapat digunakan untuk berganti tab saat Anda tidak berada dalam mode pengeditan (yaitu tidak sedang menyisipkan, mengganti mode dll). Pada beberapa sistem Ctrl+ Alt+ Page Updan Ctrl+ Alt+ Page Downjuga memungkinkan penggantian tab, tetapi ini tidak selalu berhasil (misalnya, itu tidak akan berfungsi di terminal OS X 'di luar kotak').

Dan Anda dapat melihat nama file di bagian atas aplikasi vim.

Hanan N.
sumber
16
Ini. Juga buka file dalam tab dengan:vim -p file1 file2
Not Now
MENAKJUBKAN! Saya tidak pernah menemukan ini sebelumnya, meskipun telah menggunakan vim selama bertahun-tahun. Ini mengubah segalanya .
me_and
Perhatikan bahwa tab tidak dimaksudkan untuk bekerja dengan banyak file. Mereka dimaksudkan untuk bekerja dengan banyak tata letak . Lihat artikel .
patryk.beza
5
Selain: Jika Anda sudah vim dan ingin menambahkan file lain, Anda dapat menggunakan: :argadd filenamedan kemudian :nextuntuk itu. Demikian juga, Anda dapat menggunakan :argdel filenameuntuk menghapus salah satu file di edit.
Luv2code
36

Perintah untuk beralih antar buffer:

:bf            # Go to first file.
:bl            # Go to last file
:bn            # Go to next file.
:bp            # Go to previous file.
:bw            # Close file.

:help buffer untuk mencari informasi lebih lanjut

Untuk mengetahui nama file, gunakan Ctrl+ G, :fileatau:f

Birei
sumber
1
:bwtutup file haha. Jangan lupa membaca bantuan untuk :bwtempat yang mengatakan bahwa Anda hanya boleh menggunakannya jika Anda tahu apa yang Anda lakukan. Ini bukan masalah besar, tetapi kecuali jika Anda ingin menghapus semua tanda dan informasi tentang file tersebut, lebih baik gunakan :bdatau :qseperti orang normal
Dylan
1
Info lebih lanjut tentang :bwjika Anda penasaran: vi.stackexchange.com/questions/2212/…
wisbucky
26

Pilihan lain selain dari jawaban yang diberikan, adalah untuk membagi jendela dengan:

:sp
:vsp

:vspuntuk perpecahan vertikal. Kemudian gunakan Ctrl+W <ARROW_KEYS>untuk bergerak di panel.

Tidak sekarang
sumber
4
Anda dapat menggunakan :vssebagai gantinya:vsp
Khaja Minhajuddin
2
Atau bahkan hanya Ctrl+W, vuntuk split vertikal dan Ctrl+W, suntuk split horizontal.
Ruslan
1
Saya telah menggunakan CTRL+Wselama bertahun-tahun dan baru-baru ini saya melakukan banyak pengeditan VI di dalam halaman web. Setiap saat, saya mengetik perintah tanpa berpikir dan ... whammmm ... tab browser GONE! Saya selalu lupa. Saya benar-benar perlu belajar cara pintas baru.
Jeach
13
:n -> Move to next file
:N -> Move to previous file
diham
sumber
10

Saya mengajukan pertanyaan serupa di superuser,

"Bagaimana cara menyalin dan menempel antara berbagai jendela bash dan file yang dibuka dengan VI?"

Jawaban atas pertanyaan saya adalah Anda tidak bisa, tetapi Anda dapat membuka dua file dalam satu jendela bash menggunakan :splitperintah VIM :

  1. Buka file dengan $ vim file1, buka file kedua dalam VIM menggunakan :split file2perintah.
  2. Atau, gunakan $ vim -o file1 file2dari bash.
  3. Beralih di antara file - beralih file yang aktif - di VIM dengan ctrl- w ctrl- w.
  4. Contoh operasi kemudian adalah menyalin (atau mencabut) di file1 yy, beralih (3), lalu tempel (atau menaruh) pkonten ke file2.
  5. Segala sesuatu yang lain normal ketika salah satu jendela aktif, sehingga :qberhenti dan :q!memaksa berhenti.

Bash saya hitam dan putih, sehingga nama file setiap layar ditata sebagai garis 'terpilih' terbalik dengan nama file yang dikutip di sana.

Woot!

xtian
sumber
6

Saya menemukan metode paling nyaman untuk mengedit banyak file adalah dengan menggunakan tab. Anda dapat membuka banyak file dalam tab terpisah melalui baris perintah seperti ini:

vim -p file1.txt file2.txt

Atau jika Anda sudah memiliki vim terbuka, Anda dapat membuka file baru di tab baru seperti:

:tabe file2.txt

Setelah tab terbuka, gunakan gtuntuk melihat tab berikutnya dan gTuntuk melihat tab sebelumnya.

Anda juga dapat melompat ke tab pertama dengan 1gt, tab kedua dengan 2gt, dll.

Anda dapat menutup tab menggunakan :tabc

Akhirnya Anda dapat memindahkan tab saat ini nke lokasi ke :ntabmmana nnomor mana lebih besar atau sama dengan 0.

Cory Klein
sumber
6
argadd a/b c/d e/f

argadd ...akan menambahkan semua file ke args, dan juga ke :ls/ :buffersdan memungkinkan Anda untuk mengeditnya.


Lihat :h arglsit& :h argedit&:h argsd


Juga, Anda dapat melakukan tindakan tertentu hanya pada args with :argdo ..., dan Anda dapat memulai dengan args dengan melakukan :argsd*.

Dylan
sumber
0

Ada banyak cara untuk melakukannya. Yang pertama, mungkin yang kurang nyaman, adalah menelepon vimdengan file yang ingin Anda edit - buat:

vim first_file second_file ...

Ini memanggil dua file dalam dua buffer. Untuk beralih dari file ke file lain, silakan gunakan :ndan :N. Untuk daftar file yang sedang Anda edit, :argsakan melakukan pekerjaan. :help bufferakan membantu Anda lebih lanjut dalam hal ini.


Ini harus menjawab pertanyaan Anda. Tetapi di sini ada informasi lebih lanjut:

Ada cara untuk mengedit file Anda dengan cara yang lebih nyaman dengan membagi layar konsol Anda menggunakan vim . Untuk melakukan ini, buka dua frame dengan :split( :sp) atau :vsplit( :vs) saat menggunakan vim . Lalu navigasikan dalam bingkai-bingkai ini dengan menggunakan kombinasi Ctrl+ W> Ctrl+ W. Anda juga dapat menggunakan Ctrl+ W+ panah atau tombol ( H, J, Katau L) sesuai dengan frame berikutnya. Ketika ini selesai, edit file yang Anda inginkan :e file_name. :help opening-windowakan membantu Anda lebih lanjut dalam hal ini.

Sekarang, jika Anda ingin melihat perbedaan antara file, gunakan -dargumen atau panggil program vimdiff (sama) dengan file yang sesuai. :help diffakan membantu Anda lebih lanjut dalam hal ini.

vim -d first_file second_file ...

Tolong beri tahu saya jika Anda memiliki masalah.

aleroy
sumber
0

Saya suka menggunakan split windows - baik horisontal maupun vertikal - untuk mengedit banyak file.

Saya menggunakan tmux untuk mengelola windows itu dengan lebih mudah

https://tmux.github.io/ "Apa itu terminal multiplexer? Ini memungkinkan Anda beralih dengan mudah antara beberapa program dalam satu terminal, melepaskannya (tetap berjalan di latar belakang) dan menyambungkannya kembali ke terminal yang berbeda. Dan lakukan lebih banyak. Lihat manual. "

Contoh: Melihat file atau menjalankan tes di sebelah kanan, mengedit tes dan file sumber di sebelah kiri: masukkan deskripsi gambar di sini

Michael Durrant
sumber
0

:e #(filename) untuk beralih di antara dua file yang dibuka

:p untuk file sebelumnya

:n untuk file selanjutnya

bala selvam
sumber
Selamat datang di U&L, ini hampir tidak menambahkan apa pun ke jawaban lain yang diposting bertahun-tahun yang lalu.
Archemar