如何在vim中翻转窗户?

Arn*_*psa 118 vim

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

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

以及如何切换缓冲区?

seh*_*ehe 235

如果将它们垂直拆分C-wJ以将一个移动到底部

如果您将它们水平分割C-wL以向右移动一个

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

以下命令可用于更改窗口布局.例如,当有两个垂直分割窗口时,CTRL-W K将在水平分割窗口中更改它.CTRL-W H反过来做了.

  • 要旋转分割窗口,我相信你实际上只需要"Cw r",而不是"Cw Cr". (15认同)
  • 我终于开始"感觉"了.令人惊讶的是,我没有幸存下来这些命令. (9认同)
  • @TomLord也有效.虽然那不需要"少".这是不同的.我碰巧认为"Cw r"有点尴尬(特别是如果重复的话) (2认同)

Nic*_*ick 81

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
Run Code Online (Sandbox Code Playgroud)

  • `Ctrl-w` `r` 是最好的! (2认同)

Wil*_*ell 11

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

:help split

:help ^w

欲获得更多信息.


Gre*_*ton 6

如果你只打开两个窗口,那么当前的答案都很有效.如果你有更多,那么移动窗户的逻辑就会变得毛茸茸.

我在我的.vimrc中有这个允许我'yank'和'删除'一个缓冲区然后将它粘贴到当前缓冲区的窗口或作为[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>
Run Code Online (Sandbox Code Playgroud)