可能的复制品: 在 Vim 中快速从垂直分割切换到水平分割
如果我有2个水平分割窗口,如何旋转它们得到2个垂直分割窗口?
如何切换缓冲区?
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去从 从水平到垂直布局。
:wincmd H
Ctrl-w J或键入 :wincmd J去从 从垂直到水平布局。
:wincmd J
Ctrl-w r或键入 :wincmd r到 交换两个缓冲区但保持窗口布局不变。
:wincmd r
在两个窗口/缓冲区之间输入 :wincmd w到 移动光标。
: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>