Hyperのショートカットキー一覧と変更方法(Mac)

最近流行りのターミナル、Hyperについてショートカットキーの一覧と変更方法をまとめてみました。

テキストエディタなどのツール一般にいえることですが、ショートカットキーを使いこなせるかどうかで作業効率が大幅に変わってきます。

この記事でみなさんの作業効率が少しでも上がれば幸いです:writing_hand:

## 環境

- OS：macOS High Sierra 10.13.1
- Hyper：2.0.0

## ショートカットキー一覧

### デフォルトのキーマップ

デフォルトのキーマップは以下の通りです。
https://github.com/zeit/hyper/blob/master/app/keymaps/darwin.json

|キー|設定名|説明|
|:---|:---|:---|
|⌥⌘I|"window:devtools"|開発ツールを開く|
|⌘R|"window:reload"|ウィンドウをクリアする|
|⇧⌘R|"window:reloadFull"|ウィンドウ全体をクリアする|
|⌘,|"window:preferences"|設定ファイルを開く|
|⌘0|"zoom:reset"|縮尺をリセットする|
|⌘+|"zoom:in"|拡大する|
|⌘-|"zoom:out"|縮小する|
|⌘N|"window:new"|新しいウィンドウを開く|
|⌘M|"window:minimize"|ウィンドウを最小化する|
|^⌥⌘M|"window:zoom"|ウィンドウの最大化/解除|
|^⌘F|"window:toggleFullScreen"|ウィンドウのフルスクリーン/解除|
|⇧⌘W|"window:close"|ウィンドウを閉じる|
|⌘T|"tab:new"|新しいタブを開く|
|⌘}, ⇧⌘→, ⌥⌘→ , ^⇥|"tab:next"|右のタブへ移動|
|⌘{, ⇧⌘←, ⌥⌘← , ^⇧⇥|"tab:prev"|左のタブへ移動|
|⌘{数字}|"tab:jump:prefix"|{数字}番目のタブへ移動|
|⌘]|"pane:next"|右/下のペインへ移動|
|⌘[|"pane:prev"|左/上のペインへ移動|
|⌘D|"pane:splitVertical"|左右にペインを分割する|
|⇧⌘D|"pane:splitHorizontal"|上下にペインを分割する|
|⌘W|"pane:close"|ペイン/タブを閉じる|
|⌘Z|"editor:undo"|アンドゥ|
|⌘Y|"editor:redo"|リドゥ|
|⌘X|"editor:cut"|切り取り|
|⌘C|"editor:copy"|コピー|
|⌘A|"editor:selectAll"|全選択|
|⌥←|"editor:movePreviousWord"|前の単語へ移動|
|⌥→|"editor:moveNextWord"|次の単語へ移動|
|⌘←|"editor:moveBeginningLine"|先頭へ移動|
|⌘→|"editor:moveEndLine"|末尾へ移動|
|⌥⌫|"editor:deletePreviousWord"|前の単語を削除|
|⇧⌦|"editor:deleteNextWord"|次の単語を削除|
|⌘⌫|"editor:deleteBeginningLine"|キャレットから先頭まで削除|
|⇧⌘⌦|"editor:deleteEndLine"|キャレットから末尾まで削除|
|⌘K|"editor:clearBuffer"|バッファを削除|
|^⌘スペース|"editor:emojis"|絵文字パレットの表示|
|^C|"editor:break"|処理を中断する|
|⇧⌘U|"plugins:update"|プラグインの更新|

私はreadlineで編集モードをviにしているせいか、「前の単語へ移動」など一部エディタ系のキーマップが反応しませんでした。

### プラグインのキーマップ

自分が使っているプラグインで追加されるキーマップのみ載せます。

#### hyper-pane

Hyperにペインのショートカットキーを追加するプラグインです。
https://www.npmjs.com/package/hyper-pane

|キー|説明|
|:---|:---|
|^⌥↑(^⌥K)|上のペインへ移動|
|^⌥↓(^⌥J)|下のペインへ移動|
|^⌥←(^⌥H)|左のペインへ移動|
|^⌥(^⌥L)|右のペインへ移動|
|^⌥{数字}|{数字}番目のペインへ移動|
|⇧{ペインの移動}|移動先とペインを入れ替える|
|⌘⌤|ペインの最大化/解除|

私はviのキーマップが好きなので()内のようにキーマップを変更しています。

```js:.hyper.js
  config: {
    paneNavigation: {
      hotkeys: {
        navigation: {
          up: 'ctrl+alt+k',
          down: 'ctrl+alt+j',
          left: 'ctrl+alt+h',
          right: 'ctrl+alt+l',
        },
      },
    },
  },
```

#### hyper-search

Hyperに文字検索を追加するプラグインです。
https://www.npmjs.com/package/hyper-search

|キー|説明|
|:---|:---|
|⌘F|検索ウィンドウを開く/閉じる|
|⌘G|次の検索結果に進む|
|⇧⌘G|前の検索結果に戻る|
|⎋|検索ウィンドウを閉じる|

## キーマップの変更方法

Hyperでは上記で紹介したデフォルトのショートカットキーを簡単に変更できます。すごい:clap:

設定ファイル( `~/.hyper.js` ) の末尾に `keymaps` という項目があるので、その中に `{設定名}: {キー}` の順番で記述することで変更できます。

各値はシングルまたはダブルクォーテーションで括り、複数のキーマップを変更する場合はカンマで区切ります。

例えば以下のように記述します。

```js:.hyper.js
  keymaps: {
    'window:devtools': 'cmd+alt+o',
  },
```

すると、デフォルトでは `⌥⌘I` で開発ツールが開きましたが、 `⌥⌘O` で開くようになります。
`⌥⌘I` を押下しても何も起きなくなります。

設定に複数のキーを紐付けたい場合、 `[]` で括って記述します。

```js:.hyper.js
  keymaps: {
    'window:devtools': [
      'cmd+alt+o',
      'cmd+alt+t'
    ]
  },
```

この場合、 `⌥⌘O` , `⌥⌘T` の両方で開発ツールが開くようになります。

設定名を重複して記述した場合、後者が優先されます。

```js:.hyper.js
  keymaps: {
    'window:devtools': 'cmd+alt+o',
    'window:devtools': 'cmd+alt+t',
  },
```

この場合は `⌥⌘T` で開発ツールが開きます。 `⌥⌘O` を押下しても何も起きません。

キーマップを重複して記述した場合も後者が優先されます。

```js:.hyper.js
  keymaps: {
    'window:devtools': 'cmd+alt+o',
    'window:new': 'cmd+alt+o',
  },
```

この場合は `⌥⌘O` を押下すると新しいウィンドウが開きます。開発ツールは開きません。

## 私のキーマップ設定

見てわかる通りiTerm2とほぼ同じキーマップのため、今のところ変えていません。
Hyperを使い込んで変えるようであれば、本記事に追記したいと思います。

逆にみなさんのおすすめの設定がありましたら、コメントなどで教えていただけると嬉しいです:blush: