Skip to content
Swap your windows without ruining your layout
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
autoload Allow swapping windows of the same buffer, Fixes #9 Dec 13, 2016
doc Finally enable deprecation warnings #7 May 16, 2018
plugin Finally enable deprecation warnings #7 May 16, 2018
.gitignore ignore generated doc tags Mar 16, 2016 add deprecation doc notices for yw/pw May 23, 2015


Swap windows without ruining your layout!


Vim's window movement commands work fine when you only have a few splits open or want to push a window over to an edge. But what happens when you have a complicated layout and you just want to swap a couple arbitrary windows?

When I was just getting started with Vim, I asked about this problem on StackOverflow and I've received a handful of responses over the years. Almost a year after after I asked, sgriffin came through with a solution. Now that I'm a little less of a newbie, I've put his idea in a handy plugin.


  1. Navigate to the window you'd like to move
  2. Press <leader>ww
  3. Navigate to the window you'd like to swap with
  4. Press <leader>ww again

Key Bindings


  • Yank and paste a window with <leader>ww (for me that's ,ww)

Deprecated defaults:

  • [y]ank a [w]indow with <leader>yw
  • [p]aste that [w]indow with <leader>pw.

These mappings are deprecated. See below for instructions on how to keep them working once they are removed from the default list.

Customize the commands to your liking by dropping this in your .vimrc and changing the mappings:

let g:windowswap_map_keys = 0 "prevent default bindings
nnoremap <silent> <leader>yw :call WindowSwap#MarkWindowSwap()<CR>
nnoremap <silent> <leader>pw :call WindowSwap#DoWindowSwap()<CR>
nnoremap <silent> <leader>ww :call WindowSwap#EasyWindowSwap()<CR>


This plugin follows the standard runtime path structure, and as such it can be installed with a variety of plugin managers:

  • Vundle - Plugin 'wesQ3/vim-windowswap'
  • Pathogen - git clone ~/.vim/bundle/vim-windowswap
  • NeoBundle - NeoBundle 'wesQ3/vim-windowswap'
  • VAM - call vam#ActivateAddons([ 'wesQ3/vim-windowswap' ])
  • manual - copy all of the files into your ~/.vim directory
You can’t perform that action at this time.