229

In Vim, is it possible to “move” a window to the left or right? Eg, similar to <c-w> r or <c-w> x, but left/right instead of up/down?

For example, if I've got this layout:

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

I'd like to turn it into this:

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

Which is difficult/annoying to do with <c-w> {H,J,K,L}.

David Wolever
  • 130,273
  • 78
  • 311
  • 472

5 Answers5

452

Ctrl w gives you the "windows command mode", allowing the following modifiers:

  • Ctrl w + R - To rotate windows up/left.

  • Ctrl w + r - To rotate windows down/right.

You can also use the "windows command mode" with navigation keys to change a window's position:

  • Ctrl w + L - Move the current window to the "far right"

  • Ctrl w + H - Move the current window to the "far left"

  • Ctrl w + J - Move the current window to the "very bottom"

  • Ctrl w + K - Move the current window to the "very top"

Check out :help window-moving for more information

RTbecard
  • 726
  • 1
  • 6
  • 21
Ricardo Valeriano
  • 6,813
  • 1
  • 22
  • 31
  • 3
    ` r` only rotates vertically. – David Wolever Dec 31 '10 at 18:32
  • 11
    @David Wolever, you need to use the upper case letters in this case, something like: Ctrl-W + Shift-L, for example. I think this can be what you are looking for. – Ricardo Valeriano Feb 09 '11 at 20:28
  • @David - just tested this and r worked horizontally for me. – ostler.c Jan 09 '13 at 19:18
  • 3
    @ostler.c create a vertical split, then create a horizontal split within one of the columns. Now use r and it only cycles the two windows within the one vertical split. – Chev Dec 19 '13 at 18:08
  • Are these hotkeys just move the cursor? – nn0p Apr 17 '16 at 14:19
  • 1
    @nn0p no, they move windows around. h will move cursor to the next window to the left, while H will move current window (together with cursor) to the far left. – MarSoft Jul 27 '17 at 23:27
62

This one is the most useful for me (and is probably the right answer to the question):

  • Ctrl W + x OR Ctrl W + Ctrl x - Rotates the current focused window with the closest window to the right.
fabiomcosta
  • 975
  • 1
  • 7
  • 9
9

Do you want to move the window itself or just your cursor position?

Next to rotating or cycling like you already mentioned, it's only possible to move the window itself to the far top, bottom, left or right, with respectively:

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

I don't think there is a default builtin way to moving a window one place to the right.

Bitterzoet
  • 2,614
  • 17
  • 13
1

It really seems like vim can't do this with the standards key maps. The documentation says that the ^W K, J, H and L commands work by creating the split and opening the buffer in the now position, so I wrote a function to the same: Hide the buffer, move to the left, split, and then open the original buffer:

" 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
W Klink
  • 11
  • 1
-6
  • ctrl + h move cursor to next window(right)

  • ctrl + l move cursot to previous window(left)

about more information, please refer: :help window-moving

xautjzd
  • 213
  • 1
  • 11
  • 3
    Not correct. `Ctrl+h/l` are not standard bindings for window navigation (although they can of course be configured, and are offered by some plugins). And this doesn't answer the original question anyway. – MarSoft Aug 01 '17 at 14:05