Buka buffer sebagai pemisahan vertikal di VIM

176

Jika Anda mengedit file dalam VIM dan kemudian Anda perlu membuka buffer yang ada (mis. Dari daftar buffer Anda :buffers), bagaimana Anda bisa membukanya dalam split vertikal?

Saya tahu bahwa Anda sudah dapat membukanya dengan split normal seperti:

:sbuffer N

Wehere Nadalah nomor buffer yang Anda inginkan, namun, di atas membuka Nbuffer itu secara horizontal, bukan vertikal.

Saya juga sadar bahwa Anda dapat mengubah penempatan jendela setelah membuka dan memiliki Vertical Split seperti:

Ctrl-W H
Ctrl-W L

Yang secara vertikal akan membagi jendela ke kanan atau ke kiri.

Tampak bagi saya bahwa jika ada sbufferharus ada vsbuffertetapi itu tidak ada (tidak saya sadari)

Harap perhatikan juga bahwa saya tidak mencari plugin untuk menyelesaikan pertanyaan ini. Saya tahu tentang banyak plugin yang akan memungkinkan Anda melakukan ini.

Saya yakin saya mungkin kehilangan sesuatu yang sudah ada di sana.

EDIT: Dengan semangat kolaborasi terbaik, saya telah membuat Fungsi sederhana dengan Pemetaan jika orang lain menemukan masalah ini dan tidak ingin menginstal plugin:

Fungsi:

" Vertical Split Buffer Function
function VerticalSplitBuffer(buffer)
    execute "vert belowright sb" a:buffer 
endfunction

Pemetaan:

" Vertical Split Buffer Mapping
command -nargs=1 Vbuffer call VerticalSplitBuffer(<f-args>)

Ini menyelesaikan tugas membuka buffer di split kanan, jadi untuk buffer 1, Anda akan menyebutnya seperti:

:Vbuffer 1
alfredodeza
sumber

Jawaban:

206

Mencoba:

:vert sb N

yang akan membuka pemisahan vertikal kiri (secara default, kecuali jika Anda telah memodifikasi beberapa opsi).

Untuk membuka pemisahan ke kanan, di sisi lain:

:vert belowright sb N
Jeet
sumber
5
bukankah agak aneh untuk tidak memilikinya vsbuffer N? Mengganggu. Jawaban Anda berhasil. Terima kasih!
alfredodeza
13
Saya selalu merasa harus ada vsbufferjuga, dan saya juga sering lupa Ctrl-w Tmembuka buffer di tab baru (atau saya ingin melakukannya dengan buffer yang saat ini tidak aktif atau tidak terlihat). Jadi sebagai alternatif, Anda dapat menggunakan bilah untuk kedua kasus ini, yang menurut saya lebih mudah diingat daripada jawaban valid @ Jeet: :vsp | b Nand :tabe | b N.
ches
Saya suka bahwa perintah ini memungkinkan Nuntuk dilengkapi otomatis (yang tampaknya tidak mungkin dengan perintah di jawaban lain). Keduanya dijungkirbalikkan.
David Rivers
124

:vsp | b1

1 menjadi beberapa nomor penyangga. Gunakan buffersuntuk mendaftar semua buffer.

Berikut adalah beberapa info tambahan tentang pemisahan, jika Anda tertarik. Tautan

Jerinaw
sumber
9
Anda juga bisa menggunakan :ls, yang sepertinya menjadi jalan pintas untuk :buffers.
dskecse
3
Anda juga dapat melakukannya:vsp | b <buffer name>
Kenny Bambridge
4
@ KennyBambridge bahkan lebih baik - Anda hanya perlu mengetikkan bagian dari nama buffer (peka huruf besar kecil) dan kemudian tekan tab untuk menggilir daftar yang difilter
icc97
Ingatlah bahwa meskipun Tautan yang disediakan oleh @Jerinaw bagus, terminologi pada halaman itu benar-benar menyesatkan sehingga Anda harus membaca komentar di halaman itu juga untuk mengklarifikasi.
NeilG
5

Anda dapat meredakan rasa sakit dengan menambahkan yang berikut ini ke .vimrc Anda

cabbrev vb vert sb

Sekarang Anda dapat menggunakannya dengan cara berikut.

:vb <buffer>
Vamshi Kadaru
sumber
ini bagus, versi panjangnya juga menawarkan buffer autocompletion! Saya juga tidak tahu kabar, terima kasih.
kidpixo
2

Anda juga dapat menggabungkan :lsdaftar buffer Anda saat ini dan perintah untuk membuka buffer yang diinginkan

  1. jendela saat ini: :b <N/bufname>
  2. perpecahan vertikal: :vsp | b <N/bufname>
  3. pemisahan horisontal: :sp | b <N/bufname>

Untuk ini, saya telah menambahkan pemetaan berikut ke saya ~/.vimrc(urutan pemetaan mewakili daftar jendela yang diinginkan)

 nnoremap <leader>b :ls<cr>:b<space>
 nnoremap <leader>v :ls<cr>:vsp<space>\|<space>b<space>
 nnoremap <leader>s :ls<cr>:sp<space>\|<space>b<space>

Berdasarkan ini, Anda dapat melihat daftar buffer segera setelah Anda menekan

  1. <leader>b
  2. <leader>v
  3. <leader>s

dan kemudian cukup masukkan nomor buffer yang diinginkan N. Ini kemudian akan membuka buffer di jendela yang diinginkan. Anda tentu saja masih dapat menggunakan bagian dari nama buffer bufnamejuga.

Saya memetakan <leader>ke ,berdasarkan

let mapleader = ","

Bagi sebagian orang (misalnya saya) ini bahkan bisa menggantikan plugin seperti MiniBufExpl dan dengan demikian menghemat ruang di layar.

Wolfson
sumber
0

Anda dapat menggunakan Neovim, seperti itu:

autocmd FileType python nmap <F5> :rightbelow vertical split <bar> :term python %<cr>
Arobt
sumber