- 記事一覧 >
- ブログ記事
Xcode ショートカットのカスタマイズ 空行挿入・一行複製・一行削除
はじめに
Xcode 13.4.1 にデフォルトでは設定に存在しないショートカットを追加しました。
やり方を紹介していきたいと思います。
デフォルトで存在するショートカットは、command + ,(カンマ)
→ Key Bindings
もしくは、Xcode
→ Preferences...
→ Key Bindings
で設定できます。
【検証環境】
macOS Monterey 12.5.1
Xcode 13.4.1
空行挿入
control + O(オー)
で下に空行を入力するショートカットを作成します。
【 O(オー)の理由 】
O が何かの頭文字だからということはありません。
vi が O で同じ意味(下に空行挿入)の動作をするからです。
Key Bindings
の設定は、IDETextKeyBindingSet.plist
というファイルで決まっています。これを直接編集して、設定項目を追加します。
元に戻せるように
IDETextKeyBindingSet.plist.org
としてバックアップしています。このファイルは、設定項目が書かれているだけで、キーバインドの設定は別のところに保存されます。
$ sudo cp -p /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist.org
$ sudo vi /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
以下の内容を追加します。
<key>Custom Key Bindings</key>
<dict>
<key>insert new line(custom)</key>
<string>moveToEndOfLine:, insertNewline:</string>
</dict>
この後、
IDETextKeyBindingSet.plist
の変更を反映するために、Xcode の再起動が必要です。
Xcode を再起動して、
Filter のところに insert new line
と入力して、
Key のところをダブルクリック → control + O
を入力します。
ここで、他のコマンドと重複しているエラーになります。
↓
赤い × 部分をクリックすると、Conflicts に移動して、Insert Newline and Leave Selection Before It (Insertions and Indentations)
と重複していることが分かります。
Insert Newline and Leave Selection Before It (Insertions and Indentations)
は、インデントが考慮されるエンターキーと異なり、完全に折り返す改行のようです。
重複している control + O
をダブルクリックして、マイナスマークをクリックして、削除します。
何もしていない段階で、Conflicts を見ると、29 件の警告がありました。警告の対処は必須では無いようです。
改めて、control + O
を入力してみると、以下のように空行が挿入されます。
一行複製
この記事を書いているときに気づきました。Xcode 14 Beta 3 から
command + D
で選択部分を複製。選択していない時は、まさにこの記事の通り、カレント行が複製されるようです。New Features in Xcode 14 Beta 3
When editing code, the Edit > Duplicate menu item and its corresponding keyboard shortcut now duplicate the selected text — or the line that currently contains the insertion point, if no text is selected. (8614499) (FB5618491)
command + D
でカレント行を下に複製するショートカットを設定します。
先ほどと同じ要領で、IDETextKeyBindingSet.plist
に以下の内容を追加します。
<key>Duplication</key>
<dict>
<key>Duplicate Current Line</key>
<string>moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, moveToBeginningOfLine:, yank:</string>
</dict>
command + D
は元々存在するのですが、どういう仕様なのかいまいち分からなかったのです。command + D
は反応せず、Edit - Duplicate メニューが無効になっています。(Xcode 13.4.1)
まず、これのショートカット設定 Duplicate (Edit Menu)
を解除しておきます。
Xcode を再起動して、
Filter のところに duplicate current line
と入力して、
Key のところをダブルクリック → command + D
を入力します。
一行削除
カレント行を削除する動作の Delete line (Deletaions)
があります。
初期状態の場合、何も設定されていません。
これに、control + shift + delete
を設定します。
D を使いたかったですが、下記キーバインドは断念しました。
control + D
:Delete Forward (Deletions)
(WindowsのDELキーに相当) に割り当てられているため、重複します。
command + D
: 先ほどDuplicate Current Line (Duplication)
に割り当てたため、重複します。なるべくデフォルトのキーをいじらないように、何とも被らないキーをチョイスしました。
control + shift + delete
でカレント行が削除されます。
参考記事
あざざます。
・Xcode でも command+enter で改行したい
https://qiita.com/h-taro/items/54b686cdba60abad809b
・[Xcode]で行複製のショートカットキーを作成する方法
https://note.com/norio1629/n/n26a675b8fac7
・Xcode duplicate line
https://gist.github.com/emotality/b1bcb2bb8a07921f9c8cad1c969daedf
その他、宣伝、誹謗中傷等、当方が不適切と判断した書き込みは、理由の如何を問わず、投稿者に断りなく削除します。
書き込み内容について、一切の責任を負いません。
このコメント機能は、予告無く廃止する可能性があります。ご了承ください。
コメントの削除をご依頼の場合はTwitterのDM等でご連絡ください。