TORICOでは、開発者のエディタは JetBrains のもの (PyCharm, WebStorm, PHPStorm 等) を使うことにしています。今回、最初に必ず覚えたいショートカット・機能を紹介します。
かなり使うキーボードショートカット
Shift 2回 なんでも検索 (神検索)
Shift をダブルクリック
でなんでも検索ができます。クラス、ファイル、関数などなんでも検索できます。
Shift 2回のあとさらに Shift2回 (つまり Shift4回) で、プロジェクト外のファイル ( Django や Vue などの依存ライブラリのコード)も対象に検索します。
このなんでも検索時、ファイルパスの末尾に :行数
が入っている場合、例えば auth/index.html:20
のような文字列で検索した場合、検索該当結果を開いた時その行がすぐに表示されるため、スタックトレースのログから該当箇所を開きたいとき重宝します。行数ごとコピーしてそれで検索すれば一発で見たい行が表示されます。
そのほかの検索
調べる対象が絞り込めている場合は、特定のカテゴリで検索したほうが検索結果を絞り込めるため見やすいです。
⌘+O
… クラス名で検索
⌘+Shift+O
… ファイル名で検索
⌘+Shift+F
… ファイルの中身で検索
複数のファイル(プロジェクトに含まれる全ファイルや、特定のディレクトリ以下のファイル)から、内容にマッチするものを検索します。
⌘+Shift+A
… アクション検索
エディタの機能を検索できます。ショートカットキーを忘れた時のチートシートとしても使えます。いくつかの設定項目の変更も、このショートカットから行えます。
⌘+[
… 戻る
コードの関数実行箇所などで ⌘+クリック
することで定義にジャンプして、コードを読み進めていきますが、そのナビゲーションを戻る時に使います。ブラウザで戻るようにコードを戻ることができます。おそらく、マウスを使っている場合は戻るボタン(第4ボタン)がそのまま使えるはずです。
Control+Tab
… スイッチャー
ブラウザのタブ切り替えと同じショートカットキーになっているはずです。
押し方によっていくつかの使い方があります。
Control を押しながら Tab を押してすぐに両方離す
と、「1つ前に編集していたファイル(タブ)」に戻ります。⌘+[ の「戻る」とは違い、ファイル単位での行き来しかできません。
連続で押すことで、2うのファイルを交互に見比べられます。
このショートカットでファイルを切り替えた場合は戻るスタックに積まれるため、さきほどの ⌘+[ の戻るショートカットで戻れます。
Control を押しながら Tab を2回押す
ことで2つ前のファイルに戻れます。
閉じてしまったタブには移動できません。
Control を押しながら、Tab を押して離し、Control は押しっぱなしにする
にすることで、Switcher が開きっぱなしになります。右側のペインにはタブ一覧が表示され、左側のペインには ウインドウが一覧表示されるので、直接クリックして選択したり、ショートカットキー(⌘+数字)を確認するチートシートとしても使うことができます。
このショートカットキーはJISキーボードではめっちゃ押しやすいのですが、USキーボードだと少し押しにくいので、Macの設定で Caps Lock キーをControl にしてしまうのがおすすめです。とにかく押しやすいため、タイピングが得意でなくても、キーボードを見なくてもミスらないという利点がありますので、積極的に使ってほしいです。
⌘+E
… 最近使ったファイル
さきほどの Switcher と似ていますが、こちらはキーを放しても閉じません。なので、「最近使ったけど何個前に使ったかは覚えていない」ファイルであれば、このショートカットで一覧から探す。明確に 1つ(もしくは2)前に使った、と理解しているファイルであれば Control+Tab の Switcher で切り替えると良いでしょう。
タブを閉じてしまったファイルを選択した場合、新たにエディタタブで開いて表示します。
⌘ を押しながら、E を2回押す
と、最近修正したファイルに絞って表示します。
⌘+Option+L
… コードの整形
設定した整形ルールに応じてコードを整形します。
プロジェクトルートに .editorconfig がある場合、その内容に従ってフォーマットします。
あくまで簡易的なものとわりきり、本格的なコードのフォーマットは別途ファイルの保存時に行ったほうが良いです。
TypeScript なら eslint --fix
(設定の ESlint 内にチェックボックスがある), Python なら autopep8
(file watcher で), PHP なら csfixer
(file watcherで) をファイル保存時に自動整形をかけることが簡単にできるので、設定してください。
⌘+Shift+N
… New Scratch File
新しいスクラッチファイルを作ります。スクラッチファイルとは、プロジェクトに含めないメモ的なファイルを瞬時に作れる機能です。
新しい Python や TypeScript ファイルを作って即時実行させたり、SQLファイルを作ってDBを検索したりできます。中でも便利なのが、http 入力することで出てくる HTTP Request ファイルで、Postman ほど高機能ではないですが、簡単な HTTP リクエストをスクリプト化して実行できます。ターミナルから curl コマンドを実行するより簡単でパラメータも読みやすく、ログも残るため使い勝手が良いです。
開発環境を Docker で構築している場合、Python ファイル等を実行する場合はスクラッチファイルのディレクトリを Docker でマウントしてパスマッピングを設定することで実行できます。
HTTPリクエストファイルの解説記事
pleiades.io の翻訳記事: IntelliJ IDEA コードエディターの HTTP クライアント
私が前に書いた Qiita 記事: .http で簡単HTTPテストリクエスト
ショートカットキーでは使わないけど便利な機能
Find Usages
指定したワードの出現箇所を検索して表示します。ショートカットキーはデフォルトで設定されていますが、Option+F7
と若干複雑なため、もっぱら右クリック(二本指タップ)→コンテキストメニューから Find Usages
を選択することが多いです。
リファクタリングする際、メソッドがどこで使われているか、とか、クラスをどこで継承しているかを調べる時によく使います。
Select Opened File
Project ウインドウの中にある、ライフル銃のスコープをモチーフとしたボタン
です。押すことで、今エディタで開いているファイルをProject ウインドウの中心に持ってきます。検索や ⌘+クリックで掘り進んでいったファイルがどこにあるかを調べたり、その周りのファイルを読む時に使います。
Open In Github
エディタで該当行をドラッグして選択→二本指タップ(コンテキストメニュー)→ Open In → Github
すると、ブラウザが起動し指定行が Github で表示されます。
URL を Slack で他のメンバーに送ることで、課題箇所の共有ができます。
Enter Presentation Mode
部門会議などで共有スクリーンにコードを表示する時は、
View -> Appearance -> Enter Presentation Mode
を行うと、コードが大きな文字で表示され、コードレビューがしやすくなります。
デバッガの「Evaluate Expression」
エディタでブレイクポイントを設定し、ブレイクさせた時にデバッガウインドウが表示されます。
このデバッガウインドウの上部に、電卓のようなボタン
があり、これを押すと小さなウインドウ (Evaluate ウインドウ) が表示されます。
Evaluate ウインドウの中の、Expression フィールドの中に Python のコードを書くと、それが評価されて Result に結果が表示されます。単純に変数の中身を見たり、メソッドのリターンを確認したりと重宝します。
デバッガの Pythonコンソール
ブレイク中に、デバッガウインドウ内にある Python ロゴボタン
を押すと、Python コンソールが起動してデバッグプロセスにアタッチされた状態になります。
できることとしては、先程の Evaluate Expression とほぼ同じなのですが、こちらは Python の対話コンソール上で評価されるので、不足している import を実行したり、関数を定義したりもできます。 Evaluate Expression と合わせてデバッグ時には必須の機能なので、活用していきましょう。
Alfred から プロジェクトを開く
Alfred から プロジェクトを横断的に検索して開けると便利だと思ってるのですが、Alfred 内から JetBrains のプロジェクトを横断的に検索できるワークフローは、期待通り動くものが現状無く、作るのも難しそうです。
ただし、単純に何かのホットキー(例: Control + ⌘ + スペース ) で JetBrains Toolbox を起動するようにすると、起動した瞬間にプロジェクト横断検索のテキスト入力にフォーカスが移動するため、そのままキーボードでプロジェクトを検索して開けるので便利です。
関連記事
以前に、エディタの複数行同時編集の記事も書いているので参考にしてください。