【gifアニメつき】テキストエディタとしてのRStudioを極めたい

> RStudioはエディタ

~~古事記にも書かれている~~ 野球好きな人が言っていた。実際、RStudioのエディタ機能はテキストエディタに引けをとらないくらい完成度が高く充実していて大変良い。**RStudioはエディタである**。そんなエディタ機能を極めるべく、RStudioのテキスト編集機能についてメモしておく。すべてではないし、使えそうなものだけをメモしたつもり。操作をところどころ間違えていて格好悪いがgifアニメを加えてみたので実際わかりやい（自賛）。

RStudioのバージョンは0.99.xxであれば問題ないと思われる。なお、Macで試しているのでWindowsやLinuxではショートカットキーが異なるはずなので注意されたし。ショートカットキーは記号で表現されることが多いが、ここでは英語表記で統一する（すなわち、⌘... command, ⇧... shift, ^... control, ⌥... option）。

ちなみに、RStudioで使えるキーボードショートカットを表示するには`option + shift + K`。早引き版が表示される。全てを見たい場合は早引き版の右上にある"See All Shortcuts..."を押すと良い。

ファイルの操作
--------------

### 新規ファイルの作成

-   `command + N`... R Markdown
-   `command + shift + N`... Rスクリプト

### ファイルを開く

![0xkhhp97HG.gif](https://qiita-image-store.s3.amazonaws.com/0/19462/d7edccc0-56be-3b7c-f037-b047a834e1c1.gif)

**`control + .`**

作業ディレクトリ以下にあるファイルを開く際に便利。開きたいファイル名を聞いてくるウィンドウが立ち上がるので、そこからファイルを選択する。`.R`, `.rmd`, `.md`であれば検索の対象になるが、対象外となるファイル（画像など）もある。同名のファイルであっても、内包されているフォルダ名を表示してくれるので便利。また`command` + `O`でもファイルを選択できる。

### タブ（編集ファイル）の移動

![sjb5Ts4944.gif](https://qiita-image-store.s3.amazonaws.com/0/19462/62822108-71a1-1ef0-1c81-db91d8a35f6a.gif)

-   `control + F11`... 前のタブに移動
    -   `control + shift + F11`... 最初のタブに移動
-   `control + F12`... 次のタブに移動
    -   `control + shift + F12`... 最後のタブに移動

RStudioではタブ機能によって複数のファイルを同時に開くことができる。

字下げ（インデント）
--------------------

`tab`。元に戻すには`command + I`

検索と置換
----------

-   `command + F`... 検索と置換機能の起動。`esc`で解除
-   `command + G`, `command + shift + G`... 前後で対象文字列を検索
-   `command + shift + J`... 検索して置換

気に入っているところは、テキストを選択しているとはじめからその部分が検索・置換の対象となることだ。

選択範囲の拡張・縮小
--------------------

![LbQeE8FU1p.gif](https://qiita-image-store.s3.amazonaws.com/0/19462/93549f9e-15ac-a578-6ded-804dd0016b7b.gif)

-   **`shift + 矢印キー`**... 一文字ずつ選択範囲を広げていく
-   `option + command + shift + 上下矢印キー`... （基準がよくわからないが）選択範囲を順次拡張

編集系
------

### 行操作

![aQQxMCjitb.gif](https://qiita-image-store.s3.amazonaws.com/0/19462/0ce0854a-d3fb-df97-e332-86e945e2b143.gif)

#### 行の削除

**`command + D`**

カーソルがある行を削除する

#### 行の移動・コピー

-   **`option + 上下矢印キー`**... カーソルがある行のテキストを上下に移動
-   **`option + command + 上下矢印キー`**... 現在のカーソル行のテキストを上下にコピー

#### 複数行の同時編集

**`control + option + 上下矢印キー`**で範囲を選択、対象行に対して同様の処理が行われる。編集を終える際は`esc`で離脱するか、適当な箇所をクリックする。

行の先頭または末尾を対象に編集する際は`control + option + 上下矢印キー`

### カーソル位置より前（後）のテキストを削除、挿入（ヤンクする）

![CRfpnBl6fb.gif](https://qiita-image-store.s3.amazonaws.com/0/19462/715b1f3b-08f9-a852-fb00-bcfcd9bb2379.gif)

-   `control + U`... カーソル位置より前の部分を削除
-   `control + K`... カーソル位置より後ろを削除
-   `control + Y`... ヤンクの挿入

### 複数箇所の同時編集

![Lwh9JMHSTT.gif](https://qiita-image-store.s3.amazonaws.com/0/19462/a0f294d5-60dc-58bd-417b-166fe17d6653.gif)

**`option + command + shift + M`**

関数を書いているときなど、変数名や引数名を変更するのは面倒なので、一度にやりたい。検索して置換しても良いけど、こういう方法もある。注意が必要なのは、例えば関数内に含まれる別の関数は編集の対象にならないということ。

挿入関係
--------

まとめてどうぞ。

![hQ4JbyU08D.gif](https://qiita-image-store.s3.amazonaws.com/0/19462/40ff99d3-1f91-0f3b-b42c-00b212b817c7.gif)

### コメント

**`command + shift + C`**。`command + shift + /`で複数行のコメントを整理する

### 空行の挿入

**`option + command + 上下矢印キー`**... 矢印キーの上下に対応した空の行を加える

### chunkの挿入

**`option + command + I`**

### コードセクションの挿入

**`command + shift + R`**

セクション名を入力するように求められるので、適当な名前をつける。これが見出しとして使用される。

### 代入演算子の挿入

**`option + -`**

### パイプ演算子の挿入

**`command + shift + M`**

### snippetの挿入

**`shift + tab`**

スニペットについての過去記事 -> [RStudio v0.99に搭載されたコードスニペット機能が便利 - Qiita](http://qiita.com/uri/items/50b651c2885b421e0ff4)

補助系
------

アウトラインの表示・移動
------------------------

**`shift + command + O`**

![wkN4cTUM0H.gif](https://qiita-image-store.s3.amazonaws.com/0/19462/262d5d00-2c37-7645-6049-03d87d6697eb.gif)

見出し（`#`やコメント）に応じてアウトラインをよしなに表示してくれる。ジャンプしたい見出し名をクリックするとそこに飛ぶ。ソースパネルの左下にある見出しリンクと同様の機能。

ポップアップで移動先の見出しを表示するには`option + command + shift + J`。キーが多いので基本的に私はアウトラインパネルを使っている。

実際大事なのでこれから書くコードには適宜見出しやコメントを付けるようにしたい。また、行を指定して移動する場合には`option + command + shift + G`

### 関数ファイルのソースを閲覧する

**`F2`**

関数名にカーソルを置いた状態で`F2`を押すと関数のソースファイルを表示する。俺々関数であっても、開くので便利。ただ、このファイルは閲覧専用なので編集することはできない。

キーボードショートカットキーの変更機能が付いた
----------------------------------------------------

~~[coming soon](https://github.com/rstudio/rstudio/pull/466)~~ v0.99.644からの機能。RStudioで設定されているショートカットに対して任意のキーを割り振ることができる。メニューバーのTools -> `Modify Keyboard Shortcuts...`で編集可能

参照) [Customizing Keyboard Shortcuts – RStudio Support](https://support.rstudio.com/hc/en-us/articles/206382178-Customizing-Keyboard-Shortcuts)

他にもいろいろと設定できそうだ。