intelliJ IDEA入門

# 前提
[実践 IntelliJ：高速な Java 開発を実現するための実践的なテクニックを学ぼう
](https://www.udemy.com/share/1066mc3@bttJIBhcsfRK-JuMaypHgTkaGLZD7hQu3JDiL0-FAnOzeIech4ha_IXjkjQSQQrV/)
上記Udemyの動画を基に忘れがちだけど個人的によく使うものや、感動したこと、動画内のことを実践している中で発見したことなどを備忘録として残しています。

※僕の環境がDesktop版のUbuntuなのでショートカットは基本的にWindowsと同じです。そのため本備忘録もWindowsベースととなっておりますためMacの方は追加で対応するキーを調べる必要はありますのでその点ご了承下さい。

仕事上Eclipseを使用することの多い自分用メモとして抜粋したものでしかないので実際に上記リンクから購入してご自身で動画を一周見てみることをおすすめします。(逆に動画内で紹介されてないことも書いてます。)
また、poco-techさんの動画講座は他にもいくつかありますがどれもかなりおすすめです。「これが知りたかったやつ！！！」ってのはもちろんのこと、「そんなのもあるのか？！」ってのを簡潔かつ分かりやすく紹介してくださいます。

# 備忘録

<br>

## 移動系
### なんでも検索：Shift → Shift
- tabを押せば横に移動できるので覚えなくてもOK！思い出したくなったらフォーカスすることで見れる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457845/cf2c4a97-ce7d-2eae-f224-aec9a1717c83.png)
### なんでも実行：Ctrl → Ctrl
### アクション検索：Ctrl + Shift + A
### どこでも移動のダイアログ表示：Alt + Shift + 1
- Projectツールウィンドウにてエディタで開いているファイルにフォーカスを当てる
    - (一時的)：エディタをアクティブにした状態で「どこでも移動のダイアログ表示」に続けて1
    - (恒久的)：Projectツールウィンドウの歯車マークからAlways Select Opend Fileを選択
### 行番号指定移動：Ctrl + G
### 最近開いたファイル：Ctrl + E
### 最近編集したファイル：Ctrl + E → Ctrl + E
### 定義元へジャンプ：Ctrl + B または Ctrl押しながらクリック
### 呼び出し元へジャンプ：定義元へジャンプと同じ
### 戻る：Alt + Shift + 左矢印
### 進む：Alt + Shift + 右矢印
### テストクラスと行き来する：Ctrl + Shift + T
- 補足：空のテストクラスを作った場合はプロダクトコードとリンクしないので新規作成時は適当で良いのでテストクラス新規作成ダイアログのMemberの何かしらにチェックを入れて作成するとリンクする。本来実施したいテストを書き始めたら忘れないように削除が必要にはなる。
### エディタで開いている横のファイルに移動：Alt + 左矢印/右矢印
### ファイル内キーワード検索：Ctrl + F
### ファイル横断キーワード検索：Ctrl + Shift + F

## 編集系
### 行削除：Ctrl + Y
### 行の複製：Ctrl + D
### ステートメントの移動：Ctrl + Shift + 上矢印/下矢印
### マルチカーソル
- マウスVer：Alt + Shift押しながらクリック
- キーボード(対象が真上、真下の場合)：Ctrl → Ctrl押しながら上矢印/下矢印
- キーボード(対象キーワードが同じだが離れている場合)：Alt + J
### 引数確認(パラメータ情報)：Ctrl + P
### 型情報確認：Ctrl + Shift + P
### ひとつ上の行に改行して移動：Ctrl + Alt + Enter
### ひとつ下の行に改行して移動：Shift + Enter
### Auto Import(自動インポート)
```コンパイルエラー箇所でAlt + Enter```

自動設定の場合は以下
Settings > Editor > General > Auto Import
以下の画像の通り ☑ Add unambiguous imports on the fly とする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457845/45547176-43c5-c12b-634c-2e9fface4a2b.png)
### Optimize Imports(未使用インポート文自動削除)
```Ctrl + Alt + O```

自動設定の場合は以下
Settings > Editor > General > Auto Import
以下の画像の通り ☑ Optimize imorts on the fly とする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457845/c97163ec-9b55-ad75-3ca3-b65dec276949.png)
※この際に意図せず既存のimport文の並び順が変更されることもあるので注意

### Reformat Code：Ctrl + Alt + L
上記に関しては選択範囲内で適用することが可能

自動設定の場合は以下
Settings > Tools > Action On Save > ☑ Reformat code
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457845/a839a5b9-2ee9-92e1-be4d-560ec01b7362.png)
これに関しては個人的には自動設定せずにショートカットキーを覚えたい。

