Saya telah melihat kemampuan untuk menggunakan tab di Vim (dengan :tabe
,, :tabnew
dll.) Sebagai pengganti praktik saya saat ini memiliki banyak file yang dibuka di jendela yang sama di buffer tersembunyi.
Saya ingin setiap file berbeda yang saya buka selalu ada di tabnya sendiri. Namun, ada beberapa hal yang menghalangi hal ini. Bagaimana cara memperbaikinya:
Saat perintah suka
gf
dan^]
lompat ke lokasi di file lain, file tersebut membuka buffer baru di tab saat ini. Apakah ada cara agar semua jenis perintah ini membuka file di tab baru, atau beralih ke tab yang ada dengan file jika sudah terbuka?Saat mengganti buffer yang bisa saya gunakan
:b <part of filename><tab>
dan itu akan melengkapi nama file di buffer yang ada.<part of filename>
bahkan bisa menjadi tengah nama file, bukan awal. Apakah ada yang setara untuk berpindah tab?
Agak terlambat ke pesta di sini tetapi terkejut saya tidak melihat yang berikut dalam daftar ini:
:tab sball
- ini membuka tab baru untuk setiap buffer terbuka.:help switchbuf
- ini mengontrol perilaku switching buffer, coba:set switchbuf=usetab,newtab
. Ini harus berarti beralih ke tab yang ada jika buffer terbuka, atau membuat yang baru jika tidak.sumber
switchbuf
-set switchbuf=useopen
bagus untuk menghindari perilaku menjengkelkan:make
,:vimgrep
dan perintah serupa yang mengubah buffer dalam tata letak jendela bahkan ketika buffer sudah ditampilkan.:se switchbuf=usetab,newtab
, ketika digunakanbn
untuk beralih buffer, masih membuka file buffer di tab saat ini alih-alih beralih ke tab yang ada? Apakah ada yang salah?Vim
:help window
menjelaskan kebingungan "tab vs buffer" dengan cukup baik.Membuka beberapa file dicapai dengan vim buffer . Di editor lain (mis. Notepad ++) ini dilakukan dengan tab, jadi nama tab di vim mungkin menyesatkan.
Windows bertujuan untuk membagi ruang kerja dan menampilkan beberapa file (buffer) secara bersamaan pada satu layar. Di editor lain, ini bisa dicapai dengan membuka banyak jendela GUI dan menatanya kembali di desktop.
Akhirnya di halaman tab analogi vim ini akan sesuai dengan beberapa desktop, yaitu pengaturan ulang windows yang berbeda.
Sebagai vim
help: tab-page
menjelaskan halaman tab dapat digunakan, ketika seseorang ingin mengedit file untuk sementara, tetapi tidak ingin mengubah apa pun dalam tata letak windows dan buffer saat ini. Dalam kasus seperti itu, halaman tab lain dapat digunakan hanya untuk tujuan mengedit file tertentu.Tentu saja Anda harus ingat bahwa menampilkan file yang sama di banyak halaman tab atau windows akan menghasilkan menampilkan copy (buffer) kerja yang sama.
sumber
buffer
= objek ,window
= panel , dantab
= jendela . Saya dapat bergerak di sekitar ruangan dan melihat dari jendela yang berbeda (tabs
). Jendela yang berbeda dapat memiliki jumlah, pengaturan, dan ukuran panel yang berbeda . Objek yang sama dapat dilihat secara bersamaan dari panel yang berbeda di jendela yang berbeda .vim
penggunaannya. Pada awalnya hanya ada jendela . Pengelola jendela kemudian memungkinkan Anda untuk membagi jendela menjadi panel (ubin WM) atau menjadi panel yang tumpang tindih (, WM mengambang) tetapi mereka masih menyebut masing-masing panel sebagai jendela. Sekarang tambahkan konsep ruang kerja di mana panel dapat ditampilkan di banyak ruang kerja. Jadi, dalam paradigma ini,buffer
= app ,window
= window dantab
= workspace .Berlawanan dengan beberapa jawaban lain di sini, saya mengatakan bahwa Anda dapat menggunakan tab sesuka Anda. vim dirancang agar fleksibel dan dapat disesuaikan, daripada memaksa Anda untuk bekerja sesuai dengan parameter yang telah ditentukan. Kita semua tahu bagaimana kita para programmer suka memaksakan "etika" kita pada orang lain, jadi pencapaian ini tentu saja merupakan fitur utama.
<C-w>gf
adalah tab yang setara dengangf
perintah buffer .<C-PageUp>
dan<C-PageDown>
akan beralih antar tab. (Dalam Byobu, kedua perintah ini tidak pernah bekerja untuk saya, tetapi mereka bekerja di luar Byobu / tmux. Alternatifnya adalahgt
dangT
.)<C-w>T
Akan memindahkan jendela saat ini ke halaman tab baru.Jika Anda lebih suka menggunakan vim menggunakan tab yang ada jika memungkinkan, daripada membuat tab duplikat, tambahkan
:set switchbuf=usetab
ke file .vimrc Anda. Anda dapat menambahkannewtab
ke daftar (:set switchbuf=usetab,newtab
) untuk memaksa perintah QuickFix yang menampilkan kompilasi kesalahan untuk dibuka di tab terpisah. Saya lebih sukasplit
, yang membuka kesalahan kompilasi di jendela terpisah.Jika dukungan mouse diaktifkan
:set mouse=a
, Anda dapat berinteraksi dengan tab dengan mengkliknya. Ada juga+
tombol secara default yang akan membuat tab baru.Untuk dokumentasi pada tab, ketikkan
:help tab-page
dalam mode normal. (Setelah Anda melakukannya, Anda dapat berlatih memindahkan jendela ke tab menggunakan<C-w>T
.) Ada daftar panjang perintah. Beberapa perintah jendela berhubungan dengan tab, jadi Anda mungkin ingin melihat dokumentasi itu juga melalui:help windows
.Tambahan: 2013-12-19
Untuk membuka banyak file dalam vim dengan setiap file di tab terpisah, gunakan
vim -p file1 file2 ...
. Jika Anda seperti saya dan selalu lupa menambahkan-p
, Anda dapat menambahkannya di akhir, karena vim mengikuti aturan penguraian opsi baris perintah normal. Atau, Anda dapat menambahkan pemetaan alias bashvim
kevim -p
.sumber
vim -p
Namun +1 untuk diketahui bahwa hanya hingga 10 tab yang akan ditampilkan secara default. File tambahan dimuat ke buffer, tetapi tidak ditampilkan di tab mereka sendiri.tabpagemax
pengaturanSaya mengalami masalah yang sama. Saya ingin tab berfungsi seperti buffer dan saya tidak pernah berhasil mengaturnya. Solusi yang akhirnya saya setujui adalah membuat buffer berperilaku seperti tab!
Periksa plugin yang disebut Mini Buffer Explorer , setelah diinstal dan dikonfigurasikan, Anda akan dapat bekerja dengan buffer dengan cara yang sama seperti tab tanpa kehilangan fungsionalitas apa pun.
sumber
Ini adalah jawaban untuk mereka yang tidak terbiasa dengan Vim dan datang dari editor teks lain (dalam kasus saya Sublime Text).
Saya membaca semua jawaban ini dan masih belum jelas. Jika Anda membacanya cukup banyak hal mulai masuk akal, tetapi butuh berjam-jam bolak-balik antara pertanyaan.
Hal pertama adalah, seperti yang dijelaskan orang lain:
Tab Pages , terdengar sangat mirip tab , mereka bertindak seperti tab dan sangat mirip tab di sebagian besar editor GUI lainnya, tetapi sebenarnya tidak. Saya pikir ini adalah model mental yang buruk yang dibangun di dalam Vim, yang sayangnya mengaburkan kekuatan ekstra yang Anda miliki dalam halaman tab.
Deskripsi pertama yang saya mengerti adalah dari jawaban @ crenate adalah bahwa mereka setara dengan beberapa desktop. Ketika dilihat dalam hal itu Anda hanya akan memiliki beberapa desktop terbuka tetapi memiliki banyak jendela GUI terbuka di masing-masing.
Saya akan mengatakan mereka mirip dengan editor / browser lain:
Ketika Anda melihat mereka seperti itu, Anda menyadari kekuatan mereka bahwa Anda dapat dengan mudah mengelompokkan set file (buffer) bersama-sama misalnya file CSS Anda, file HTML Anda dan file JS Anda di halaman tab yang berbeda. Yang sebenarnya cukup mengagumkan.
Deskripsi lain yang menurut saya membingungkan
Viewport
Ini tidak masuk akal bagi saya. Sebuah viewport yang walaupun memiliki istilah kamus yang ditentukan , saya hanya mendengar merujuk ke Vim windows di
:help window
doc. Viewport bukan istilah yang pernah saya dengar berkaitan dengan editor seperti Sublime Text, Visual Studio, Atom, Notepad ++. Bahkan saya belum pernah mendengarnya untuk Vim sampai saya mulai mencoba menggunakan halaman tab.Jika Anda melihat halaman tab seperti beberapa desktop, maka merujuk ke desktop sebagai satu jendela tampaknya aneh.
Ruang kerja
Ini mungkin lebih masuk akal, definisi kamus adalah:
Jadi itu seperti tempat Anda menyimpan sekelompok penyangga.
Saya awalnya tidak terdengar seperti konsep Sublime Text tentang ruang kerja yang merupakan daftar semua file yang Anda buka di proyek Anda:
Namun memikirkannya lebih lanjut, ini sebenarnya setuju. Jika Anda menganggap halaman tab Vim seperti proyek Teks Sublime, maka akan aneh jika hanya memiliki satu file terbuka di setiap proyek dan terus beralih di antara proyek. Karenanya mengapa menggunakan halaman tab untuk membuka hanya satu file itu aneh.
Koleksi jendela
The
:help window
mengacu ke halaman tab dengan cara ini. Ditambah banyak jawaban lain menggunakan konsep yang sama. Namun sampai Anda mengetahui apa itu jendela vim, maka itu tidak banyak berguna, seperti membangun istana di atas pasir.Seperti yang saya sebutkan di atas, jendela vim sama dengan viewport dan diam-diam dijelaskan dengan baik di artikel linux.com ini :
Saya merasa aneh bahwa halaman tab disebut sebagai kumpulan jendela, bukan kumpulan buffer. Tapi saya kira Anda dapat memiliki dua halaman tab terpisah masing-masing terbuka dengan beberapa jendela semua menunjuk pada buffer yang sama, setidaknya itulah yang saya mengerti sejauh ini.
sumber
Melihat pada: tab bantuan sepertinya vim tidak ingin bekerja seperti yang Anda lakukan ...
Buffer dibagi di seluruh tab, jadi sepertinya tidak mungkin untuk mengunci buffer yang diberikan hanya muncul di tab tertentu.
Tapi itu ide yang bagus.
Anda mungkin bisa mendapatkan efek yang Anda inginkan dengan menggunakan terminal yang mendukung tab, seperti terminal multi-gnome, lalu menjalankan instance vim di setiap tab terminal. Tidak sempurna, meskipun ...
sumber
Anda dapat memetakan perintah yang biasanya memanipulasi buffer untuk memanipulasi tab, seperti yang telah saya lakukan dengan gf di .vimrc saya:
Saya yakin Anda dapat melakukan hal yang sama dengan [^
Saya tidak berpikir vim mendukung ini untuk tab (belum). Saya menggunakan gt dan gT untuk masing-masing pindah ke tab berikutnya dan sebelumnya. Anda juga dapat menggunakan Ngt, di mana N adalah nomor tab. Satu hal yang saya miliki adalah bahwa, secara default, nomor tab tidak ditampilkan di baris tab. Untuk memperbaikinya, saya meletakkan beberapa fungsi di akhir file .vimrc saya (saya tidak menempel di sini karena panjang dan tidak memformat dengan benar).
sumber
<c-w>gf
akan membuka nama file di bawah kursor di tab baruSaya menggunakan buffer seperti tab, menggunakan plugin BufExplorer dan beberapa makro:
Dengan BufExplorer Anda tidak memiliki bilah tab di bagian atas, tetapi di sisi lain itu menghemat ruang di layar Anda, ditambah lagi Anda dapat memiliki jumlah file / buffer terbuka dan daftar buffer dapat dicari ...
sumber
Jika Anda ingin buffer berfungsi seperti tab, lihat plugin tabline .
Itu menggunakan satu jendela, dan menambahkan garis di atas untuk mensimulasikan tab (hanya menampilkan daftar buffer). Ini keluar sejak lama ketika tab hanya didukung di GVim tetapi tidak di vim baris perintah. Karena ini hanya beroperasi dengan buffer, semuanya terintegrasi dengan baik dengan sisa vim.
sumber