【完全版】Jupyter Notebook ショートカット

# Jupyter Notebook ショートカット
Jupyter Notebookで `h` で出てくるショートカット一覧をWindows,Mac共に全て日本語に訳しました。
探しましたが、日本語でWindowsとMacが全部載っている一覧表がなかったので、もしかしたら需要あるかも？

覚えておいた方が良いコマンドだけ**太字**にしました。

## 注意点(2024/11/10追記)

多くの方に見ていただいているようなので、改めて確認しましたが、この記事にはいくつか古い情報が含まれます。

**正しい情報は、 Jupyter Notebook もしくは Jupyter Lab の上部のメニューのヘルプから確認してください。**

*Help > Show Keyboard Shortcuts*

(`h` でヘルプが出なくなっています。代わりに、 `Shift + Ctrl(Command) + h` になってそう)

:::note warn
* 2024年11月に最新版で確認したところ、以下の挙動となりました。
    * `jupyter lab` ではほとんど正しく動作する
    * `jupyter notebook` では多くのショートカットが動かなくなっている可能性が高い（変更削除があった）

### 推奨環境
* jupyter lab (`jupyter notebook` ではなく `jupyter lab` で起動します)
* Google Colab (大体似てるので参考になるはず)
* VSCode with Jupyter Extension (個人的にはもはやこれしか使ってないぐらいおすすめ)

2024年確認時の最新版のバージョンです。
```
$ jupyter --version
Selected Jupyter core packages...
IPython          : 8.29.0
ipykernel        : 6.29.5
ipywidgets       : 8.1.5
jupyter_client   : 8.6.3
jupyter_core     : 5.7.2
jupyter_server   : 2.14.2
jupyterlab       : 4.3.0
nbclient         : 0.10.0
nbconvert        : 7.16.4
nbformat         : 5.10.4
notebook         : 7.0.7
qtconsole        : not installed
traitlets        : 5.14.3
```
:::

# Windows

## コマンドモード
|      ショートカットキー     |          説明            | 
|--------------|-----------------------| 
| F            | 検索・置換                 | 
| Ctrl-Shift-F | コマンドパレットを開く           | 
| Ctrl-Shift-P | コマンドパレットを開く           | 
| **Enter**        | 編集モードにする              | 
| P            | コマンドパレットを開く           | 
| **Shift-Enter**  | **セルを実行し、下のセルに移動する**      | 
| **Ctrl-Enter**   | **セルを実行する**               | 
| Alt-Enter    | セルを実行し、下にセルを追加する      | 
| **Y**            | **コードセルにする**              | 
| **M**            | **マークダウンセルにする**           | 
| R            | rawセルにする              | 
| 1            | 見出し１にする               | 
| 2            | 見出し２にする               | 
| 3            | 見出し３にする               | 
| 4            | 見出し４にする               | 
| 5            | 見出し５にする               | 
| 6            | 見出し６にする               | 
| **K**            | **上のセルを選択する**             | 
| Up           | 上のセルを選択する             | 
| Down         | 下のセルを選択する             | 
| **J**            | **下のセルを選択する**             | 
| Shift-K      | 上のセルと結合する             | 
| Shift-Up     | 上のセルと結合する             | 
| Shift-Down   | 下のセルと結合する             | 
| Shift-J      | 下のセルと結合する             | 
| **A**            | **上にセルを追加する**             | 
| **B**            | **下にセルを追加する**             | 
| **X**            | **選択しているセルをカット**          | 
| **C**            | **選択しているセルをコピー**          | 
| Shift-V      | 上に貼り付け                | 
| **V**            | **下に貼り付け**                | 
| **Z**            | **セルの削除をやり直す**            | 
| **DD**           | **選択しているセルを削除する**         | 
| **Shift-M**      | **セルのマージ(選択してないなら下のセルと)** | 
| **Ctrl-S**       | **保存する**                  | 
| S            | 保存する                  | 
| L            | 行番号の表示・非表示            | 
| **O**            | **セルの出力結果の表示・非表示**        | 
| Shift-O      | 出力結果スクロール・非スクロール      | 
| **H**            | **キーボードショートカット表示**        | 
| **I×2**          | **カーネルをインタラプト**           | 
| 0            | カーネルを再起動              | 
| Esc          | ページャーを閉じる             | 
| Q            | ページャーを閉じる             | 
| Shift-L      | 全てのセルの行番号の表示・非表示      | 
| Shift-Space  | 上にスクロール               | 
| Space        | 下にスクロール               | 

## 編集モード

