Xcodeでの開発に溜め息が出るあなたへ

※2024.6.8 更新
　ショートカットを一部追加し、リポジトリ内のbashスクリプトで設定ファイルをインポートできるように改善しました

**この記事の最後で、ショートカットの登録を一瞬で終わらせる方法を紹介しています**

### ●注意書き

※この記事は基本的に「`Xcode`のショートカットを`intelliJ`のショートカットになるべく寄せる」をテーマにしています
※この記事はXcodeを批判するものではありません
※著者はXcode、及びAppleを心から応援しています


# ●Introduction

**intelliJ**という**スーパーウルトラIDE**での開発に慣れてしまった私のような愚かな人間は
**Xcode**でiOS開発をすることになった時、凄まじい過疎感を感じる。

「**⌘ B**で参照元にジャンプ、っと……あぁ…」
「**⇧ F6**でRename、っと……あぁ…」

こんな具合で、深いため息が漏れてしまうのである。
それは「**欲しいShortcut Keyがデフォルトで全っ然ない**」のが理由だ。
でも安心して欲しい。
あなたの今日からのiOS開発が少しでも快適になることを願ってこの記事を書きました。

# ●Xcodeでショートカットをカスタムする方法

Defaultのショートカットももちろん存在するが、
Xcodeではある程度ショートカットをカスタマイズすることができる

❶ `⌘ + ,` もしくは `Xcode` > `Setting` で設定画面を開く
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633746/2c5c5033-f159-416f-462e-1032a3fd4e46.png)![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633746/79b5f183-9fa0-9430-cc80-69cbd4003ddb.png)


❷ `Key Bindings` を開く
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633746/70fe3c94-1fa8-b960-c27e-4e819990bec0.png)


❸ `Key Bindings Set` > `Manage Key Bindings` から新たなBindingを作成する
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633746/211a282d-72e9-b606-7310-4a90f7e35d67.png)


❹ `+` > `Duplicate "Default"` を押して**Default**のショートカットをまず複製する
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633746/ee3cae4a-3917-c2cc-436f-a835f6acc127.png)

❺任意の名前を設定し、`Done` を押す
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633746/860c88d2-bbbe-6e3c-959a-4380fddd148e.png)

❻新しいKey Bindingが作成される（これをゴリゴリカスタムしていく）
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633746/844eec6e-2095-61aa-ccbb-7e974497e77d.png)


> ⚠️ 自分で設定したショートカットが、既存のショートカットと
コンフリクトした場合解消しないとショートカットは使えない
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633746/9ec561d9-f1e3-7e0a-0a2b-525205f72569.png)
`Conflicts` タブでコンフリクトの一覧を確認できる
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633746/17499a72-561d-944a-45e3-163e0acc09b7.png)
既存のショートカットが必要なければ `Key` の`−`を押すとすると、解消できる
![スクリーンショット 2023-03-24 20.19.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633746/2143f992-5e31-f3b4-7f2c-3959826b8fe1.png)
# ●絶対に使って欲しいショートカット

既存のものと、カスタムするべきショートカットをまとめて紹介します　

●キーの概略
**⇧**：Shift
**^** ：Control
**⌘**：Command
**⌥**：Option
**⌫**：Back Space
**↩︎**：Return
**⇥**：Tab

以降出てくる表の「**Command**」行のキーワードをKey Bindingsで
検索することで、目的のショートカットにいち早く辿り着くことができます
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633746/888a0c60-9890-ddd0-9e35-bdfaead69a50.png)

##  Navigators Area

Window左にあるナビゲーションエリアには
沢山タブがありアクセスが結構面倒くさい。このへのアクセスをより簡単にしよう

| Command | Action | Default |
| --- | --- | --- |
| Navigator - Show Navigator　 | NavigationAreaを表示・非表示 | ⌘ 0 |
| Navigator - Project | Projectを開く | ⌘ 1 |
| Navigator - Source Control | GitのSource Control Menuを開く | ⌘ 2 |
| Navigator - Issues | ErrorやWarningのIssueMenuを開く | ⌘ 5 |
| Navigator - Tests | TestsMenuを開く | ⌘ 6 |

