Vim: Mover janela para a esquerda / direita?


215

No Vim, é possível "mover" uma janela para a esquerda ou direita? Por exemplo, semelhante a <c-w> rou <c-w> x, mas esquerda / direita em vez de cima / baixo?

Por exemplo, se eu tenho esse layout:

+---+---+---+
|   |   +---+
| A +---+---+
|   |   |   |
+---+---+---+

Eu gostaria de transformar isso:

+---+---+---+
|   |   +---+
+---+ A +---+
|   |   |   |
+---+---+---+

O que é difícil / irritante de se fazer <c-w> {H,J,K,L}.

Respostas:


425

Ctrl w fornece o "modo de comando do Windows", permitindo os seguintes modificadores:

  • Ctrl w+ R- Para girar as janelas para cima / esquerda.

  • Ctrl w+ r- Para girar as janelas para baixo / direita.

Você também pode usar o "modo de comando do Windows" com as teclas de navegação para alterar a posição da janela:

  • Ctrl w+ L- Mova a janela atual para a "extrema direita"

  • Ctrl w+ H- Mova a janela atual para a "extrema esquerda"

  • Ctrl w+ J- Mova a janela atual para a "parte inferior"

  • Ctrl w+ K- Mova a janela atual para o "topo"

Confira :help window-movingpara mais informações


2
<c-w> rapenas gira verticalmente.
David Wolever

10
@ David Wolever, você precisa usar as letras maiúsculas nesse caso, algo como: Ctrl-W + Shift-L, por exemplo. Eu acho que isso pode ser o que você está procurando.
Ricardo Valeriano

@ David - acabou de testar isso e <cw> r trabalhou horizontalmente para mim.
Ostler.c

3
@ ostler.c crie uma divisão vertical e, em seguida, crie uma divisão horizontal dentro de uma das colunas. Agora use <cw> ree apenas alterna as duas janelas dentro de uma divisão vertical.
Chev

1
@ nn0p não, eles movem as janelas. <cw> h moverá o cursor para a próxima janela à esquerda, enquanto <cw> H moverá a janela atual (junto com o cursor) para a extrema esquerda.
MarSoft 27/07

58

Este é o mais útil para mim (e provavelmente é a resposta certa para a pergunta):

  • Ctrl W+ xOU Ctrl W+ Ctrl x- Gira a janela focalizada atual com a janela mais próxima à direita.

muito útil quando você está no meio dos painéis e deseja trocar com o da direita. Obrigado por este!
Daniel Andrei Mincă

8

Deseja mover a janela em si ou apenas a posição do cursor?

Ao lado de rotação ou de bicicleta como você já mencionado, é apenas possível mover a janela se ao longe superior, inferior, esquerda ou direita, respectivamente com:

^W K
^W J
^W H
^W L

Eu não acho que exista uma maneira embutida padrão de mover uma janela um lugar para a direita.


1
Eu quero mover as janelas, não o cursor.
David Wolever

1
Então este é o máximo que você pode ir com os comandos janela vim, se isso foi útil para você, por favor marcá-lo como a solução :-)
Bitterzoet

2
Eu diminuiria o voto do @Bitterzoet se pudesse. Veja acima respostas
Nathan

1

Realmente parece que o vim não pode fazer isso com os principais mapas dos padrões. A documentação diz que os comandos ^ WK, J, H e L funcionam criando a divisão e abrindo o buffer na posição now, então escrevi uma função para a mesma: Esconda o buffer, mova para a esquerda, divida e, em seguida, abra o buffer original:

" Rotate a window horizontally to the left
function! RotateLeft()
    let l:curbuf = bufnr('%')
    hide
    wincmd h
    split
    exe 'buf' l:curbuf
endfunc

" Rotate a window horizontally to the right
function! RotateRight()
    let l:curbuf = bufnr('%')
    hide
    wincmd l
    split
    exe 'buf' l:curbuf
endfunc

-6
  • ctrl + h mover o cursor para a próxima janela (direita)

  • ctrl + l mover o cursor para a janela anterior (esquerda)

Para mais informações, consulte: :help window-moving


3
Incorreto. Ctrl+h/lnão são ligações padrão para navegação na janela (embora possam, é claro, ser configuradas e sejam oferecidas por alguns plugins). E isso não responde à pergunta original de qualquer maneira.
MarSoft
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.