自分がよく使うRStudio キーボード・ショートカットを紹介

これは[RStudio Advent Calendar 2017](https://qiita.com/advent-calendar/2017/rstudio)の23日目の記事です。

## キーボード・ショートカットのすすめ

RStudioはRを便利に使うGUIが多くて支持されていると思います。それは揺るぎない事実ですしそのとおりなのですが，やはり私はキーボード・ショートカットを多用します。それは「Rはコードを編集するのが基本でキーボードに触れている時間が長い」からです。そのため，自分がよく使う機能や操作についてキーボード・ショートカットを憶えておくことは，作業の効率性を格段に向上させます。

RStudioはかなりたくさんのキーボード・ショートカットが実装されています。またそのクイックリファレンスがRStudioに入っています。RStudioのメニューから[Help] - [Keyboard Shortcuts Help]に進むとクイックリファレンスが表示されます:

![13213421.png](https://qiita-image-store.s3.amazonaws.com/0/35118/9321d564-0b3b-9909-78a6-ea9d1270589c.png)

なお，このクイックリファレンスが表示されるキーボード・ショートカットは**Alt+Shift+K**です。全てのショートカットを確認したい場合は，このクイックリファレンスの右上にあるリンクをクリックしてください。

キーボード・ショートカットはRStudioのバージョンによって異なります[^1]。この記事では2017/12/23時点での安定版であるv1.1.383で紹介します。あと私はUbuntuユーザーなのでLinux版です[^2]。

[^1]: RStudioは次々と新機能が組み込まれるのは知られていますが，大抵新機能が追加されるとそれに関するショートカットも準備されます。開発者メンバーが一番の利用者で，使い勝手を追求している結果だと思います。

[^2]: Windows版はそのまま使えるとは思います。Mac版にもほぼ搭載されていますが多少組みわわせが違うので，上述のリファレンスを参照してください。

## フォーカス移動

### Source/Consoleにフォーカス

<dl>
 <dt>Ctrl+1</dt>
 <dd>Sourceにフォーカス</dd>
 <dt>Ctrl+2</dt>
 <dd>Consoleにフォーカス</dd>
</dl>

私は基本Sourceでコードを編集して実行するのですが，ちょっと試す場合などでConsoleでもコードを入力します。そのため頻繁にSourceとConsoleを行ったり来たりするので重宝します。

### タブの切り替え

<dl>
 <dt>Ctrl+Shift+.</dt>
 <dd>タブの切り替え<strong>(おすすめ)</strong></dd>
 <dt>Ctrl+Tab</dt>
 <dd>右隣りのタブへ</dd>
 <dt>Ctrl+Shift+Tab</dt>
 <dd>左隣のタブへ</dd>
</dl>

複数のスクリプトファイルなど開いて作業することがほとんどかと思います。というわけでこれらのショートカットなのですが，おすすめは**Ctrl+Shift+.**です。ぱっと現在開いているタブリストがSourceペイン右上に表示され，あとは上下させてEnterで移ります。捗ります。

なお，左右のタブへ移るショートカットキーですが，Server版でブラウザから操作してると微妙に競合することがあるみたいなので，あまり依存しないほうがいいかも。

## コード編集

### 元に戻す(Undo)/やり直し(Redo)

<dl>
 <dt>Ctrl+Z</dt>
 <dd>元に戻す(Undo)</dd>
 <dt>Ctrl+Shift+Z</dt>
 <dd>やり直し(Redo)</dd>
</dl>

あまりに当たり前なので記載されていないCtrl+zですが，Redoのショートカットは1年位前に知りました。Ctrl+Yではないですよ，みなさん。

### pipe演算子を挿入

<dl>
 <dt>Ctrl+Shift+M</dt>
 <dd>pipe演算子(`%>%`)を挿入</dd>
</dl>

説明不要，ですよね?

### 選択行をコメント/非コメントに

<dl>
 <dt>Ctrl+Shift+C</dt>
 <dd>選択行をコメント/非コメントに</dd>
</dl>

コメントアウトしたり，またそれを戻したりするのはしょっちゅうですね。なお，このショートカットはRスクリプト(R言語)以外でも適切に反応してくれる場合もあります。ぜひ別ファイルや別言語でも試してみてください。

### コード補完・スニペット挿入

<dl>
 <dt>Tab</dt>
 <dd>コード補完</dd>
 <dt>Shift+Tab</dt>
 <dd>スニペット挿入</dd>
</dl>

RStudioは非常に強力なコード補完機能がありますし，スニペットも充実しています。**RStudioを使っていればひたすらTabキー連打するのは当然**ですよね。このコード補完やスニペットについては[以前この記事にてまとめた](https://qiita.com/kazutan/items/4be49fbacb8c3d6c0f44)ので参照してください。

### セクション挿入とジャンプ

<dl>
 <dt>Ctrl+Shift+R</dt>
 <dd>セクション挿入</dd>
 <dt>Alt+Shift+J</dd>
 <dd>セクションなどへジャンプ</dd>
</dl>

**Rスクリプトにはセクション区切りを入れましょう**。ぞうさんとの約束です。

セクションで分けることにより，Sourceペインの右側でセクション一覧がちゃんと機能するようになりますし，もうひとつ挙げているショートカットが活きてきます。いくつかセクションを組み込んだRスクリプトでAlt+Shift+Jを実行してみてください。するとSourceペイン左下にジャンプ先一覧が展開されるかと思います。あとは上下に動かしてEnterでジャンプできます。捗ります。

## その他

### Rmd関連

<dl>
 <dt>Ctrl+ALt+I</dt>
 <dd>Rチャンク挿入，チャンクを分割</dd>
 <dt>Ctrl+Shift+K</dt>
 <dd>Knitを実行</dd>
 <dt>Alt+Shift+J</dt>
 <dd>見出しやチャンクへジャンプ</dd>
</dl>

この記事はあくまで「私がよく使うキーボード・ショートカット」なので，これらを挙げないわけにはいかないですね。頻繁にR Markdownドキュメントを作成するなら絶対に憶えましょう。

また，セクション挿入の時に紹介したジャンプのショートカットですが，Rmdファイルでも
活用できます。この場合見出し&チャンク一覧から飛べるようになり，すごく便利です。ぜひ使ってみてください。

### その他個人的によく使うもの

<dl>
 <dt>F1</dt>
 <dd>ヘルプを表示</dd>
 <dt>Ctrl+Shift+B</dt>
 <dd>Buildを実行</dd>
</dl>

関数の仕様をチェックするのは非常に大切で，まず当たるべきはヘルプドキュメントです。関数を入力している途中にコード補完で関数の候補が出てきますが，その際F1を押すと，その関数のヘルプが表示されます。いちいち`?hoge`とか打たなくてもこっちのほうが楽です。

また，私はWebサイト構築やパッケージ作成とかもたまにやるので，その際は頻繁にBuildを実行します。なのでこのショートカットも多用します。

## 番外編

### キーバインディングの変更

RStudioはキーバインディングを変更できるようになってます。

![234522.png](https://qiita-image-store.s3.amazonaws.com/0/35118/426feb18-bae9-3f61-1722-82559ff38c6f.png)

多少この記事の主旨から外れるので参考資料を紹介するに留めたいと思います:

[Customizing Keyboard Shortcuts &ndash; RStudio Support](https://support.rstudio.com/hc/en-us/articles/206382178)

### RStudio Addinによる拡張

RStudioにはAddinを組み込める機能があり，またこのAddinは自作・公開できます。なので「こういう動作をキーボード・ショートカットだけでやりたい」というのがあれば，自分で準備していくことが可能です。この域まで到達するような方は私なんぞの説明を聞かずとも自ら調べて実践できるでしょう。

## さいごに

### 目指すべきは「作業の効率化」

別にキーボード・ショートカットを憶えなくてもRStudioは十分に使えます。また逆に今回紹介したもの以上にも非常に多くのキーボード・ショートカットがあります[^3]。でも目指すべきはあくまで「自分の作業の効率化」です。

まずはRStudioで自分がどのような作業を行っているかを見直してチェックするのが先です。よく行う作業があって，そこで手間がかかっているのなら，そこをどう効率化できるかを考えましょう。その時の選択肢として，キーボード・ショートカットがあるだけです。私は(多分他の人よりも)R Markdownを利用することが多いので，そこで使えるキーボード・ショートカットは必須となりました。ただそれだけのことだと思います。

なので，この記事がみなさんの作業効率化のために考える機会となればと願ってます。

**Enjoy!**

[^3]: 今回，Run周りのショートカットは省略しました。私はひたすらCtrl+Enterやりますので。