JuliaのREPL（インタラクティブモード）の使い方

# 概要
Juliaの対話型コマンドライン REPL の使い方について、説明します。
REPLとは、 Read Eval Print Loopの略で、対話モードやインタラクティブモード等とも呼ばれます。

こちらの内容は、公式解説から抜粋したものとなりますので、
更に詳細な情報は公式サイトをご確認ください。

**The Julia REPL · The Julia Language**
https://docs.julialang.org/en/v1/stdlib/REPL/
# 環境
確認した環境です。
若干動作が異なる部分があるかもしれませんが、WindowsやLinuxでも同様に利用できるかと思います。

macOS：10.15.2 (Catalina)
Julia：1.3.1

# 対話モードの種類
機能毎にいくつかのモードがあります。
## ジュリアンモード
デフォルトの動作モードです。
`julia>`のとに式や関数を入力し、`enterキー`で実行します。
![スクリーンショット 2020-01-20 22.40.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142886/9df24039-9d25-3dbf-b09d-fa30de2e028f.png)
## ヘルプモード
ジュリアモードの際に、`?`を入力するとヘルプモードとなります。

```bash
julia>?
```

このモードでは、関数やマクロなどのドキュメントを確認できます。
例えば、`print`と入力すると次のような出力となります。
![スクリーンショット 2020-01-20 22.43.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142886/e469a6e1-fce2-c5d1-bf65-a1e26e60470d.png)
## シェルモード
ジュリアモードの際に、`;`を入力するとシェルモードとなります。

```bash
julia>;
```

このモードでは、juliaを終了することなく、シェルコマンドの実行を行えます。
例えば、`echo "Hello Julia!"`と入力すると標準出力に、
`Hello Julia!`と出力されます。

![スクリーンショット 2020-01-20 22.45.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142886/f7fb3d79-48ca-f480-8197-118b305a7654.png)
## 検索モード
各モードの際に、`CTRL + R`を押すと、検索モードとなります。
このモードでは、過去に入力した文字を検索することができます。

例えば、ジュリアンモードで`print("Hello Wolrld!")`
と入力した後に、`CTRL+R`を押して検索モードに入り、
`p`と入力すると、先程入力した`print("Hello Wolrld!")`
が候補として表示されます。
![スクリーンショット 2020-01-20 22.48.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142886/68c3377a-13c2-d451-4f8b-c7360aa05167.png)

# タブ保管
入力中に`[TAB]`を押すことで、文字の保管や参照などが行なえます。
## 関数名の保管
関数を一部入力した状態で、`[TAB]`を押すと、その時点までの文字で始まる関数の一覧を表示することができます。
例えばジュリアンモードで`pr[TAB]`と入力すると、次のように候補一覧が表示されます。
![スクリーンショット 2020-01-20 23.03.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142886/2aae6eda-19df-b466-bab1-91024d6eb40b.png)
## パスの保管
ダブルクォーテーションを入力した直後に`[TAB]`を押すと、カレントディレクトリに存在するディレクトリやファイル名を参照することができます。
例えば、カレントディレクトリに、以下ファイルが有る状態で

```
test.txt
test2.txt
```
`path="te[TAB]`
と入力すると
`path="test`
と、ファイル名の保管できる部分まで入力されます。
また、複数候補がある場合は、更に`[TAB]`を入力することで、
候補一覧が表示されます。
![スクリーンショット 2020-01-20 23.09.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142886/324962ca-7512-8dad-9f04-7ce09aad0e68.png)
## 引数の確認
関数の`(`まで入力した段階で`[TAB]`を入力すると、
使用可能なメソッドの一覧を表示します。
また、定義されている場所も同時に示されます。

例えば`max([TAB]`と入力すると次のように出力されます。
![スクリーンショット 2020-01-20 23.17.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142886/5f448dbe-30d8-6bdd-4cc1-7089669dc451.png)

## フィールドの確認
`.`を入力したあとに、`[TAB]`を入力する事で、フィールド情報の一覧を確認できます。

例えば`UUIDs`をインポートした後に、`UUIDs.[TAB][TAB]`と入力すると、
UUIDsのフィールド一覧が表示されます。
![スクリーンショット 2020-01-20 23.24.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142886/f9b75d50-9847-fe34-b907-82069c4706a3.png)

## 辞書キーの確認
辞書キーも同様に保管可能です。
辞書キーを途中まで入力した状態で`[TAB][TAB]`と入力すると、該当するキーを確認できます。
![スクリーンショット 2020-01-20 23.28.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142886/e4e3009b-1e09-b816-a953-28199a362201.png)


# ショートカットキー
ボタンの組み合わせ等によって、キーに割り当てられた機能を利用できます。

## プログラム制御
|キー|説明|
|:--|:--|
|Ctrl + D|Juliaの終了|
|Ctrl + C|処理の中断|
|Ctrl + L|画面をクリア|

## カーソル移動
|キー|説明|
|:--|:--|
|Ctrl + F|カーソルを右に|
|Ctrl + B|カーソルを左に|
|Ctrl + A|行頭|
|Ctrl + E|行末|
|option/alt + →|１単語右に|
|option/alt + ←|１単語左に|