如何在 Vim 中翻转窗口?

可能的复制品:
在 Vim 中快速从垂直分割切换到水平分割

如果我有2个水平分割窗口,如何旋转它们得到2个垂直分割窗口?

如何切换缓冲区?

61097 次浏览

CTRL-W SHIFT-H将旋转方向,CTRL-W H移动到左边窗口,CTRL-W L移动到右边

:help split

还有

:help ^w

了解更多信息。

如果你让他们垂直分裂 C-wJ移动到底部之一

如果你让他们水平分开 C-wL向右移动一个

在拆分窗口的“列”或“行”中旋转,C-wC-r

下列命令可用于更改窗口布局, 当有两个垂直分割窗口时,CTRL-WK 将在 水平分割窗口。 CTRL-W H 则相反。

Ctrl-w H或键入 :wincmd H去从 从水平到垂直布局。

Ctrl-w J或键入 :wincmd J去从 从垂直到水平布局。

Ctrl-w r或键入 :wincmd r交换两个缓冲区但保持窗口布局不变。

在两个窗口/缓冲区之间输入 :wincmd w移动光标

您可能希望绑定这些序列中的一个或多个,以使输入速度更快。我把这个放在我的。Vimrc,以便 ,l将光标移动到当前选项卡中的下一个缓冲区:

let mapleader = ","
nmap <Leader>l <C-w>w

如果您只打开两个窗口,那么当前的答案都能很好地工作。如果您拥有的数量超过这个数量,那么移动窗口的逻辑可能会非常复杂。

我有这个在我的。Vimrc 允许我‘ yank’和‘ delete’一个缓冲区,然后将它粘贴到当前缓冲区上的一个窗口中,或者作为[ 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>