如何在vim中翻转窗口?
可能重复:
在Vim中从垂直分割切换到水平分割
如果我有2个水平分割窗口,如何旋转它们以获得2个垂直分割窗口?
而如何切换缓冲区?
如果你有他们垂直分裂Cw J移动到底部
如果你把它们水平分割,把它向右移动一个
要在分割窗口的“列”或“行”中旋转,
以下命令可用于更改窗口布局。 例如,当有两个垂直分割窗口时,CTRL-W K将在水平分割窗口中改变它。 CTRL-W H反其道而行之。
按下Ctrl- H或键入:wincmd H
从水平走向垂直布局。
Ctrl-w J或键入:wincmd J
从垂直走向水平布局。
按Ctrl-w或键入:wincmd r
交换两个缓冲区,但保持窗口布局相同。
按住Ctrl键或键入:wincmd w
将光标在两个窗口/缓冲区之间移动 。
您可能希望绑定一个或多个这些序列,以便更快地input。 我把它放在我的.vimrc中,所以我把光标移动到当前选项卡中的下一个缓冲区:
let mapleader = "," nmap <Leader>l <Cw>w
CTRL – W SHIFT – H将旋转方向, CTRL – W H移动到左侧窗口, CTRL – W L移动到右侧。 看到
:帮助分裂
和
:帮助^ w
了解更多信息。
如果你只有两个窗口打开,目前的答案很好。 如果你有更多的事情,移动窗口的逻辑可能会变得毛茸茸的。
我在我的.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>