Emacs move around split windows in a specified direction

emacs

In Terminal Emacs (no mouse), I'm using split windows to work with multiple buffers at the same time. I'm finding moving between the split windows much more painful than how I do it in Vim. Reading the documentation it looks like I'm doing it correctly (C-x o), but that just cycles around the windows in a clockwise direction. If I move to an adjacent window to make a quick edit, I need to hit C-x o a few times before I'm back where I was. Sometimes I accidentally press it too many times in a hurry and have to cycle all the way back through the windows again.

Far from install yet-another-external-package, is there any way I can just either move directly to a window (by, say, a number), or at least cycle around the windows in the opposite direction?

In Vim C-w C-w is like C-x o in Emacs, but there's also C-w ARROW to move in a specified direction… something like that? 🙂

Best Answer

Add this to your init file:

(windmove-default-keybindings)

Then you can use SHIFT+arrow to move to the next adjacent window in the specified direction.

You can specify a different modifier if you prefer, by passing an argument (defaults to 'shift).

Or just bind whatever you like to these functions:

  • windmove-up
  • windmove-down
  • windmove-left
  • windmove-right

You can also add FrameMove to the mix, to make this work transparently across multiple frames.

For numbered window navigation, there's switch-window.el.

Related Topic