Xcodeでよく使うショートカットキーを追加する

目次

VSCodeライクなショートカットキーを追加したい

最近Xcodeを使い始めました。VSCodeの方が使い慣れているため、XcodeにVSCodeのいくつかのショートカットキーがないことが不便に感じました。

もちろんショートカットキーの設定はXcodeでも行うことができます。

[Command + , ]により設定画面を表示し、該当する項目があれば、そこにショートカットキーを設定することができます。以下の画像は設定画面上のKey Bindingsを開き、設定状況を表示した画面です。

ところが、一部のショートカットキーはこの画面から設定しようにも項目自体がありません。具体的には、以下のショートカットキーです(括弧内はVSCodeのショートカットキー)。

  • 上下への行移動(Command + ↑またはCommand + ↓)
  • 改行+新しい行作成(Command + Enter)

この場合、まずはKey Bindingsの設定欄に項目を表示させる作業から始める必要があります。

IDETextKeyBindingSet.plistに設定項目を新たに作る

改行+新しい行作成(Command + Enter)については、ネット上の記事を参考にplistの追加を試してみましたが、xcodeでキーバインド設定中にCommand+Enterを設定できなかったため、最終的に利用を諦めました。

その他のキーバインドの追加はGithub上にxcode-keybindings-as-vscodeが公開されており、動作実績もありそうなので、これに基づいて設定します。

IDETextKeyBindingSet.plistを編集します。以下のコマンドをターミナルで打ち込んで編集するのが簡単と思います。

zed /"Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist"

先頭を「zed」としているのはzedを利用してplistファイルを編集するためで、zedをお持ちでない方は「open -a TextEdit」で使える標準のテキストエディッタで編集するとよいかと思います。

    <key>Original Direction</key>
    <dict>
        <key>Continue Newline Original</key>
        <string>moveToEndOfLine:, insertNewline:</string>
    </dict>
    <key>Duplication</key>
    <dict>
        <key>Duplicate Current Line</key>
        <string>moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, moveToBeginningOfLine:, yank:</string>
        <key>Duplicate Lines</key>
        <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string>
        <key>Delete Line</key>
        <string>selectLine:, deleteBackward:</string>
    </dict>

IDETextKeyBindingSet.plistの追加する場所に注意が必要です。元のタグの組み合わせが壊れると、deleteキーで文字を削除できなくなったりとキー設定が全体的におかしくなります。

わかりやすく、もともと先頭に記載されている<dict>の下に入れてみました。追加したのは赤の四角部分です。

VSCode.idekeybindingsにキー設定を追加

GitHubに公開されているとおり、

~/Library/Developer/Xcode/UserData/KeyBindings/VSCode.idekeybindings

に新しく「VSCode.idekeybindings」ファイルを作成し、リンク先

Add VSCode keybindings

の記載のコードを貼り付けて保存します。

Xcodeでの設定

Xcodeを立ち上げ直して、設定画面のKey Bindingsからショートカットキーの設定を行います。Command+Enterで直下に新しい行を挿入するキーバインドは、設定直後に一瞬エラーマークがひょうじされ、クリアされてしまうため、残念ながら設定できませんでしたが、option+上下矢印キーでの行移動はできるようになりました。

追記(2024/05/18)

作業中IDETextKeyBindingSet.plistを上書きした後に、もう一回ファイルを開こうとしてもファイルに記述されているはずのテキストが何も表示されない現象が発生しました。

原因はIDETextKeyBindingSet.plistのファイルのユーザー権限にReadが付与されていない?(権限が失われた?)事が原因でした。赤枠の部分にread権限がついていればファイルの読み取りができるはずです。

IDETextKeyBindingSet.plistが保存されているディレクトリに移動し以下のコマンドで権限を付与します。

sudo chmod 754 ./IDETextKeyBindingSet.plist

ただし、このコマンドを実行したときに私の環境では、「Operation not permitted」が表示され、権限が変更できませんでした。iTermにフルディスクアクセスが付与されていないことが原因でした。以下のように権限付与したところ問題なくchmodコマンドで権限を変更できました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次