Jupyter notebook ショートカット解説

この記事は[古川研究室 Workout_calendar](https://qiita.com/flab5420/private/aee38a24be700d146817) 14日目の記事です。
本記事は古川研究室の学生が学習の一環として書いたものです。内容が曖昧であったり表現が多少異なったりする場合があります。

## 作業の効率化のためにショートカットを使いこなそう！
Jupyter notebook に限らず多くのエディタには便利なショートカットが設定されています。中には共通するものもあるので、初心者ほど覚えておきたいところ。画像込みでわかりやすくまとめたいと思います。

## まずは概要
まずはJupyter notebook の概要について知っていきましょう！初めての方はもちろん、既に利用されていても背景については知らないかも？

### Jupyter プロジェクト
Github に「Project Jupyter」(https://github.com/jupyter)というリポジトリがあります。呼んで字のごとく、Jupyter プロジェクトという名の壮大な計画です。概要を訳して引用すると、

> Project Jupyterは、オープンソースソフトウェア、オープンスタンダード、そして何十ものプログラミング言語にわたるインタラクティブコンピューティングのためのサービスを開発するために存在します。
(https://jupyter.org/index.html より)

ほかにもJupyterLab やJupyter hubといったサービスがあって、Jupyter notebook はその中のひとつです。

> Jupyter Notebookは、ライブコード、方程式、ビジュアライゼーション、およびナラティブテキストを含む文書を作成および共有できるようにする、オープンソースのWebアプリケーションです。用途には、データのクリーニングと変換、数値シミュレーション、統計モデリング、データの視覚化、機械学習などがあります。
(https://jupyter.org/index.html より)

書かれているように、コード、数式、文章をまとめたファイルをオープンソースのWebアプリで作成できるので、使いやすく共有しやすい！という利点があります。特に先ほど出てきましたが、インタラクティブ(対話的)にコードを実行出来る(この後出てきますが、「セル」ごとに実行できる)のが非常に便利なツールになっています。

## 最小限の用語
### セル
![](https://i.imgur.com/0cWQD35.png)
これ一つ一つを「セル」と言う。文章を入力する、プログラムを実行するといったときの最小単位で、セルごとに分けて作業を行えるのがJupyter notebook の便利なところ。

### コマンドモード
![](https://i.imgur.com/DwSH5o9.png)
枠が青い状態を「コマンドモード」という。セルを新たに作ったり消したりといったセルに対するショートカットコマンドを受け付ける状態。

### 編集モード
![](https://i.imgur.com/9is4vDq.png)
枠が緑の状態を「編集モード」という。こちらは主にセルの中に文字を書いたり、書いた文字に対する操作を受け付ける状態。コマンドモードのセルに対してショートカット「Enter」もしくは枠内をクリックで編集モードへ、逆に編集モードの時「Esc」または「Ctrl+M」でコマンドモードに戻る。

## 一覧
Jupyter notebook の上のバーにある「Help」から見られます。
![](https://i.imgur.com/QJFajT4.png)
赤枠の下にある「Edit Keyboard Shortcuts」からキーボードショートカットの編集ができます。デフォルトではショートカットが登録されていないコマンドもあるので、必要であればこちらから登録しましょう。

## Mac とWindows のコマンド互換について
筆者が普段使っているのはWindows なため、コマンドの表記はWindows 基準になります。Windows とMac の機能キーは完全な１対１対応にはなっていないため、ショートカットも一部コマンドが異なります。Help から見られる一覧に載っているのと同様の説明文を付けておくので、見出しを参照してページ内ジャンプをご活用ください。

## コマンドモード用ショートカット

### 検索と置換 (find and replace)
- F
文字列の検索と置き換えを行う。

![](https://i.imgur.com/Fkv0z9R.png)

![](https://i.imgur.com/ga9AMUG.png)

### コマンドの検索と実行 (open the command palette)
- Ctrl+Shift+F, Ctrl+Shift+P, P 
コマンド一覧を開き、検索して実行できる。ショートカットが登録されていないものはここから使う。

![](https://i.imgur.com/b4cvzZ0.png)

### 編集モードに移行 (enter edit mode)
- Enter
選択中のセルで編集モードに入る。
![](https://i.imgur.com/WFYaq0n.png)
↓
![](https://i.imgur.com/ngsRpak.png)

### セルを実行して移動 (run cell, select below)
- Shift+Enter
選択中のセルを実行し、ひとつ下のセルを選択した状態になる。(編集モード時と共通)
![](https://i.imgur.com/DiMBtha.png)
↓
![](https://i.imgur.com/MHaZ50w.png)

### セルを実行 (run selected cells)
- Ctrl+Enter
選択中のセルを実行する。(編集モード時と共通)
![](https://i.imgur.com/BaKOOYb.png)
↓
![](https://i.imgur.com/zgXVbu6.png)

### セルの実行と挿入 (run cell and insert below)
- Alt+Enter
選択中のセルを実行し、ひとつ下にセルを<font color="Red">挿入</font>して選択状態になる。(編集モード時と共通)
![](https://i.imgur.com/e146ppN.png)
↓
![](https://i.imgur.com/Yj43tm2.png)

### セルのモードチェンジ (change cell to code/markdown/raw)
- Y , M , R
「M」でセルをMD(マークダウン)記法用に、「Y」でセルをプログラミングコード用に変更する。なお、デフォルトのセルはプログラミング用になっている。
「R」はTex用になっているようだが、数式はMD用セルに書けばよいので使用機会はごく少ない。

ちなみにMDセルはCtrl+Enter などで<font color="Red">セルを実行</font>しないとMDとして表示されない！！！

↓コード用
![](https://i.imgur.com/qogWAQz.png)
↓MD用
![](https://i.imgur.com/G6GgroI.png)

### MD見出し化 (change cell to heading ~)
- 1, 2, 3, 4, 5, 6
セル内の文字をMDで表示する。数字はMD記法の h1 ~ h6 に対応している。
![](https://i.imgur.com/xXIEB9K.png)

### セル選択の移動 (select cell above/below)
- K, Up or J, Down
ひとつ上、または下のセルを選択する。キーボードの矢印キーと同じ。

### セルの複数選択 (extend selected cells above/below)
- Shift+K, Sfift+Up or Shift+J, Shift+Down
セルを複数選択する。Sfift+矢印キーでも同じことができる。
![](https://i.imgur.com/FoodjUt.png)

### 上にセルを挿入 (insert cell above)
- A
ひとつ上にセルを挿入する。
![](https://i.imgur.com/tiT93LY.png)
↓
![](https://i.imgur.com/DmO1LiG.png)

### 下にセルを挿入 (insert cell below)
- B
ひとつ下にセルを挿入する。
![](https://i.imgur.com/MWD046l.png)
↓
![](https://i.imgur.com/uyoreii.png)

### セルの切り取り (cut selected cells)
- X
選択中のセルを切り取る。
![](https://i.imgur.com/qfUgXBP.png)
↓
![](https://i.imgur.com/sQe5RFl.png)

### セルのコピー (copy selected cells)
- C
選択中のセルをコピーする。

### セルの貼り付け (paste cells above/below)
- Shift+V or V
「C」でコピーしたセルをShift+Vでひとつ上、またはVでひとつ下にに貼り付ける。
↓　選択してCでコピー
![](https://i.imgur.com/HvsgzS6.png)
↓　セルを選び
![](https://i.imgur.com/KFsrgp2.png)
↓　Shift+Vで上に張り付け
![](https://i.imgur.com/tuGDCO9.png)

### もとに戻す (undo cell deletion)
- Z
「X」で切り取るなどして消したセルをもとに戻す。

### セルの削除 (delete selected cells)
- D,D [Dを２回]
選択中のセルを削除する。

### セルの結合 (marge selected cells, or current cell with cell below if only one cell is selected)
- Shift+M
セルを結合する。セルをひとつだけ選択しているときは、そのセルがひとつ下のセルと結合される。セルを複数選択しているときは、それらのセルが結合される。

・ひとつだけ選択していると
![](https://i.imgur.com/mDi7FMB.png)
↓ 
![](https://i.imgur.com/LJYDLM4.png)

・複数選択していると
![](https://i.imgur.com/9erFesZ.png)
↓　
![](https://i.imgur.com/YFXl5D2.png)

### 保存 (Save and Checkpoint)
- Ctrl+S or S
ファイルを保存する。Ctrl+Sは編集モード時も共通して使えるショートカット。

### 行番号の表示 (toggle line numbers/in all cells)
- L or Shift+L
セルの行番号の表示/非表示を切り替える。Lでは選択中のセルのみ、Shift+Lではすべてのセルの行番号表示を切り替える。
![](https://i.imgur.com/SZ50KaG.png)
↓ L
![](https://i.imgur.com/3L95Lws.png)

![](https://i.imgur.com/rfT4K9e.png)
↓ Shift+L
![](https://i.imgur.com/MqLKtlD.png)


### 実行結果をたたむ (toggle output of selected cells)
- O
セルの実行結果を表示/非表示切り替え。長々とした実行結果がコンパクトになる。
![](https://i.imgur.com/1DnWWTm.png)
↓
![](https://i.imgur.com/uD5loZ6.png)

### 実行結果をスクロール表示 (toggle output scrolling of selected cells)
- Shift+O
セルの実行結果を表示/スクロール表示切り替え。長い実行結果が見切れることなく確認できて便利。
![](https://i.imgur.com/7QZwtnt.png)
↓
![](https://i.imgur.com/k7Qinnt.png)

### ショートカット一覧 (show keyboard shortcuts)
- H
キーボードショートカットの一覧を表示する。Help から見られるものと同じ。
![](https://i.imgur.com/KhYL9Ya.png)

### 停止 (interrupt the kernel)
- I,I [Iを２回]
カーネルに割り込み。実行中のセルを停止する。
![](https://i.imgur.com/mX8aTkg.png)

### リセット (restart the kernel with dialog)
- 0,0 [0を２回]
カーネルのリスタート。すべての実行結果をリセットする。読み込んだライブラリや宣言した変数をリセットできる。誤操作すると困るので実行時にダイアログが出る。
![](https://i.imgur.com/ed2QBjO.png)

###  (close the pager)
- Esc or Q
挙動不明。

### ページスクロール (scroll notebook up/down)
- Shift+Space or Space
Shift+Spaceで上へ、Spaceで下へページをスクロールする。

## 編集モード用ショートカット

### コード補完 (code completion or indent)
- Tab
コードの補完。宣言した変数名やインポートしたライブラリの関数などを数文字入れると補完してくれる。
![](https://i.imgur.com/jfsaXQE.png)
↓
![](https://i.imgur.com/MfYgao1.png)

### ツールチップ (tooltip)
- Shift+Tab
ツールチップの表示。記述した関数の引数や、ライブラリ内にある説明を表示してくれる。
![](https://i.imgur.com/mYXywlZ.png)

### インデント (indent/dedent)
- Ctrl+`]` or Ctrl+`[`
インデントの入力と削除。PythonにおけるTabと同じでSpace４つ分。

### Ctrl+A (select all)
セル内の文字の全選択。
![](https://i.imgur.com/EiBL360.png)

### もとに戻す (undo)
- Ctrl+Z
もとに戻す。文字を誤って消した場合など、ひとつ前の操作を取り消してもとに戻す。

### コメントアウト (comment)
- Ctrl+/
選択中の行の先頭に「#」を挿入してコメント化する。またはコメント化されている行をもとに戻す。
![](https://i.imgur.com/GR6Dk5J.png)
↓
![](https://i.imgur.com/YOxDYo4.png)

### 行の削除 (delete whole line)
- Ctrl+D
カーソルのある行を削除する。

### 再選択 (undo selection)
- Ctrl+U
選択のやり直し。誤って文字の選択を解除してしまったとき、選択状態にもどせる。
![](https://i.imgur.com/cC9RgiX.png)
↓
![](https://i.imgur.com/ZO9Jr22.png)

### 上書きモード (toggle overwrite flag)
- Insert
入力が上書きモードになる。もう一度押すと戻る。知らずに押してしまうと困るキー代表。
![](https://i.imgur.com/Kx0Dip4.png)
↓
![](https://i.imgur.com/9W7XSfy.png)

### カーソルの先頭/末尾ジャンプ (go to cell start/end)
- Ctrl+Home,Ctrl+Up,Up or Ctrl+End,Ctrl+Down,Down
Ctrl+Homeでセル内の先頭へ、Ctrl+Endでセル内の末尾へジャンプする。セル内の記述が多くなってきたときに便利。
![](https://i.imgur.com/FFyrzBC.png)
↓
![](https://i.imgur.com/2gpD7lc.png)

### カーソルの文字列ごとの移動 (go one word left/right)
- Ctrl+Left or Ctrl+Right
Ctrl+矢印キー左右で単語(つながっている文字列)ごとにカーソルを移動できる。長い変数名などで矢印キーを連打せずに済むので便利。
![](https://i.imgur.com/zcNwJK8.png)
↓
![](https://i.imgur.com/npStQJ1.png)

### 文字列の削除 (delete word before/after)
- Ctrl+Backspace or Ctrl+Delete
カーソルの前後にあるつながっている文字列をまとめて削除できる。
![](https://i.imgur.com/hSIs9g0.png)
↓ Ctrl+Backspace
![](https://i.imgur.com/KpMeVqP.png)

###  (redo/redo selection)
- Ctrl+Y, Alt+U
詳細不明

### コマンドモードに移行 (enter command mode)
- Ctrl+M, Esc
コマンドモードに移る。

### コマンド一覧 (open the command palette)
- Ctrl+Shift+F, Ctrl+Shift+P
コマンド一覧を開く。コマンドモード時の「P」と同様。
![](https://i.imgur.com/XYMTXMm.png)

### セルの分割 (split cell at cursor)
- Ctrl+SHift+Minus
カーソルの位置を境に２つのセルに分割する。プログラムを記述した後で処理を２つに分けたくなったときなどに便利。
![](https://i.imgur.com/JJT7giR.png)
↓
![](https://i.imgur.com/u2FA9XU.png)

## おわりに
私自身のこんな記事があったらな、をもとに作成しましたが、いかがでしょうか。この記事が参考となって、作業スピードが上がった！となれば嬉しいかぎりです。