Your windows, in Vim's vocabulary.

Vimdow is a keyboard-driven window manager for macOS. Press one shortcut to enter command mode, then move, resize, snap, and switch windows with h, j, k, l, counts, and undo. The mouse stays where it is.

Get VimdowSource on GitHub

What the demo shows

  1. Control–Option–A enters command mode.
  2. l moves the window right, one step per press.
  3. 12j moves it down twelve steps.
  4. Option–l widens it, keeping the top-left corner in place.
  5. zz centers it on the display.
  6. Control–W, then H fills the left half.
  7. u undoes the last change.
  8. Escape returns to normal mode.

Why Vimdow

Vimdow was written by someone who has used Vim since 1998 and would rather not reach for the mouse. Most of a Mac can be driven from the keyboard, but window management could not: nudging a window a few points, or moving it to another display, always meant leaving the home row.

The first version, in 2013, was a small Objective-C app that fixed exactly that for one user. Instead of new shortcuts to learn, it mapped window operations onto the Vim vocabulary: hjkl to move, a count to repeat, 0 and $ for the edges, gg and G for top and bottom, zz to center, u to undo, / to search. In 2026 it was rewritten in Swift 6 with a tested command engine.

Vimdow is modal, like Vim. It is not a tiling window manager and does not arrange windows for you; it makes arranging them yourself fast. It is one person's preference, shared for anyone whose hands have the same habits.

How it works

  1. Enter command mode

    Press ⌃⌥A and release. Until you leave, keys go to Vimdow instead of the frontmost app.

  2. Move and resize

    h j k l move the focused window by a configurable step. Type a count to repeat, hold a key to glide, add Option or Shift to resize.

  3. Leave

    Press esc or . to return to normal mode. Your typing goes back to the app.

What it does

Command mode at a glance

Enter with Control–Option–A (the default). Digits typed before a command repeat it. Two keys shown together are pressed one after the other.

KeysAction
hjklMove left, down, up, right by one step
⌥hjklResize, keeping the top-left corner fixed
⇧hjklResize, keeping the bottom-right corner fixed
12jRepeat: 12j moves down twelve steps
u/⌃rUndo / redo the focused window's last change
0/$Move to the left / right edge of the display
gg/GMove to the top / bottom edge
zzCenter on the display
⌃wHJKLFill the left / bottom / top / right half
⌃woFill the display
q1–9Focus a numbered window; Q again shows the next nine
//n/NSearch by application name; next / previous match
⌃⌥k/⌃⌥lMove to the previous / next display
,Open Settings
esc/.Exit command mode

Keys follow physical ANSI positions, as in Vim, so they stay in the same place on JIS, Korean, and other layouts.

Get Vimdow

Requires macOS 14 or later and Accessibility permission.

There is no binary download yet. Vimdow is built from source with Xcode 27 and XcodeGen. The README walks through setup, building, and signing so that Accessibility permission survives rebuilds.

Build instructionsReleases

About Accessibility permission

macOS requires it for any app that moves another app's windows. Vimdow uses it for that and nothing else: no network access, no analytics, nothing leaves your Mac.