|       ショートカットキー      |    説明       | 
|------------------|------------------| 
| Tab              | コード補完・タブ         | 
| Shift-Tab        | ツールチップ           | 
| **Ctrl-]**           | **インデント**            | 
| **Ctrl-[**           | **ディデント**            | 
| **Ctrl-A**           | **全選択**              | 
| **Ctrl-Z**           | **やり直し**             | 
| **Ctrl-Shift-Z**     | **やり直し**             | 
| Ctrl-Y           | やり直し             | 
| Ctrl-Home        | セルの最初に移動         | 
| Ctrl-Up          | セルの最初に移動         | 
| Ctrl-End         | セルの最後に移動         | 
| Ctrl-Down        | セルの最後に移動         | 
| Ctrl-Left        | 一単語前に移動          | 
| Ctrl-Right       | 一単語後に移動          | 
| Ctrl-Backspace   | 前の単語を削除          | 
| Ctrl-Delete      | 後の単語を削除          | 
| **Ctrl-M**           | **コマンドモードにする**       | 
| Ctrl-Shift-F     | コマンドパレットを開く      | 
| Ctrl-Shift-P     | コマンドパレットを開く      | 
| Esc              | コマンドモードにする       | 
| **Shift-Enter**      | **セルを実行し、下のセルを選択する** | 
| **Ctrl-Enter**       | **セルを実行する**          | 
| Alt-Enter        | セルを実行し、下にセルを追加する | 
| **Ctrl-Shift-Minus** | **セルを分割する**          | 
| **Ctrl-S**           | **保存する**             | 
| Down             | カーソルを下に移動        | 
| Up               | カーソルを上に移動        | 
| **Ctrl-/**    | **選択部分をコメントアウト**      | 

# Mac OS

### ↩ = Enter
### ⌘ = Command
### ⇧ = Shift
### ⌥ = Option

### ␣ = Space
### ⇥ = Tab

## コマンドモード

|  ショートカットキー  |        説明          | 
|-----|-----------------------| 
| F   | 検索・置換                 | 
| **↩**   | **編集モードにする**              | 
| ⌘⇧F | コマンドパレットを開く           | 
| ⌘⇧P | コマンドパレットを開く           | 
| P   | コマンドパレットを開く           | 
| **⇧↩**  | **セルを実行し、下のセルに移動する**      | 
| **⌃↩**  | **セルを実行する**               | 
| ⌥↩  | セルを実行し、下にセルを追加する      | 
| **Y**   | **コードセルにする**              | 
| **M**   | **マークダウンセルにする**           | 
| R   | rawセルにする              | 
| 1   | 見出し１にする               | 
| 2   | 見出し２にする               | 
| 3   | 見出し３にする               | 
| 4   | 見出し４にする               | 
| 5   | 見出し５にする               | 
| 6   | 見出し６にする               | 
| **K**   | **上のセルを選択する**             | 
| ↑   | 上のセルを選択する             | 
| ↓   | 下のセルを選択する             | 
| **J**   | **下のセルを選択する**             | 
| ⇧K  | 上のセルと結合する             | 
| ⇧↑  | 上のセルと結合する             | 
| ⇧↓  | 下のセルと結合する             | 
| ⇧J  | 下のセルと結合する             | 
| **A**   | **上にセルを追加する**             | 
| **B**   | **下にセルを追加する**             | 
| **X**   | **選択しているセルを切り取り**         | 
| **C**   | **選択しているセルをコピー**          | 
| ⇧V  | 上に貼り付け                | 
| **V**   | **下に貼り付け**                | 
| **Z**   | **セルの削除をやり直す**            | 
| **D→D** | **選択しているセルを削除する**         | 
| **⇧M**  | **セルのマージ(選択してないなら下のセルと)** | 
| **⌘S**  | **保存する**                  | 
| S   | 保存する                  | 
| L   | 行番号の表示・非表示            | 
| **O**   | **セルの出力結果の表示・非表示**        | 
| ⇧O  | 出力結果スクロール・非スクロール      | 
| **H**   | **キーボードショートカット表示**        | 
| **I→I** | **カーネルをインタラプト**           | 
| 0   | カーネルを再起動              | 
| Esc | ページャーを閉じる             | 
| Q   | ページャーを閉じる             | 
| ⇧L  | 全てのセルの行番号の表示・非表示      | 
| ⇧␣  | 上にスクロール               | 
| ␣   | 下にスクロール               | 


## 編集モード

|    ショートカットキー    |     説明               | 
|---------|-----------------------| 
| **⇥**       | **コード補完・タブ**              | 
| ⇧⇥      | ツールチップ                | 
| **⌘]**      | **インデント**                 | 
| **⌘[**      | **ディデント**                 | 
| **⌘A**      | **全選択**                   | 
| **⌘Z**      | **やり直し**                  | 
| **⌘/**      | **コメントアウト**               | 
| ⌘D      | 行を削除する                | 
| ⌘U      | 選択を取り消す               | 
| Insert  | 上書きするかどうか切り替える        | 
| ⌘↑      | セルの最後に移動              | 
| ⌘↓      | セルの最後に移動              | 
| ⌥←      | 一単語前に移動               | 
| ⌥→      | 一単語後に移動               | 
| ⌥⌫      | 前の単語を削除               | 
| ⌥⌦      | 後の単語を削除               | 
| ⌘⇧Z     | やり直し                  | 
| ⌘⇧U     | 選択をやり直し               | 
| ⌃K      | emacs-styleのline kill | 
| ⌘⌫      | カーソルより左を消す            | 
| ⌘⌦      | カーソルより右を消す            | 
| ⌃M      | コマンドモードにする            | 
| Esc     | コマンドモードにする            | 
| ⌘⇧F     | コマンドパレットを開く           | 
| ⌘⇧P     | コマンドパレットを開く           | 
| **⇧↩**      | **セルを実行し、下のセルを選択する**      | 
| **⌃↩**      | **セルを実行する**               | 
| ⌥↩      | セルを実行し、下にセルを挿入する      | 
| **⌃⇧Minus** | **セルを分割する**               | 
| **⌘S**      | **保存する**                  | 
| ↓       | 下にカーソルを移動する           | 
| ↑       | 上にカーソルを移動する           | 

# お気持ち
勢いでやったので、間違いがあるかもしれません。そのときはコメントか編集リクエストください m(_ _)m

# 参考URL
- [Jupyterのショートカットキー一覧を調べてみた](https://qiita.com/masafumi_miya/items/6524dbd227705351a00c)
    - Macのショートカットキーは網羅的。オススメなども載ってて良心的な記事です。