Відкрийте буфер як вертикальний розкол у VIM


176

Якщо ви редагуєте файл у VIM, а потім вам потрібно відкрити існуючий буфер (наприклад, зі свого списку буферів:), :buffersяк ви можете відкрити його у вертикальному розбитті?

Я знаю, що ви вже можете відкрити його звичайним розщепленням:

:sbuffer N

Немає Nпотрібного номера буфера, однак вищезазначене відкриває цей Nбуфер горизонтально, а не вертикально.

Я також усвідомлюю, що ви можете змінити розташування вікон після відкриття та мати вертикальний розділ так:

Ctrl-W H
Ctrl-W L

Який вертикально розділить вікно праворуч чи ліворуч.

Мені здається, що якщо є, sbufferто має бути, vsbufferале такого не існує (не те, що я знаю)

Також зауважте, що я не шукаю плагін для вирішення цього питання. Я знаю про безліч плагінів, які дозволять вам це зробити.

Я впевнений, що, можливо, мені не вистачає чогось, що вже є.

EDIT: У найкращому дусі співпраці я створив просту функцію з картографуванням, якщо хтось інший натикається на цю проблему і не хоче встановлювати плагін:

Функція:

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

Картографування:

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

Це виконує завдання відкрити буфер у правильному розщепленні, тому для буфера 1 ви б назвали це так:

:Vbuffer 1

Відповіді:


206

Спробуйте:

:vert sb N

який відкриє лівий вертикальний розріз (за замовчуванням, якщо ви не змінили деякі параметри).

Щоб відкрити проділ праворуч, з іншого боку:

:vert belowright sb N

5
хіба це не здається дивним vsbuffer N? Дратівливий. Ваша відповідь це нігті. Дякую!
alfredodeza

13
Я завжди відчуваю, що має бути vsbufferзанадто багато, і також часто забуваю Ctrl-w Tвідкрити буфер на новій вкладці (або я хочу це зробити з буфером, який наразі не є активним або видимим). Тому в якості альтернативи ви можете використовувати смужку для будь-якого з цих випадків, які мені легше запам’ятати, ніж дійсна відповідь @ Jeet: :vsp | b Nі :tabe | b N.
чес

Мені подобається, що ця команда дозволяє Nавтоматично завершитись (що не здається можливим за допомогою команди в іншій відповіді). Обидва, проте, віддали перевагу.
Девід Ріверс

124

:vsp | b1

1 - деякий номер буфера. Використовуйте buffersдля переліку всіх буферів.

Ось додаткова інформація про розбиття, якщо вас цікавить. Посилання


9
Ви також можете використовувати :ls, що, здається, є ярликом :buffers.
dskecse

3
Ви також можете зробити:vsp | b <buffer name>
Кенні Бамбридж

4
@KennyBambridge ще краще - вам потрібно лише ввести частину імені буфера (залежно від регістру), а потім натиснути на вкладку, щоб перейти через відфільтрований список
icc97

Майте на увазі, що хоча Посилання, яке надає @Jerinaw, добре, термінологія на цій сторінці серйозно вводить в оману, тому вам потрібно буде прочитати коментарі на цій сторінці, а також для уточнення.
NeilG

5

Ви можете полегшити свій біль, додавши наступне до свого .vimrc

cabbrev vb vert sb

Тепер ви можете використовувати його наступним чином.

:vb <buffer>

це приємно, розширена версія пропонує також буферизацію автозавершення імені! Я теж не знав каббрев, дякую.
kidpixo

2

Ви також можете комбінувати :lsсписок, який містить ваші поточні буфери та команди для відкриття потрібного буфера в будь-якому

  1. поточне вікно: :b <N/bufname>
  2. вертикальний розкол: :vsp | b <N/bufname>
  3. горизонтальний розкол: :sp | b <N/bufname>

Для цього я додав наступні відображення до свого ~/.vimrc(порядок відображень відображає вищезазначений список бажаних вікон)

 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>

Виходячи з цього, ви можете побачити список буферів, як тільки натиснете

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

а потім просто введіть потрібний номер буфера N. Після цього відкриється буфер у потрібному вікні. Ви, звичайно, також можете використовувати частину імені буфера bufname.

Я склав карту <leader>на ,основі

let mapleader = ","

Для деяких людей (наприклад, мене) це навіть може замінити плагіни на зразок MiniBufExpl і таким чином заощадити місце на екрані.


0

ви можете використовувати Neovim, наприклад:

autocmd FileType python nmap <F5> :rightbelow vertical split <bar> :term python %<cr>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.