### Formatter適用外範囲指定
前提として以下の事前設定が必要
Settings > Code Style > Formatter > ☑ Turn Formatter on/off with markers incode comments
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457845/661b9027-fcfd-fc47-6b58-4a12a77fe80e.png)

`// @formatter:off` ~ `// @formatter:on`までフォーマッター適用外にできる。
ある場所から下は全ての場合は`// @formatter:off`だけでOK

## リファクタリング系
### リファクタリングポップアップ：Ctrl + Alt + Shift + T
とりあえずこれだけ覚えとけば後はよく使うやつはリファクタリングポップアップを参考にする。

基本的には`Ctrl + Alt + 何かしらのキー`に対応していることが多い。
例)
- 変数(Variable)の抽出：Ctrl + Alt + V
    - 追加オプション設定：Alt + Shift + O
- 定数(Constant)の抽出：Ctrl + Alt + C
    - 追加オプション設定：Ctrl + Alt + C
- メソッド(Method)の抽出：Ctrl + Alt + M
- フィールド(Field)の抽出：Ctrl + Alt + F
    - 追加オプション設定：Ctrl + Alt + F
- パラメーターの抽出：Ctrl + Alt + P
- インライン化：Ctrl + Alt + N

### 使用箇所の表示：Alt + F7
「何でも検索」や「アクション検索」ではfind usagesで検索可能
### 呼び出し階層の表示：Ctrl + Alt + H
「何でも検索」や「アクション検索」ではcall hierarchyで検索可能


### シグニチャー変更
In Placeが便利
1. 修正したいメソッドを修正
1. 修正後そのメソッドのシグニチャー箇所にフォーカスが当たっている状態で`Alt + Enter`

## VCS関連
### VCS Operationsポップアップ：Alt +` らしいが表示できないので「なんでも検索」でVCS

### 差分表示：Alt + 0 → Ctrl + D
### 次の差分へ移動：差分表示の状態でF7
### 前の差分へ移動：差分表示の状態でShift + F7
### 差分ロールバック：Ctrl + Alt + Z
### 選択範囲の全ての履歴表示
1. 範囲を選択
1. 右クリック → Git → Show histroy for selection
### マージ：Ctrl + Shift + A → Mergeを検索
### コンフリクト解消：Ctrl + Shift + A → Resolve Conflictを検索


## ビルドシステム関連
### Load Gradle Changes：Ctrl + Shift + O
### Load Maven：Ctrl + Shift + O

## その他設定関連など
### Settingsダイアログの表示：Ctrl + Alt + S
- Intellij IDEA自体が使用するJVMバージョンの設定変更もここで行う。
    - Gradleの場合
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457845/58110259-0427-9e60-d114-c0ad99bf505a.png)
    - Mavenの場合　(恐らく設定不要)

### Postfix Completion(後置補完)の一覧表示
Settings > Editor > General > Postfix Completionで確認可能
### Project Structureダイアログの表示：Ctrl + Alt + Shift + S
以下キャプチャのサイドメニューの内容を設定するためのダイアログ。
SDKの設定変更もこのダイアログで実施(~~恐らくEclipseのinstalled JRE相当？~~ プロジェクト固有の設定なのでEclipseのプロジェクトファセット相当？)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457845/6a913cfc-8009-0ec7-8ba0-944e0dc75590.png)

### Hot Swappingの有効化(Community Editionの場合)
1. 以下の通りsystem settingsにて「save files if the IDE is idle for 1 seconds」に変更する。
※有料版だとこの手順が多分不要。もしかしたら2, 3も不要かも？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457845/e56e5d7b-8c6d-023f-ebc7-06b6c70303c9.png)
2. 以下の通りBuild, Execution, Deployment > Compilerにて「Build project automatically」にチェックを入れる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457845/8bd651a4-271f-186a-026c-0d705b19ae40.png)
3. 以下の通りAdvanced Settingsにて「Allow auto-make to start even if developed application is currently running」にチェックを入れる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457845/ea66f972-bd41-24e0-7db2-d6846d490fdf.png)

### HotSwapping対象にテンプレートファイルも含める
以下のコードをbuild.gradleに追記する。
```gradle
tasks.named('bootRun') {
	sourceResources sourceSets.main
}
```

### Intellij IDEAでLombokを使用する。
Gradleの場合build.gradleに以下のような依存関係を記述する。(以下は例)
```gradle
configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}
dependencies {
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
}
```
その後Settingsから以下のように「☑Enable annotation processing」とする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457845/a7dfd23a-3a87-11e2-584a-c928446ae6a0.png)

僕の環境ではこれで無事に使用できたので追加対応は行ってませんがLombokのプラグインが必要な場合もあるようです。そのような場合は以下のようにSettings > pluginsからLombokをインストールして下さい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/457845/f0cfb5f3-abe5-7d64-10d7-d40e559dc5f7.png)