PhpStormよく使うコマンドリスト(Mac版)

phpstormのVersion 2023.1がリリースされました。
New UIが利用できるになってCompact Modeはよりオシャレになっていい感じですね。

<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348159/bc515e89-9587-6205-3f47-ccdc1e6c9fac.png">

### New UI
プラグインなしでもいい感じ👍
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348159/331d3d8f-2353-3a84-9489-87313f188020.png">


# Mac初期設定変更

## コード補完を使えるようにする
コード補完：`ctrl+space`

初期状態では`ctrl+space`は入力ソース切り替えになってしまうので以下手順で無効にします。
システム環境設定 → キーボード → 入力ソース → 「前の入力ソースを選択」のチェックを外す

コード補完の決定は`tab`と`Enter`で挙動が変わります。
tab：置換(コード補完で記述を変更する際にはこっち!!)
Enter：挿入

## ファンクションキー有効化
Macの初期状態ではファンクションキーが使えないので有効にする
システム環境設定 → キーボード → 「外部キーボードのF1、F2などのキーを標準のファンクションキーとして使用」にチェックを入れる

## Keymap設定
ここは好みで、、、
* `ctrl+H`はBackSpace(左に1文字削除)に変更したい
* `ctrl+D`はDelete(右に1文字削除)に変更したい

### macOS KeymapをInstallする
Preferences → Plugins → marketplace → 「macOS Keymap」で検索 → Install

### keymap変更
Preferences → Keymapに移動して以下の2つを変更

#### BackSpace(左に1文字削除)有効化
##### TypeHierarchyのKeymap変更
「Type Hierarchy」で検索 → `ctrl+H`を削除 → `ctrl+shift+H`を追加
※FindActionsByShortcut使うと一発で検索できます

##### BackSpaceのKeymap追加
EditorActions → Backspace → AddKeybordShortCutで`ctrl+H`を追加

#### Delete(右に1文字削除)有効化
##### Debug実行Keymap削除
MainMenu → Run → Run/Debug → Debug → `ctrl+D`を削除(`ctrl+shift+D`でも実行できるので)

##### DeleteのKeymap追加
EditorActions → Delete → AddKeybordShortCutで`ctrl+D`を追加


# よく使うコマンドリスト

## 移動
1つ前のファイルを開く： `ctrl+tab`
最近編集したファイル(箇所)を確認する： `cmd + shift + E`
使用箇所にジャンプ： `cmd + B` or `cmd + click`
(interface利用時に)実装箇所にジャンプ: `option + cmd + B`
指定行に移動： `cmd + L`
ファイル名検索してジャンプ： `option + cmd + O`

## 表示
Projectペイン開く： `cmd + 1`
Structureペイン開く(当該ファイルのメソッドを確認)： `cmd + 7`
Terminalペイン開く： `option + F12`
クイック定義表示(ジャンプせずに小窓で表示)： シンボル選択して`option + space` or `cmd + Y`
シンボル利用箇所を検索(一覧で表示)： `option + F7`
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348159/b1d8d5a9-f657-242b-e1ab-ab0e58579854.png">

## 編集
PHPDoc挿入： functionの一行上で`「/**」を入力 + Enter`
![comments.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348159/b60c8267-a961-07b6-8fa9-1d149ef5e4a0.gif)

クイックフィックス： `option + Enter`
インスペクションが表示されていたらとりあえずこれ使う
PHPDocの更新&クラスのインポート
![fix_2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348159/aa730140-1675-32cd-58f9-0a9198a821cc.gif)


列選択モード： `shift + cmd + 8`
![columns3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348159/94ac709b-550a-4bfc-bc01-693ed660d61d.gif)

選択(次の出現箇所を選択)： `ctrl + G`
![columns2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348159/248a4836-a8a2-b650-109e-0348ac43e6b8.gif)

クイックドキュメント： `F1`
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348159/451e22ce-d6bf-2bd3-1591-76c5419f8fb8.png">

コード整形： `shift + option + command + L`
※ファイル内の一部を整形したい場合は、選択後にコマンド実行
![stylefix.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348159/de71622f-0da8-0515-6a24-424514f91dab.gif)

## LocalHistory
該当ファイルの変更履歴を確認する
File → Local History → show History
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348159/dcf4de5f-cf33-49bf-ade9-c11e7a761104.png">

## TODOコメント
TODOコメントを一覧で確認
View → ToolWindows → TODO
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348159/1e10cfab-37ee-b22e-b301-3652aaa6625c.png">

## ライブテンプレート
`pubf` + `tab`で以下が生成
```php
public function ()
{
        
}
```

`fore` + `tab`で以下が生成
```php
foreach ( as $item) {
            
}
```

上記以外は、Preferences → Editor → LiveTemplatesで確認できる

## PostfixCompletion(後置補完)
処理を書いた後に`.if`や`.return` + `tab`
`$user.if` → `if($user){ }`
`$user.return` → `return $user;`
上記以外は Prefectures → Editor → PostfixCompletionで確認できる

![completion.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348159/9abbec57-cce8-7503-2162-ec4193c4827f.gif)

## Commit/PullRequests
Git Pull： `cmd + T` (Terminalでは新規タブ作成)
Commitペイン開く： `cmd + 0`
* GUIでadd → commit -> push → PullRequests作成が可能
* submoduleや複数のGitプロジェクトが含まれている場合、一括でPushが可能


## XDebug

### 事前設定
#### CLI Interpreterの設定
Preferences → PHP → CLI Interpreter 「...」を押下し新規追加
(今回はSailを使っているので...)「+」 → DockerCompose → ConfigurationFilesでdocker-compose.ymlを選択 → Serviceでphpコンテナを選択

#### PHP側の設定
xdebugを有効にして最低限以下の2つをphp.iniに設定する(Xdebug3の場合)
```php
xdebug.mode=debug
xdebug.client_host = host.docker.internal
```

### Debug使い方
* ブレークポイントを設定する
    * 特定条件に合致する時だけ止めたい場合はブレークポイントを右クリックでconditionを設定する
* Debug実行(今回はUnitTestで実行)
![debug.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348159/6cc7366b-19e8-e0bb-d5aa-99cf0f39b48a.gif)

## Docker
ServiceペインでDockerコンテナ管理も可能
DockerDesktopのTerminalは使いにくいのでこっちの方がおすすめ。
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348159/25fb0689-f8aa-ee7b-868b-af1384bc9df9.png">

## PhpStormのコマンド以外で使うコマンドリスト
### 移動
移動の際は基本的に十字キーは使用しない
右に1文字移動: `ctrl+F`
左に1文字移動: `ctrl+B`
1行上に移動: `ctrl+P`
1行下に移動: `ctrl+N`
行の末尾に移動: `ctrl+E`
行の先頭に移動: `ctrl+A`

### 削除(keymap設定した場合は)
右に1文字削除：`ctrl+D`
左に1文字削除：`ctrl+H`

### 選択
右に1文字ずつ選択：`shift + →キー`
右に1単語ずつ選択：`shift + option + →キー`
右側のテキストを全て選択：`shift + cmd + →キー`