[[📒Productivityを上げるために大切な100のこと]] No57. 🥈
----
以前に[[📗マルチディスプレイの限界を攻める]]話をしたが、画面が多く、広くなるにつれてポインタやウィンドウの移動が大変になるという課題があった。今回はそれに対するアンサーの1つである。
## ウィンドウ移動の方法が大切なわけ
マルチディスプレイ環境でウィンドウの移動が大変そうと感じるとき、共通することがある。それは、マウスなどの[[ポインティングデバイス]]を使ってウィンドウを移動しているということだ。
[[ポインティングデバイス]]を使って異なる画面に最大化された状態で移動するには、一般的に以下の手順が必要になる。
1. ポインタの位置を把握する
2. ウィンドウをドラッグ可能な位置へポインタを移動する
3. ドラッグしたまま移動先ウィンドウの上端に移動する
時間にするとせいぜい数秒だ。『そんな横着をしなくても..』と思うかもしれない。しかし、**画面が増えれば増えるほど、ウィンドウを別の画面に移動する機会は増える**。作業の種類によって最適な画面配置を考えるからだ。
たとえば、以下は私が[[🦉Another Quick Switcher]]を開発しているときの画面配置だ。
![[Pasted image 20211027193226.png]]
中央には主役の[[IntelliJ IDEA]]を配置し、右上と右下には動作確認対象の[[Obsidian]]と関連する[[Chrome devtools]]を表示する。左上にはターミナルを、左下には[[GitHub]]や[[Discord]]などブラウザで必要なリアルタイム情報を表示している。
そして、**開発メインから調査メインに変わったとき、これらの配置はドラスティックに変更される**。都度、[[ポインティングデバイス]]で1つ1つ置き直しているほど暇はしていないのだ。
## ショートカットキーを使う
まずは[[ポインティングデバイス]]ではなくショートカットキーを使って移動するのがいいだろう。[[Windows]]の場合は一例として、以下のようなショートカットが割り当てられている。
| キー | 意味 |
| ----------------- | ---------------- |
| `Win + Shift + →` | 次の画面に移動 |
| `Win + Shift + ←` | 前の画面に移動 |
| `Win + ↓` | 元のサイズに戻す |
| `Win + ↑` | 最大化する |
[[macOS]]でも同様のショートカットがあると思う。ツールを使ってもいい。
## 好きな画面にウィンドウを移動する
私は[[AutoHotkey]]を使って、キーボード操作のみで好きな画面もしくは論理画面領域に一発で移動できるようにしている。先ほど紹介した画面を例にとると以下のような感じだ。
| キー | 意味 |
| ---- | ------------------ |
| `Q` | 左上の画面に移動 |
| `W` | 中央上の画面に移動 |
| `E` | 右上の画面に移動 |
| `A` | 左下の画面に移動 |
| `S` | 中央下の画面に移動 |
| `D` | 右下の画面に移動 |
実際の論理画面領域は5画面なので、`中央上`と`中央下`は共に中央のディスプレイに対応している。また、前提として==モードがSpecialモード==である必要がある。このモードは、[[Vim]]におけるモードの概念と同じだと思ってもらっていい。
Specialモードに切り替えるためのキーは`無変換 R`だ。一度モードを入れ替えれば、連続して操作ができる。慣れれば5画面すべてのウィンドウを1つ隣の画面にスライドするのに5秒もかからないだろう。
興味のある方は[[🦉Spinal reflex bindings template]]を見てもらえればと思う。
<div class="link-card">
<div class="link-card-header">
<img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/>
<span class="link-card-site-name">GitHub</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<div>
<p class="link-card-title">GitHub - tadashi-aikawa/spinal-reflex-bindings-template</p>
</div>
<div class="link-card-description">
This repository is the Autohotkey KeyCustomized Project which is applicable to only mine. - GitHub - tadashi-aikawa/spinal-reflex-bindings-template: This repository is the Autohotkey KeyCustomized...
</div>
</div>
<img src="https://opengraph.githubassets.com/d8b7da8ca13658cefe9b588d5deab4025ecef8039468885e12bb7fe353e134f9/tadashi-aikawa/spinal-reflex-bindings-template" class="link-card-image"/>
</div>
<a href="https://github.com/tadashi-aikawa/spinal-reflex-bindings-template"></a>
</div>
[Alphabets.ahk]ファイルを`MoveWindow`で検索すれば関連するキーバインド設定の雰囲気が分かるはずだ。
[Alphabets.ahk]: https://github.com/tadashi-aikawa/spinal-reflex-bindings-template/blob/master/keybindings/Alphabets.ahk