macOS のキーバインディング（ショートカット）

こんにちは。
macOS のキーバインディング（ショートカット）[^1] [^2]をテキスト操作を中心に選んでみました。

* 合わせて共通部分が多い Bash のキーバインディングも加えました。
<!--* とはいえども入念に覚える必要はないと思います。-->

#### 特徴
macOS の特徴の一つには、キーバインディング（ショートカット）が [Emacs](https://qiita.com/tags/emacs) 踏襲のものも使え、画面に集中して作業することが楽なこともあるようです。

* キーボード上のホームポジション（両手）を保てる
* キーボードへ視線を移さずに済む
* マウス、カーソル移動（矢印）キー、delete キー、ファンクション(fn)キーなどにそれほど頼らずに済む[^3]
* Command(⌘) キー、Option(⌥) キー、Control(⌃)キー、Shift(⇧) キーを用いる
  * Command(⌘) キーとControl(⌃)キーを使い分けします

[^1]: 網羅的説明としては、「[Mac のキーボードショートカット](https://support.apple.com/ja-jp/HT201236)」（Apple サポート） などがあります。
[^2]: iPadOS も同じ特徴を持っています。
[^3]: 残念なことに、ポップダウンメニューの中から目的のアイテムを選択したい場合は、マウスもしくはカーソル移動（↓／↑キー）を使わざるを得ない(?)ようです。

## macOSのキーバインディング

### esc(⎋) キー
検索ウィンドウを閉じる。

### fn(<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54617/7c78bef7-a294-4baa-9679-a3889e16f3a4.png" width=2%>)キー
日本語入力・英語入力などを切り替える。
 
### Command（⌘）キー（+ 文字）を用いるキーバインディング

| 文字 |  |
|:--|:--|
| a | 全て選択 |
| x | 選択対象を削除 |
| c | 選択対象をコピー |
| v | ペースト（前もって削除もしくはコピーされた内容） |
<br>

| 文字 |  |
|:--|:--|
| e | 選択テキストを検索対象に設定 |
| g | 検索（下方向） |
| f | 検索画面を表示 |
<br>

| 文字 |  |
|:--|:--|
| / | コメント記号を行の先頭に挿入・削除（トグル） |
| ] | インデント |
| [ | アン・インデント |
<br>

| 文字 |  |
|:--|:--|
| n | 新規ウィンドウを作る（開く） |
| t | 新規タブを作る（開く） |
| w | ウィンドウ／タブを閉じる |
| m | ウィンドウを最小化（Dockへ移動） |
| h | アプリケーションを隠す（非表示） |
| , | アプリケーションの環境設定 |
<br>

| 文字 |  |
|:--|:--|
| space | Spotlight検索[^4] |
| tab | アプリケーション（起動中のもの）を切り替え[^5] |
| delete | 選択ファイルを削除（Finder上） |
<br>

| 文字 |  |
|:--|:--|
| + | 拡大表示 |
| - | 縮小表示 |
| 0 | 標準サイズの表示 |

[^4]: 「Command（⌘）キー + space」は、以前はテキスト入力モード切り替えへ割り当てられていました。
[^5]: 起動中のアプリケーションの一覧表示が現れ、さらに tab もしくは shift+tab キーにより選択を移動可能

###### webブラウザ
| 文字 |  |
|:--|:--|
| l | url入力欄を選択（入力可能とする） |
| ] | 履歴を進む |
| [ | 履歴を戻る |

##### Command（⌘）キー　+　マウス操作の併用
ウィンドウタイトルバーに対するマウス操作（バックグラウンドのものも可）

| 文字 |  |
|:--|:--|
| ドラッグ移動 | ウィンドウの画面内位置移動 |
| proxy 小アイコンのクリック | ファイルを含むディレクトリを Finder で開く |

####  Command + Shift(⇧) キー（+ 文字）を用いるキーバインディング

| 文字 |  |
|:--|:--|
| g | 検索（上方向） |
<br>

| 文字 |  |
|:--|:--|
| [ | タブ切り替え（右へ） |
| ] | タブ切り替え（左へ） |

#### Command + Option(⌥) キー（+ 文字）を用いるキーバインディング

| キー |  |
|:--|:--|
| 電源ボタン | スリープ |

##### Finder

| 文字 |  |
|:--|:--|
| v | コピーしたファイルを現在のフォルダへ移動（コピーではなくなり、元の位置にあったファイルは削除される） |

##### ズーム機能 (Accessibility) 

| 文字 |  |
|:--|:--|
| b | オン／オフ |
| ^ | 拡大 |
| - | 縮小 |
| \ | オン／オフ（イメージスムージング） |

###### webブラウザ
| 文字 |  |
|:--|:--|
| i | インスペクター（デベロッパーツール）を開く |


###  Control(⌃)キー（+ 文字）を用いるキーバインディング

| 文字 |  |
|:--|:--|
| ↑ | Mission Control （表示されているアプリケーション） |
| ↓ | アプリケーションウィンドウ |

##### テキスト操作
[Emacs](https://qiita.com/tags/emacs) と共通です。

* なおカーソル移動操作時に、Shift キーも併用すると移動先の位置までが選択されます[^6]

[^6]: したがって1単語分の移動先まで選択も可能なのですが（すなわち Control + Option + Shift + f/b のキー操作）、必ずしも容易な操作ではなさそうです。

| 文字 |  |
|:--|:--|
| f | カーソルを1つ右へ移動 |
| b | カーソルを1つ左へ移動 |
| e | カーソルを行末へ移動 |
| a | カーソルを行頭へ移動 |
| n | カーソルを1行下へ移動 |
| p | カーソルを1行上へ移動 |
| v | カーソルを1ページ分下へ移動 |
<br>

| 文字 |  |
|:--|:--|
| d | カーソルの右の文字を削除 |
| h | カーソルの左の文字を削除 |
| k | カーソル位置から行末までを削除（およびキルリングへ登録） |
<br>

| 文字 |  |
|:--|:--|
| y | カーソル位置へ最後にキルリングへ登録した内容を挿入 |
| t | カーソルの左右の文字を入れ替え |
| o | カーソル位置の右へ改行を挿入 |
| l | カーソルが画面中央へ来るようにウインドウをスクロール |

##### 日本語変換入力[^7]

| 文字 |  |
|:--|:--|
| space | テキスト入力モード切り替え[^4] |
| m | 変換確定 |
| f | 変換対象文節を右へ移動 |
| b | 変換対象文節を左へ移動 |
| i | 変換対象文節範囲を狭める（右端） |
| o | 変換対象文節範囲を広げる（右端） |

[^7]: 「[Macの日本語変換用のキーボードショートカット](https://support.apple.com/ja-jp/guide/japanese-input-method/jpim10263/mac)」(Apple Support)

####  Control + Option(⌥) キー（+ 文字）を用いるキーバインディング

こちらは [Emacs](https://qiita.com/tags/emacs) に似ていますが、Control の併用が必要です。

| 文字 |  |
|:--|:--|
| f | カーソルを1単語分右へ移動 |
| b | カーソルを1単語分左へ移動 |


### 上下カーソルキーの使用
カーソル・表示位置を移動させます。

| 文字 |  |
|:--|:--|
| ↑ | 上へ（一行分） |
| ↓ | 下へ（一行分） |

####  Option キーを併用

| 文字 |  |
|:--|:--|
| ↑ | カーソルを行頭へ移動 |
| ↓ | カーソルを行末へ移動 |

####  fn キーを併用

| 文字 |  |
|:--|:--|
| ↑ | 上へ（一ページ分） |
| ↓ | 下へ（一ページ分） |

####  Command キーを併用

| 文字 |  |
|:--|:--|
| ↑ | 上へ（ページの先頭） |
| ↓ | 下へ（ページの末尾） |

### 左右カーソルキーの使用
カーソル・表示位置を移動させます。

| 文字 |  |
|:--|:--|
| ← | 左へ（一文字分） |
| → | 右へ（一文字分） |

####  Option キーを併用

| 文字 |  |
|:--|:--|
| ← | 左へ（一単語分） |
| → | 右へ（一単語分） |

####  Command キーを併用

| 文字 |  |
|:--|:--|
| ← | カーソルを行頭へ移動 |
| → | カーソルを行末へ移動 |

## Bashのキーバインディング

###  Controlキー（+ 文字）を用いるキーバインディング

macOSの説明に挙げたものに加えて、

| 文字 |  |
|:--|:--|
| u | カーソル位置から行頭まで削除（およびキルリングへ登録）[^8] |
| w | カーソル位置から前方へ単語の先頭までを削除（およびキルリングへ登録） |

| 文字 |  |
|:--|:--|
| p | 履歴を戻る |
| n | 履歴を進む |
| r | 履歴をインクリメンタル検索（古い方に向かって） |
| f | 履歴をインクリメンタル検索（新しい方に向かって） |

[^8]: Zsh では Control + u は、一行全体を削除

###  Meta キー（Optionキー）（+ 文字）を用いるキーバインディング

こちらは [Emacs](https://qiita.com/tags/emacs) とも共通です。

| 文字 |  |
|:--|:--|
| f | カーソルを1単語分右へ移動 |
| b | カーソルを1単語分左へ移動 |
| d | カーソル位置から後方へ単語の終わりまでを削除（およびキルリングへ登録） |