Terkadang saya perlu memindahkan windows ke tab yang sudah ada, dan saya bertanya-tanya apakah ada pintasan perintah / keyboard yang bisa melakukan ini. Saya tahu saya bisa menutup jendela, beralih ke tab, dan kemudian membukanya di split baru, tapi saya bertanya-tanya apakah ada cara yang lebih pendek untuk mencapai ini. Perhatikan bahwa saya ingin memindahkannya ke tab yang sudah ada , bukan tab baru seperti <C-w>T
halnya.
vim-windows
tabbed-user-interface
Pohon cemara
sumber
sumber
Jawaban:
Meskipun ada perintah untuk memindahkan jendela yang ada di halaman tab saat ini (yaitu memengaruhi tata letak jendela dengan memutar, mengubah ukuran, dan memindahkan), tidak ada perintah untuk memindahkan jendela ke tab lain.
Karena jendela hanyalah viewport ke buffer yang dimuat, Anda harus:
:close!
jendela.:sbuffer
nomor buffer untuk membukanya kembali.Anda akan kehilangan opsi spesifik jendela apa pun karena hal ini. Anda dapat menyimpan dan mengembalikannya dalam skrip juga.
sumber
:b ab
(tab-lengkapi sisanya)ab
hanya huruf acak, ganti dengan awal nama file yang Anda inginkan.:b
tab-completion telah bekerja sangat baik untuk saya, biasanya dapat menemukan sumber buffer yang tepat berdasarkan hanya satu huruf dan 1-2Tab
penekanan tombol.Manfaat dari pendekatan ini terhadap Ingo adalah kurangnya memperhatikan atau mengingat apa pun, yang berarti beban kognitif lebih sedikit. Nama file yang sudah Anda ketahui.
sumber
Dua perintah yang didefinisikan di bawah ini memindahkan semua buffer dari tab tangan kanan ke tab saat ini dan kemudian tutup tab tangan kanan.
Mtabsp
memindahkannya dengan membelah secara horizontal danMtabvsp
membelah secara vertikal. Anda perlu memindahkan tab gabungan sebelum menggunakan perintah. Gunakan+tabm
,-tabm
atau<n>tabm
.Mempersiapkan
Tambahkan skrip vim di bawah ini ke
vimrc
:Rincian teknis
Fungsi Mtab menerima satu parameter
vert
. Ini menentukan apakah tab saat ini dipisah secara horizontal atau vertikal.Hasil yang diinginkan dicapai dengan langkah-langkah berikut:
Jika tab kita saat ini adalah yang terakhir, perintahnya diabaikan.
sumber
Jika ini adalah buffer file (tidak akan berfungsi untuk buffer awal, dll.), Anda dapat:
:let @f=@%
ENTER - di jendela sumber;:echo @f
:e␣
Ctrl-RfENTERCatatan penting: langkah terakhir tidak akan berfungsi dengan benar jika path berisi spasi atau beberapa karakter khusus! :-( Sebagai solusinya, perintah berikut, sedikit lebih panjang harus bekerja untuk jalur dengan spasi (meskipun mungkin masih gagal untuk beberapa karakter khusus lainnya):
:e␣"
Ctrl-Rf"
ENTER(yaitu, mengutip hasil Ctrl-R, f )
Terinspirasi oleh jawaban dari lkraav dan ingo-karkat .
sumber