macOS 14 以降に対応
ウインドウ操作を、Vim 流に。
Vimdow は、キーボードで操作する macOS 用のウインドウマネージャです。ショートカットひとつでコマンドモードに入れば、h、j、k、l や回数指定など、指になじんだ Vim の操作でウインドウの移動やリサイズ、配置、切り替えができます。マウスに手を伸ばす必要はありません。 アプリを名前で開いたり、使っているウインドウ以外を暗くしたりもできます。
Homebrew で簡単にインストール
brew install rath/tap/vimdowデモの内容
- Control–Option–A でコマンドモードに入ります。
- l を押すたびに、設定した移動量だけ右へ動きます。
- 12j で、下へ12回分まとめて移動します。
- Option–l で、左上の角を固定したまま幅を広げます。
- zz で、画面の中央に移動します。
- u で、直前の操作を取り消します。
- Control–W に続けて H で、画面の左半分いっぱいに広げます。
- Q でウインドウに番号が付き、2 で2つ目のウインドウに切り替わってコマンドモードを抜けます。
- もう一度コマンドモードに入り、Control–W に続けて L で、右半分いっぱいに広げます。
- Escape でノーマルモードに戻ります。
Vimdow を作った理由
Vimdow の作者は1998年から Vim を使い続けていて、できることならマウスには触りたくないと考えています。Mac の操作はたいていキーボードで済みますが、ウインドウの管理だけは例外でした。ウインドウを数ポイントずらしたいときも、別のディスプレイへ移したいときも、そのたびにホームポジションから手を離すしかありませんでした。
2013年に作った最初のバージョンは、この不満を作者ひとりのために解消する、小さな Objective-C のアプリでした。新しいショートカットを覚えるのではなく、ウインドウ操作を手になじんだ Vim のキーに割り当てました。hjkl で移動、数字で繰り返し、0 と $ で左右の端、gg と G で上下の端、zz で中央、u で取り消し、/ で検索。2026年には Swift 6 で書き直し、コマンド処理にはテストも備えました。
Vimdow は、Vim と同じくモードを切り替えて使うツールです。タイル型のウインドウマネージャではないので、ウインドウを自動で並べることはしません。自分で並べる操作を速くするためのものです。ひとりの好みから生まれたツールですが、Vim の操作が指に染みついている人なら誰でも使えるように公開しています。
使い方
コマンドモードに入る
⌃⌥A を押して、指を離します。コマンドモードを抜けるまで、キー入力は最前面のアプリではなく Vimdow に届きます。
移動とリサイズ
h j k l で、アクティブなウインドウを設定した移動量ずつ動かします。先に数字を入力すればその回数だけ繰り返し、キーを押し続ければ滑らかに動き続けます。Option か Shift を一緒に押すと、移動ではなくリサイズになります。
モードを抜ける
esc か . を押すとノーマルモードに戻り、キー入力は再びアプリに届くようになります。
できること
回数を指定して移動・リサイズ
移動量は自由に設定でき、キーを押し続ければ動き続けます。どの操作も、アニメーションで滑らかに目的の位置へ動きます。12j なら12回分をまとめて移動。Option と Shift は、それぞれ反対側の角を固定してリサイズします。
スナップとタイリング
0、$、gg、G、zz で、サイズはそのままにウインドウを画面の端や中央へ寄せます。Control–W に続けて H、J、K、L を押せば画面の半分に、O なら画面全体に広げます。
ウインドウごとに取り消し・やり直し
u と Control–R で、移動、リサイズ、スナップ、ディスプレイ間の移動を、ウインドウごとに取り消したりやり直したりできます。あとからマウスでウインドウを動かしていても、きちんと元に戻せます。
ディスプレイごとに位置を記憶
Control–Option–K か L で、ウインドウを次のディスプレイへ移します。元のディスプレイに戻すと、以前の位置とサイズにそのまま戻ります。
よく使うウインドウだけを切り替え
コマンドモードで M を押してウインドウをマークし、Control–Option–[ で前、Control–Option–] で次のマークへ切り替えます。登録順に移動し、先頭と末尾で循環します。切り替え先は0.18秒ずつ2回点滅します。マークはアプリの終了まで保持され、非表示のウインドウは再表示すると対象に戻ります。 切り替え後の tmux ペイン番号表示は設定で有効にできます。初期状態ではオフです。
探さずにすぐ切り替え
Q を押すと、各ウインドウの中央に半透明の黒い背景と大きな白い番号が表示されます。重なる番号は分散し、キー入力がないまま3秒経つと選択が解除されます。数字で選ぶほか、/ でアプリ名を検索し、n と N で結果を切り替えられます。
Spotlight なしでアプリを起動
アプリ名やシステム設定の項目名を入力して Return を押すと開きます。/Applications とシステムのアプリフォルダ、システム設定のパネルが対象で、Google Chrome の gc のような頭文字も認識します。選んだ項目を覚えて、同じ入力では次回から先頭に表示します。ショートカットは初期状態では未設定なので、設定で Option–Command–Space などを登録してください。
ほかのウインドウを暗く
Control–Option–D を押すと、HazeOver のように、作業中のウインドウだけを残してすべてのディスプレイのほかのウインドウに半透明の黒い幕がかかります。クリックやアプリの切り替えに合わせて明るいウインドウも変わります。暗さは設定の General → Dimming で調整できます。フルスクリーンの Space は暗くなりません。
好みに合わせて調整
移動とサイズ変更の幅を個別に設定し、画面の端で止めるか、アニメーションを使うかを選べます。9つのグローバルショートカットの変更や、ログイン時の自動起動も設定できます。Command–W で設定ウインドウを閉じます。
コマンドモード早見表
コマンドモードには Control–Option–A(初期設定)で入ります。コマンドの前に数字を入力すると、その回数だけ繰り返します。2つ並んだキーは、続けて順番に押します。
| キー | 動作 |
|---|---|
| hjkl | 左・下・上・右へ1回分移動 |
| ⌥hjkl | 左上の角を固定してリサイズ |
| ⇧hjkl | 右下の角を固定してリサイズ |
| 12j | 繰り返し(例:12j で下へ12回分移動) |
| u/⌃r | アクティブなウインドウの操作を取り消し / やり直し |
| 0/$ | 画面の左端 / 右端へ移動 |
| gg/G | 上端 / 下端へ移動 |
| zz | 画面の中央へ移動 |
| ⌃wHJKL | 画面の左 / 下 / 上 / 右半分に広げる |
| ⌃wo | 画面全体に広げる |
| q1–9 | 番号で選択;Q で次のページ;3秒間入力がなければ解除 |
| m | 現在のウインドウをマーク/解除し、コマンドモードを終了 |
| ⌃⌥[/⌃⌥] | マークしたウインドウを切り替え(通常モードでも使用可能) |
| ⌃⌥d | フォーカスされたウインドウ以外をすべて暗くする(通常モードでも使用可能) |
| //n/N | アプリ名で検索、次 / 前の候補へ移動 |
| ⌃⌥k/⌃⌥l | 次のディスプレイへ移動 |
| , | 設定を開く |
| esc/. | コマンドモードを抜ける |
キーは ANSI 配列での物理的な位置で決まっているため、JIS 配列などほかの配列でも押す場所は変わりません。
よくある質問
Rectangle やタイル型ウインドウマネージャとは何が違いますか?
Rectangle のようなアプリはレイアウトごとにグローバルショートカットを割り当て、yabai や AeroSpace のようなタイル型ウインドウマネージャはウインドウを自動で並べます。Vimdow はどちらとも違います。ショートカットひとつでコマンドモードに入り、いくつかの Vim のキーでウインドウの移動、リサイズ、配置、取り消しを行います。自分で操作しない限り、ウインドウが勝手に動くことはありません。
Vim を知らなくても使えますか?
使えます。h、j、k、l の4つのキーで、ほとんどの操作をこなせます。それぞれウインドウを左、下、上、右へ動かします。回数指定や gg、zz などは必要になってから覚えれば十分で、すべてのキーは上の早見表にまとめてあります。
日本語入力がオンのままでも使えますか?
使えます。コマンドモードのキーは入力される文字ではなく、キーの物理的な位置で決まっているため、日本語入力がオンでも h、j、k、l はそのまま働きます。アプリ名での検索には日本語も入力できます。
ショートカットは変更できますか?
はい。コマンドモードに入る Control–Option–A と前後のマークしたウインドウを切り替える Control–Option–[ と Control–Option–] を含む9つのグローバルショートカットを、設定で変更または解除できます。コマンドモード内のキーは固定です。
すべてのアプリで使えますか?
macOS がほかのアプリからのウインドウ操作を許しているアプリなら使えます。ほとんどのアプリがこれに当たります。サイズが固定されたウインドウなど、アプリが移動やリサイズを受け付けない場合は、無理に動かさずビープ音で知らせます。
使っているウインドウ以外を暗くできますか?
はい。Control–Option–D を押すと、HazeOver のようにすべてのディスプレイのほかのウインドウに半透明の黒い幕がかかり、クリックやアプリの切り替えに合わせて明るいウインドウも変わります。暗さは設定の General → Dimming で調整でき、もう一度ショートカットを押すと解除されます。
ログイン時に Vimdow を自動で起動できますか?
はい。設定の General → Startup で Open Vimdow at login をオンにしてください。初期設定ではオフです。この設定は macOS のシステム設定 → 一般 → ログイン項目で管理され、Restore Defaults では変更されません。
アップデートはどうすればいいですか?
Vimdow を終了し、最新の Vimdow.zip をダウンロードしてアプリケーション内のアプリを置き換えてください。Homebrew でインストールした場合は brew update と brew upgrade --cask vimdow を実行します。設定は保持されますが、ウインドウのマークは再起動するとリセットされます。アプリ自体は更新を確認しません。
Vimdow を入手
Vimdow 1.3.1 は macOS 14 以降の Apple Silicon と Intel Mac に対応しています。Developer ID で署名し、Apple の公証を受けています。
Vimdow.zip をダウンロードリリースノートソースからビルド
ダウンロードした zip ファイルから、Vimdow.app を「アプリケーション」フォルダへ移します。
アプリを開き、「システム設定」→「プライバシーとセキュリティ」→「アクセシビリティ」で許可します。
⌃⌥A を押してコマンドモードに入ります。
Homebrew でもインストールできます。アプリを開き、アクセシビリティの権限を許可してください:
brew install rath/tap/vimdow
アクセシビリティの許可について
ほかのアプリのウインドウを動かすアプリには、macOS がこの許可を求めます。Vimdow がこの許可を使うのはウインドウの操作だけです。ネットワークには接続せず、利用状況も収集しないので、Mac の外に情報が出ることはありません。