![mac-os](https://img.shields.io/badge/macOS-10.14.6 と 10.14.1-) ![ide-ver](https://img.shields.io/badge/IntelliJ IDEA-2020.2-)![keymap](https://img.shields.io/badge/Keymap-Mac OS X 10.5+ copy (ここひとつですんごく変わる)
-)
はじめに
前回に続き、今回もIntelliJの機能を紹介していきます。
基本機能を使いこなし始めたあの日に知っていたならば・・・と思った機能を紹介します。
限定的な場面でしか利用しない機能もあるのでつまみ食いで覚えていくとよきですね。
String Manipulation
2020年ワタシ的ベストプラグイン、栄えある1位を勝ち取ったString Manipulation。
name:Popup String Manipulation ...
key:option + shift + M
シーケンス作成
数字のついていない単語に対してはシーケンスを作成してくれないようなんです。
▼下記で紹介している Add Selection for Next Occurrence
などで単語選択して、一旦数字を入れる手間が必要になります
作成されるシーケンスは選択範囲の一番小さい数を元に作成されるのでいきなり100番とかもできますね。
ただこの子、ちょっと冴えないところがあって……
あとは数字は1ずつしか増減できないところとか。
IntelliJのマクロを使ったことないのでなんとも言えませんが、引数を受け取れるならマクロと組み合わせて・・・とできそうですがそこまでやるならVim使えって話ですし。
なんかいい方法ないかな・・・
name:Create Sequence
key:control + option + shift + command + S
インクリメント
選択範囲の数字を1足していく
name:Increment
key:control + option + shift + command + +
デクリメント
選択範囲の数字を1引いていく
name:Decrement
key:control + option + shift + command + -
String Manipulationは使い始めてからまだ1ヶ月とかそのぐらいなので、これからどんどん使い倒していこうと思います。
便利な使い方があったら教えてくださいね!
次の単語へ移動
command + F
の検索を通さなくて済むので便利ですね
name:Find Next / Move to Next Occurrence
key:command + G
単語をひとつずつ選択
上記のFind Next / Move to Next Occurrence
と似ているがこちらは移動するごとに選択状態を維持してくれるもの
name:Add Selection for Next Occurrence
key:control + G
ファイル内単語全選択
上記のAdd Selection for Next Occurrence
のファイル内一括選択版
name:Select All Occurrences
key:control + command + G
オプション2回連打からの矢印でマルチカーソル
name:不明
key:option 2連打(連打後ホールド)
+ ↑
or ↓
単語ごとに移動
macのoption + 左右矢印と同じですね。
次へ移動
name:Move Caret to Next Word
key:control + \
前へ移動
name:Move Caret to Previous Word
key:control + '
単語ごとを選択しながら移動
macのoption + shift + 左右矢印と同じですね。
次へ
name:Move Caret to Next Word with Selection
key:control + W
前へ
name:Move Caret to Previous Word with Selection
key:control + shift + W
拡張選択
最初にカーソルを合わせる位置によって選択される手数が違うのでいろいろ試してみてください。
GIFで言うと12行めの最初にカーソルを置いて呼び出せばbirthメソッド全体を1回で選択してくれる。ちょーべんりです。
name:Extend Selection
key:option + ↑
選択範囲縮小
Extend Selection
の逆バージョン。選択範囲を小さくしていく。
name:Shrink Selection
key:option + ↓
選択範囲内で置換
いつの日からかIntelliJでも選択範囲からのみの置換ができるようになっていた。
多分ver 2020〜だと思うんですけど、置換・検索のマッチングで正規表現やWord一致にショートカットが割り当てられていて使いやすくなりましたね!
よく利用するコンボが 拡張選択 -> これ
name:Replace...
key:範囲を選択して command + R
単語登録
たとえば「Qiita」など、造語やJapanese的には正しいんだけどEnglish的には正しくないワードを扱うときに、警告を出されると気に障るので適宜直していきます。
自分が開発しているサービス名などがtypo判定されるのって癪に障りますよね。
name:Show Context Actions
key:typoって言っている箇所でoption + enter
-> Save ~~ to dictionary
▼辞書登録したものは下記から確認、登録、削除ができるようになっている
警告内容の表示
なにか間違いがあるとコードに波線が引かれるようになっているのでその詳細を確認します。
エラー内容がコピーしづらいのがいまいち
name:Error Description
key:command + F1
つまりこれがしたいのか?を提案してくれる
▼typoしている箇所でTypo Rename toを選択すれば候補を持ってきてくれたり
name:Show Context Actions
key:option + enter
これが使えるよ。を教えてくれる
こうですよね?っていうのを提案してくれる目玉機能。
あああ!名前つき引数の名前がでてこねええってときにも親切にrequiredって書いてある状態で出してくれる。
チェーンしたときに押したり、改行した直後に押せばそれっぽい予測を出してくれる優れもの。複数回押すと利用できるあれこれのスコープが変わるのでお試しを!
name:Basic
key:control + shift + enter
アクティブなウィンドウのタブをすべて閉じる
name:Close All
key:control + F4
アクティブなウィンドウの選択ファイル以外のタブをすべて閉じる
つまり見ているファイルのタブだけは残るってことです。
name:Close Others
key:control + shift + F4
選択しているファイルの変更履歴を表示する
Gitで管理しているファイルで実行すると変更履歴を一覧で見られる
name:Show History
key:shift + command + S
クリップボードとの差分
たまによく使う。
違いを見比べるときに脳内リソース使わなく済むので助かってます。
name:Compare with Clipboard
key:クリップボードに比較したいものをコピーしたあとに、比較対象を選択してcontrol + shift + command + E
Autoscroll Save
プロジェクトツリーを開いたときに、選択しているファイルをツリーで選択状態にするかどうか。を全プロジェクトで共有できる。
ナニいってんだョ・・・って感じだと思うのでGIF見てください。
これを全プロジェクトで共通の設定にできるやつです。地味に便利!
name:Toggle Autoscroll from Source
key:control + shift + command + \
タブを次のウィンドウに移動する
ザ・孫の手
name:Move To Opposite Group
key:control + option + tab
引数をポップアップで表示
たしかデフォルトでは引数がグレーアウトで表示されていると思いますが、ずれる瞬間がすごく好みではないのでわたしはオフにしています。オフにする方法は・・・忘れました。
name:Parameter Info
key:command + P
定義をポップアップで表示
ジャンプするまでもないのでチラ見したいとき
name:Quick Definition
key:option + space
ドキュメントチラ見
name:Quick Documentation
key:control + J
ドキュメント参照
name:External Documentation
key:対象のメソッド上でshift + F1
たとえばArray#eachを参照すると https://rubydoc.info/stdlib/core/Array#each-instance_method に飛びます。
内容を先に書いてあとから包む
メソッドで包むほうは後述のメソッド切り出しを利用することがほとんどですが、条件式にするのは結構使ってます。
name:不明
key:-
trigger:なにかの式のあとで.
+ if
や def
、while
などを打つ
コピー履歴から貼り付け
ClipyやAlfred有料版を利用している方はあまり使わないかもしれないですね。
name:Paste from History...
key:shift + command + V
リファクタリングメニューの表示
IDEはリファクタリングでこそ真価を発揮する。こう言ったのはあきやさんですが、あながち間違ではない気がするんですよね。
name:Refactor This...
key:control + T
一時変数の除去
name:Inline...
key:command + option + N
メソッドに包み込む
name:Extract Method...
key:option + command + M
そのほかにもメソッドを親クラスに移動する、メソッドを子クラスに移動するといったものもあるのでぜひ活用してください
条件式などで囲む
name:Surround With...
key:option + command + T
コンフリクトの解消をわかりやすく
▼GitHubの画面からこういう風に表示されているやつを楽に修正できるやつ
▼複数のファイルがコンフリクトしている場合はここにコンフリクトしているファイルがすべて表示される
コンフリクトを修正したいファイルをダブルクリック
▼真ん中が最終的な変更になるように<<
やX
をポチポチして修正する
この画面で普通に文字入力もできる。
name:不明
key:command + 9
から選択
最近開いたファイルを一覧からもう一度開く
name:Recent Files
key:command + E
クラスやメソッドなどのスコープの始端、終端に移動する
地味オブ地味なんですけど結構好きなやつ
name:Move Caret to Matching Brace
key:control + M
クラスやメソッドを折りたたむ
name:不明
key:command + .
メソッドやクラスのパスをコピー
レビューするときとコードリーディングするときに使ってます。
name:Copy Reference
key:option + shift + command + C
ファイルのパスをコピー
name:Copy Paths
key:control + option + C
ファイルのパスを行番号と一緒にコピー
src/file_name.rb:10とかの形式でコピーするやつ。
name:Path With Line Number
key:control + option + shift + C
利用できるLive Templateを確認
今開いている拡張子で利用できるLive Templateの一覧を表示。
ときどき自分で登録したエイリアスがわからなくなったりするときに使ってます。
name:Insert Live Template...
key:command + J
思いついたら追加していく
おわりに
vim入れてる人多いんですかね・・・