Memberi nomor baru daftar buffer

29

Setelah saya mengerjakan proyek untuk sementara waktu, saya mulai melihat celah besar antara nomor buffer berturut-turut. Ini karena buffer di antara mereka terhapus karena berbagai alasan. Sayangnya, ini bisa membuatnya canggung untuk melompat ke buffer tertentu, atau memilih berbagai buffer, setelah mengetik :ls. Apakah ada cara untuk memberi nomor baru semua buffer terbuka, mulai dari satu, tanpa membuka semua file lagi?

batal-pointer
sumber

Jawaban:

21

Tidak (tidak tanpa menghapus buffer).

Vim tidak mendukung penetapan nomor buffer secara manual atau memesan ulang buffer setelah Anda membukanya. Filsafatnya adalah bahwa setiap buffer mendapat pengidentifikasi yang diperbaiki untuk masa pakai buffer itu (dalam bantuannya :ls, ia mencatat bahwa "setiap buffer memiliki nomor unik. Angka itu tidak akan berubah ...").

Anda bisa menggunakan daftar argumen. Masukkan semua buffer terbuka ke dalam daftar argumen, hapus semua buffer yang beredar, lalu buka semua yang ada di daftar argumen. Perintah berikut akan mencapai itu:

  • :argdel * (hapus daftar argumen yang ada)
  • :bufdo argadd % (untuk setiap buffer, tambahkan path buffer ke daftar)
  • :1,1000bd (hapus buffer 1 hingga 1000; mungkin ada cara yang lebih baik untuk melakukan ini)
  • :argdo e (untuk setiap argumen, edit argumen itu)

Ini akan memberi Anda buffer kosong ekstra yang terbuka ketika Anda menghapus semua buffer sebelumnya, tetapi itu adalah perkiraan yang wajar dari fungsionalitas yang Anda inginkan. Anda bisa saja :bdbuffer tambahan itu.


sumber
1
Jawaban Anda mengatakan tidak, tetapi sepertinya itu berhasil!
aharris88
(Maksud saya "tidak" dalam arti bahwa Anda tidak dapat melakukannya tanpa membuka kembali file). Apakah itu benar-benar nomor baru dari 1 untuk Anda? Saya pikir itu terjadi ketika saya pertama kali mencobanya, tetapi sekarang saya melihatnya tidak memberi nomor baru untuk saya?
Ya, itu baru bagi saya.
aharris88
Ya, saya hanya bodoh, saya menemukan kesalahan saya.
"setiap buffer mendapat pengidentifikasi yang diperbaiki untuk seumur hidup dari buffer itu" sebenarnya sesi!
14

"nomor buffer menjadi gila" Katakan padaku tentang itu! Pada akhir hari saya lebih dari 100 buffer mudah. Tapi untungnya, seperti yang dapat Anda lihat di animasi ini, Anda memiliki tabpenyelesaian untuk nama buffer.

Hit: b se <Tab>

Jadi, meskipun Anda tidak dapat memberi nomor baru pada buffer, Anda masih bisa melompat-lompat dengan mudah.

Saya tidak tahu apakah itu jelas dari animasi tetapi, "penyelesaian tab" tidak seperti penyelesaian tab baris perintah. Ini lebih seperti "pengganti tab penentu ambiguitas". Berarti pada baris perintah saya harus mengetik sctabkemudian setabtetapi di sini vim melakukan pencarian 'se' dan menggantinya dengan pertandingan pertama (dan hanya). Jika saya mengetiknya testtabakan cocok dengan 'menghasilkan_test_data.py' dan kemudian tabakan mencocokkan 'skrip / setup_test_data.sh' dan kemudian tabakan berputar lagi di sekitar, dll.

Intinya adalah bahwa Anda bisa terbiasa mengetik hanya :b <minimum amount of unambiguous characters>tabuntuk melompat ke dokumen yang Anda inginkan. Saya pikir ini bahkan lebih baik daripada mengingat "buffer saya adalah 1: foo 2: bar 3: etc" yang merupakan cara saya melakukannya ketika saya masih pemula.

Bruno Bronosky
sumber
7

Anda dapat menggunakan vim-airline. Plugin ini memiliki perilaku yang mungkin memperbaiki masalah Anda:

Lihat baris 470-479 di airline.txt

Ini tidak akan mengubah nomor buffer, tetapi Anda dapat memilih buffer dari kiri ke kanan dengan nomor baris di tabline. Ini adalah pengaturan saya untuk maskapai di .vimrc:

"set airline 
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#tab_nr_type = 1 " tab number
let g:airline#extensions#tabline#show_tab_nr = 1
let g:airline#extensions#tabline#formatter = 'default'
let g:airline#extensions#tabline#buffer_nr_show = 1
let g:airline#extensions#tabline#fnametruncate = 16
let g:airline#extensions#tabline#fnamecollapse = 2

let mapleader=","

let g:airline#extensions#tabline#buffer_idx_mode = 1

nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
nmap <leader>3 <Plug>AirlineSelectTab3
nmap <leader>4 <Plug>AirlineSelectTab4
nmap <leader>5 <Plug>AirlineSelectTab5
nmap <leader>6 <Plug>AirlineSelectTab6
nmap <leader>7 <Plug>AirlineSelectTab7
nmap <leader>8 <Plug>AirlineSelectTab8
nmap <leader>9 <Plug>AirlineSelectTab9

Baris tab saya: Baris tab saya

HJIahu
sumber
luar biasa! I love it :)
Blasco
Bukan jawaban untuk pertanyaan tetapi itu menambal masalah dengan nomor buffer gila. Hanya rekomendasi untuk menunjukkan buffer_number saja: switch_buffers_and_tabs=1danbuffer_idx_mode=0
caligari
6

Menurut dokumentasi, nomor buffer tidak pernah berubah

    Each buffer has a unique number.  That number will not change,
    so you can always go to a specific buffer with ":buffer N" or
    "N CTRL-^", where N is the buffer number.

Satu-satunya cara saya dapat berpikir untuk memberi nomor baru buffer adalah untuk me-restart vim.

aharris88
sumber
0

Pertanyaan lama, tetapi karena ini muncul di bagian atas dalam pencarian google, saya akan meninggalkan ini di sini untuk pencarian selanjutnya. Seperti yang disarankan Bruno, pencarian fuzzy yang mendukung daftar buffer adalah cara yang harus dilakukan. Saya pribadi menggunakan dan merekomendasikan fzf-vim . Ini memberikan perintah :FZFBuffers, yang terlihat seperti ini:

masukkan deskripsi gambar di sini

Nomor penyangga ditampilkan di sebelah kiri jika Anda membutuhkannya, tetapi dengan fuzzy finder, Anda mungkin tidak perlu menggunakannya lagi. Hanya ingat bagian dari nama file, dan biasanya 2-5 penekanan tombol saja. Secara pribadi, saya telah memetakan perintah ini ke tombol, dan beralih antar buffer hampir instan untuk saya!

verboze
sumber