Bagaimana cara memesan ulang tab yang terbuka?

16

Katakanlah saya memiliki empat membuka file: file0.txt, file1.txt, file2.txt, dan file3.txt. Saya membuka semuanya dalam urutan itu sebagai tab. Jadi pemesanan tab saya adalah ini:

  • file0.txt
  • file1.txt
  • file2.txt
  • file3.txt

Lalu katakanlah bahwa saya ingin menyusun ulang tab saya sehingga file2.txtmuncul sebelumnya file1.txt:

  • file0.txt
  • file2.txt
  • file1.txt
  • file3.txt

Bagaimana aku melakukan itu? Apakah ada perintah Vim untuk memindahkan tab saat ini ke kiri atau ke kanan, atau menyusun ulang tab yang sedang dibuka?

Sam Estep
sumber

Jawaban:

18

Anda bisa menggunakan tabmoveperintah. ( :help tabmoveakan memberi tahu Anda semua yang perlu Anda ketahui)

Perintah ini mengambil dua jenis parameter:

Tanda ( +atau -) diikuti oleh nomor:

  • :tabmove +2 akan memindahkan tab 2 tempat Anda ke kanan
  • :tabmove -2 akan melakukan hal yang sama ke kiri.

Anda juga dapat menggunakan perintah dengan nomor sederhana untuk mengatur posisi tab:

  • :tabmove 0 akan menempatkan tab sebagai yang pertama
  • :tabmove 2 akan meletakkan tab di posisi ketiga
  • :tabmove akan menempatkan tab sebagai yang terakhir

Saya juga menaruh garis-garis itu di kotak saya .vimrc

" move current tab to left/right
noremap <Leader><Left>  :execute 'silent! tabmove ' . (tabpagenr()-2)<CR>
noremap <Leader><Right> :execute 'silent! tabmove ' . tabpagenr()<CR>

Mereka memungkinkan Anda untuk memindahkan tab saat ini dari satu tempat dengan kombinasi Leader+ Right arrowdan Leader+ Left arrowmungkin mereka bisa berguna bagi Anda.

Sunting: Seperti @TomMcDo tunjukkan dalam komentar, pemetaan sebelumnya dapat disederhanakan dan masih berfungsi dengan baik:

noremap <Leader><Left>  :tabmove -1<CR>
noremap <Leader><Right> :tabmove +1<CR>
statox
sumber
3
Dalam pemetaan Anda, mengapa tidak menggunakan :tabmove -1dan :tabmove +1?
tommcdo
@tommcdo: Ya ... Saya membuat pemetaan itu beberapa bulan yang lalu dan saya tidak tahu apa yang ada dalam pikiran saya saat ini. Dan saya tidak sengaja memikirkannya ketika saya menyalinnya dalam jawaban saya. Pokoknya Anda benar sekali, saya akan mengedit jawaban saya untuk membuatnya lebih sederhana, terima kasih untuk
tajuknya