Seperti yang dikatakan ZyX pada #vim, pertanyaan ini terdengar seperti, "Mengapa para pakar Vim lebih suka enak daripada hangat?" .
"Ahli Vim" tidak lebih suka buffer daripada tab: mereka menggunakan buffer sebagai proksi file mereka dan halaman tab sebagai ruang kerja mereka. Buffer dan halaman tab memiliki tujuan yang berbeda sehingga memilih satu sama lain tidak masuk akal.
Masalah dengan buffer dan tab adalah salah satu kebingungan , yang disebabkan oleh kombinasi fakta independen.
Kebanyakan editor dan IDE teks "modern" menggunakan metafora tab untuk mewakili file yang dimuat. Metafora itu bertindak sebagai sistem informasi - ini menunjukkan kepada pengguna file apa yang dibuka dan statusnya - dan sebagai perangkat interaktif - itu memungkinkan pengguna untuk memanipulasi (menyusun ulang, memilih, menutup ...) file-file yang dibuka. Meskipun banyak keterbatasan mereka, tab ada di mana-mana dan orang-orang terbiasa dengan mereka dan mengharapkannya di mana-mana.
Vim memperkenalkan halaman tab di 7.0 sebagai cara bagi penggunanya untuk membuat "ruang kerja" ad-hoc. Tidak ada dalam fitur mereka, opsi spesifik mereka, perintah khusus mereka atau :help
bagian mereka menunjukkan bahwa halaman tab dapat atau harus digunakan sebagai file proxy.
Tidak ada apa-apa selain nama dan penampilan "halaman tab", tentu saja, yang menyebabkan banyak kebingungan.
Tanpa :set hidden
, yang dinonaktifkan secara default dan tidak mudah ditemukan, Vim membuatnya tidak mungkin untuk beralih ke buffer lain tanpa menulis yang sekarang atau mengabaikan perubahannya. Pengguna baru, yang tidak mengetahui pilihan itu, tidak punya pilihan selain beralih ke penggunaan windows yang berat atau ke fitur "mirip-tab" terdekat yang dapat mereka temukan: halaman tab.
"Tab page" adalah pilihan nama yang disayangkan untuk fitur itu, terutama di era yang didominasi oleh gagasan bahwa membaca dokumentasi adalah buang-buang waktu.
Di Vim, halaman tab adalah abstraksi yang dibangun di atas jendela, itu sendiri abstraksi yang dibangun di atas buffer. Setiap level baru menambahkan fitur yang bermanfaat tetapi membatasi alur kerja Anda.
"Cara penyangga"
Dengan alur kerja berbasis penyangga, file yang sedang Anda kerjakan didistribusikan sepanjang dimensi tunggal. Anda dapat menggilir buffer Anda, Anda dapat mengakses buffer tertentu dengan mengetik bagian dari namanya (dengan selesai) atau nomornya, Anda dapat berganti-ganti buffer, Anda dapat menargetkannya dengan mudah. Pada dasarnya tidak ada gesekan.
Delapan buffer terbuka, hanya satu yang terlihat:
Berpindah dengan nomor:
Berpindah berdasarkan nama:
Buffer adalah file-proxy Vim. Jika Anda berpikir dalam hal file, Anda berpikir dalam hal buffer.
"Jendela jalan"
Dengan alur kerja berbasis jendela, "file" Anda sama-sama didistribusikan di sepanjang dimensi "virtual" yang sama seperti jika Anda hanya menggunakan buffer dan sepanjang dua dimensi "fisik" lainnya. Tetapi ruang kartesius di mana dimensi-dimensi itu ditemukan hampir sepenuhnya terpisah: pindah ke buffer lain masih berarti "pindah ke file lain" tetapi pindah ke jendela lain tidak. Buffer yang sesuai dengan file yang diinginkan dapat ditampilkan di jendela itu tetapi bisa juga ditampilkan di jendela lain, mungkin di halaman tab lain, atau tidak sama sekali.
Dengan windows, menavigasi antara file yang terbuka menjadi terlalu rumit atau terlalu sederhana, bahkan dengan 'switchbuf'
dan :sb
. Sebagian besar karena Anda dipaksa untuk menggunakan dua set perintah untuk apa yang pada dasarnya hal yang sama: mengakses buffer.
Windows dapat digunakan, seperti dijelaskan di bawah, tetapi mereka tidak memiliki apa yang diperlukan untuk mengganti buffer dalam alur kerja siapa pun.
Di sini saya sedang mengerjakan skema warna Vim. Dua jendela adalah pandangan berbeda dari buffer yang sama: yang atas berfungsi sebagai referensi, dengan tabel kode warna yang digunakan dalam skema warna, dan yang bawah adalah tempat saya bekerja:
Windows tidak dirancang sebagai proksi file dan tidak dapat dibuat menjadi proksi: mereka adalah "wadah" atau "viewports" yang dirancang untuk menawarkan kepada Anda tampilan ke buffer. Tidak lebih, tidak kurang.
"Cara tab"
Dengan alur kerja berbasis-tab, Anda pada dasarnya mencoba untuk meniru pengalaman pengguna yang biasa Anda gunakan dari editor sebelumnya sambil sepenuhnya mengabaikan sifat halaman tab Vim. Jika kita lupa sejenak bahwa strategi ini umumnya sangat tidak produktif, juga tidak mungkin, seperti halnya windows, untuk memaksa Vim mematuhi paradigma "satu file = satu tab" tanpa kehilangan banyak fleksibilitas.
Masih bekerja dengan file yang sama seperti di atas, tabline mengambil ruang yang signifikan tanpa manfaat. Semua file saya dan semua tab saya dipanggil javascript*.vim
jadi saya tidak bisa melakukan 3gt
dan yakin saya akan berakhir di tempat yang tepat dan tidak mungkin untuk mencapai tab tertentu dengan nama. Tambahkan ke fakta bahwa labelnya bisa sangat tidak membantu tetapi sangat logis [Quickfix List]
... Karena tidak ada cara praktis untuk mengikat file / buffer ke halaman tab, Anda pada dasarnya dibiarkan dengan hanya satu cara praktis untuk menavigasi antara halaman tab / buffer / file: bersepeda.
Dan ya, tabline saya musnah dengan hanya 8 tab, bayangkan jika saya punya 20!
Delapan buffer terbuka di delapan halaman tab (salah)
Dua tab untuk dua tugas spesifik (kanan)
Halaman tab adalah "wadah" atau "viewports" yang dirancang untuk berisi satu atau lebih jendela, itu sendiri juga "wadah" yang dirancang untuk berisi buffer.
Kesimpulannya
"Ahli Vim" (anggap saja saya dapat berbicara seolah-olah saya adalah salah satunya) tidak lebih suka buffer daripada tab: mereka hanya menggunakan Vim karena dirancang dan sangat nyaman dengan desain itu:
"Ahli Vim" memiliki 2, 30 atau 97 buffer yang dimuat dan sangat senang mereka tidak harus berurusan dengan distribusi spasial;
ketika mereka perlu membandingkan dua file atau bekerja di satu bagian dari buffer saat ini sambil menyimpan yang lain sebagai referensi, "Ahli Vim" menggunakan windows karena itulah cara mereka dimaksudkan untuk digunakan;
ketika mereka perlu bekerja untuk sementara waktu di bagian proyek yang terpisah tanpa mengacaukan pandangan mereka saat ini, "Ahli Vim" memuat halaman tab baru.