##  Debug Area

画面下部のDebugエリアに関して
ここにはブレイクポイントを置いてデバッグする時に使うエリアと
printでテキストが出力されるConsoleエリアがある

| Command | Action | Default |
| --- | --- | --- |
| Debug Area - Show Debug Area | Debug Areaを表示・非表示 | ⇧ ⌘ Y |
| Debug Area - Active Console | Consoleをアクティブにする | ⇧ ⌘ C |

##  Editor Area

XcodeでもEditorを便利に使うことができる
TDDする上でTestファイルやDouble、実装など複数同時に並べてみたい時がある
そんな時にこれを知っておくと捗る

| Command | Action | Default |
| --- | --- | --- |
| New - Editor | 右に新しいEditorを開く | ^ ⌘ T |
| New - Editor Below | 下に新しいEditorを開く | ^ ⌥ ⌘ T |
| Close - Editor | アクティブなEditorを閉じる | ^ ⇧ ⌘ W |
| Editor - Focus | アクティブなEditorにフォーカス | ^ ⇧ ⌘ ↩︎ |
| Show Next Tab | 右のFileにFocus | ⇧ ⌘ ]  |
| Show Previews Tab | 左のFileにFocus | ⇧ ⌘ [ |
| Preview | SwiftUIのPreviewを表示・非表示 | ⌥ ⌘ ↩︎ |
| Move Focus to Next Editor | 次のエディタをフォーカスする | ⌥ ⇥ |

##  Find

検索に関するショートカット

| Command | Action | Default |
| --- | --- | --- |
| Find in Workspace | プロジェクト全体から検索する | ⇧ ⌘ O |
| Find | ファイル内から検索する | ⌘ F |

##  Action Build

実行やビルドに関するショートカット

| Command | Action | Default |
| --- | --- | --- |
| Run | ビルドして実行 | ⌘ R |
| Build | ビルドのみ実行 | ⌘ B |
| Clean | クリーンビルドを実行 | ⇧ ⌘  K |

##  Source Control

git操作のショートカットです

| Command | Action | Default | Custom |
| --- | --- | --- | --- |
| Commit | Diff確認&コミット&プッシュができる画面を開く | ⌥ ⌘ C | ⌘ K |

##  Test

テストに関する操作です

| Command | Action | Default | Custom |
| --- | --- | --- | --- |
| Test | すべてのテストを実行 | ⌘ U | - |
| Perform Action - Test Selected Items | 選択されたテストを実行 | ^ ⌥ ⌘ U | ^ ⇧ R |
| Perform Action - Test Again | 前回実行したテストを実行 | ^ ⌥ ⌘ G | ^ R |
| Build For - Testing | Testのビルド | ⇧ ⌘ U | - |

##  Code

ここが一番重要！Codingする上でのショートカット

| Command                                | Action                 | Default | Custom | Others       |
|----------------------------------------|------------------------|---------|--------|--------------|
| Structure - Re-Indent                  | インデントを整理               | ^ I     | -      | -            |
| Structure - Comment Selection          | コメントアウト                | ⌘ /     | -      | -            |
| Structure - Move Line Up               | 行まるごと一行上に移動            | ⌥ ⌘ [   | ⌥ ⇧ ↑  | -            |
| Structure - Move Line Down             | 行まるごと一行下に移動            | ⌥ ⌘ ]   | ⌥ ⇧ ↓  | -            |
| Structure - Re-Indent                  | インデントの修正               | ^ I     | ⌥ ⌘ L  | -            |
| Select Word                            | 単語を選択                  | -       | ⌥ ↑    | Double Click |
| Select Next Occurrence                 | ファイル内でそのワードを順番に選択      | ⌥ ⌘ E   | ^ G    | -      |
| Move Right Word                        | 単語の右に移動                | ⌥ →     | -      | -            |
| Move Left Word                         | 単語の左に移動                | ⌥ ←     | -      | -            |
| Move to Beginning of Text              | 行の先頭に移動                | ⌘ ←     | -      | -            |
| Move to End of Text                    | 行の最後に移動                | ⌘ →     | -      | -            |
| Selection - Select Column Up           | 上にカーソルを増やす             | ^ ⇧ ↑   |        |              |
| Selection - Select Column Down         | 下にカーソルを増やす             | ^ ⇧ ↓   |        |              |
| Refactor - Rename                      | プロジェクト内全てRename        | ^ ⌘ E   | ⇧ F6   | -            |
| Refactor - Extract to Variable         | 変数にする                  | -       | ⌥ ⌘ V   | -            |
| Delete Line                            | 一行まるごと削除               | -       | ⌘ ⌫    | -            |
| Jump to Definition                     | 定義元へ移動                 | ^ ⌘ J   | ⌘ J    | ⌘ Click      |
| Show Quick Help for Selected Item      | リファレンスを表示              | ⌥ Click | ⌘ P    | ⌥ Click      |
| Code Folding - Fold                    | メソッドなどを折りたたむ           | ⌥ ⌘ ←   | ⌘ -    | -            |
| Code Folding - Unfold                  | メソッドなどを展開する            | ⌥ ⌘ →   | ⌘ =    | -            |
| Code Folding - Fold Method & Functions | ファイル内のすべてのメソッドなどを折りたたむ | ⌥ ⇧ ⌘ ← | ⌘ _    | -      |
| Code Folding - Unfold All              | ファイル内のすべてのメソッドなどを展開する  | ⌥ ⇧ ⌘ → | ⌘ +    | -      |
| Edit All in Scope                      | ファイル内でその変数をすべて選択       | ⌘ ^ E   | ⌘ ^ G  | -      |
| Font Size - Increase                   | フォントサイズ拡大              | ⌘ +     | ^ .    | -            |
| Font Size - Decrease                   | フォントサイズ縮小              | ⌘ -     | ^ ,    | -            |

※ `⌘ Click` で `Jump to Definition` を押して、定義元に移動したいときもあるので
`⌘ ,` > `Navigation` > `Command-clock on Coder` を `Jump to Definition` に
変更すれば、一発で定義元に移動できます。
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633746/fba50fb0-74a3-255c-86b9-8b127af4b76e.png)
※intelliJに合わせる都合上、フォントサイズ変更の`⌘ +` `⌘ -` を
他のショートカットに割り当てたので、それぞれ`^ +` `^ -` に変更しています

##  最終形態
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633746/26205f28-e75a-20ef-502a-342700930d57.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633746/a0b92e3a-81d1-9309-27cf-76c366acca2d.png)




# ●この設定を一瞬で終わらせる方法🔥

実はこの**KeyBindings**は、Xcodeの設定ファイルに情報が保存されています

IntelliJライクに作ったKeyBindings設定ファイルを下記GitHubに上げているので
Cloneもしくはダウンロードしていただき以下の手順で進めれば
快適なXcodeライフを送る準備が整います

[https://github.com/yuta-shoji/IntelliJ-Like-KeyBindings-in-Xcode.git](https://github.com/yuta-shoji/IntelliJ-Like-KeyBindings-in-Xcode.git)

1. リポジトリをクローン
2. カレントディレクトリで`copy-key-bindings.sh`スクリプトを実行
3. Xcodeを再起動
4. `⌘ ,`で設定画面を開き、`Key bindings`を選択する
5. Key Bindings Set で `IntelliJ-Like` を選択する

# ●Outro

完全なる独断と偏見で作ったKeyBindingを紹介しましたが
他にも沢山ショートカットはあると思うので、何か発見したら是非プルリク下さい！

**Enjoy Development by Xcode!!!**