Как перевернуть окна в vim?
Возможный дубликат:
Чтобы переключиться с вертикального разделения на горизонтальное, быстро разбить Vim
Если у меня есть 2 горизонтально разделенных окна, как их повернуть, чтобы получить 2 окна с вертикальным разделением?
А как переключать буферы?
Ответы
Ответ 1
Если вы разделите их по вертикали C-w J, чтобы переместить один снизу
Если вы разделите их по горизонтали C-w L, чтобы переместить один вправо
Чтобы повернуть в "столбце" или "строке" разделенных окон, C-w C-r
Для изменения макета окна можно использовать следующие команды. Например, когда есть два вертикально разделенных окна, CTRL-W K изменит это значение в горизонтально разделенные окна. CTRL-W H делает это наоборот.
Ответ 2
Ctrl-w H или введите :wincmd H
, чтобы перейти от макета по горизонтали к вертикали.
Ctrl-w J или введите :wincmd J
, чтобы перейти от макета по вертикали к горизонтали.
Ctrl-w r или введите :wincmd r
в , заменив два буфера, но сохраните макет окна тем же самым.
Ctrl-w w или введите :wincmd w
в переместите курсор между двумя окнами/буферами.
Возможно, вы захотите связать одну или несколько из этих последовательностей, чтобы сделать ее более быстрой для ввода. Я поместил это в свой .vimrc, чтобы , l переместил курсор в следующий буфер на текущей вкладке:
let mapleader = ","
nmap <Leader>l <C-w>w
Ответ 3
CTRL - W SHIFT - H будет вращать ориентацию, CTRL - W H перемещается в левое окно, CTRL - W L переходит в право. См
:help split
и
:help ^w
для получения дополнительной информации.
Ответ 4
В настоящее время ответы на все отлично работают, если у вас открыто только два окна. Если у вас есть больше, логика перемещения окон вокруг может стать волосатой.
У меня есть это в моем .vimrc, чтобы я мог "выдернуть" и "удалить" буфер, а затем вставить его в окно поверх текущего буфера или как [v].
fu! PasteWindow(direction) "{{{
if exists("g:yanked_buffer")
if a:direction == 'edit'
let temp_buffer = bufnr('%')
endif
exec a:direction . " +buffer" . g:yanked_buffer
if a:direction == 'edit'
let g:yanked_buffer = temp_buffer
endif
endif
endf "}}}
"yank/paste buffers
:nmap <silent> <leader>wy :let g:yanked_buffer=bufnr('%')<cr>
:nmap <silent> <leader>wd :let g:yanked_buffer=bufnr('%')<cr>:q<cr>
:nmap <silent> <leader>wp :call PasteWindow('edit')<cr>
:nmap <silent> <leader>ws :call PasteWindow('split')<cr>
:nmap <silent> <leader>wv :call PasteWindow('vsplit')<cr>
:nmap <silent> <leader>wt :call PasteWindow('tabnew')<cr>