Xcodeのカスタムキーバインド。

[:ja]XcodeのDashスニペットが上手く機能せずなんだよってなってるときに何故か関係ないキーバインド設定をようやく行ったので
Xcodeアプデするたびにぐぐるの面倒なので備忘録。

Xcodeのキーバインド設定ファイル(IDETextKeyBindingSet.plist)を編集する。

XcodeのIDETextKeyBindingSet.plistをDesktopにコピペ。

$ cp /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist ~/Desktop/

xml規則を見ながら一番下にでも以下を追加。
それぞれ、行削除、行複製、行上移動、行下移動、カーソル位置無視して改行。

    <key>Custom Key Binds</key>
    <dict>
        <key>Delete Line - Custom</key>
        <string>selectLine:, delete:</string>
        <key>Duplicate Line - Custom</key>
        <string>selectLine:, copy:, moveToBeginningOfLine:, paste:, moveToEndOfLine:</string>
        <key>Move Line Up - Custom</key>
        <string>selectParagraph:, cut:, moveBackward:, moveToBeginningOfParagraph:, paste:, moveBackward:, moveToBeginningOfParagraph:</string>
        <key>Move Line Down - Custom</key>
        <string>selectParagraph:, cut:, moveToEndOfParagraph:, moveRight:, paste:, moveBackward:, moveToBeginningOfParagraph:</string>
        <key>Continue Newline - Custom</key>
        <string>moveToEndOfLine:, insertNewline:</string>
    </dict>

Xcodeに戻す。

2017.11 追記
Xcode 8 辺りから Duplicate Lineに使ってるコマンドが変わったのか挙動がおかしかったので修正。
https://stackoverflow.com/questions/39816443/xcode-8-0-line-duplication-and-deletion

$ sudo cp ~/Desktop/IDETextKeyBindingSet.plist /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist

Xcodeのキーバインドを設定する。

Xcode > Preferences… > Key Bindings のTextタブ一番下あたりにCustom Key Bindsが追加されてるので
好きなキーバインドに割り当て。適宜Conflictsしてるものをバシバシ削除!
ちなみにas3時代の名残りからこんな感じ。

xcodekeybinds

おしまい!

you

2015.11.13 追記。

Xcodeのアプデが余りに多く、毎回毎回このキーバインドあてたりSDKコピったりするのがめんどくさすぎるので、シェルスクリプトにしてみた。
初めてのシェルスクリプトw

#!/bin/sh
sudo cp /Users/***/xcode/IDETextKeyBindingSet.plist /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
sudo cp -R -P /Users/***/xcode/SDKs/MacOSX10.6.sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
sudo cp -R -P /Users/***/xcode/SDKs/MacOSX10.7.sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
sudo cp -R -P /Users/***/xcode/SDKs/MacOSX10.8.sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
sudo cp -R -P /Users/***/xcode/SDKs/MacOSX10.9.sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
sudo cp -R -P /Users/***/xcode/SDKs/MacOSX10.10.sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/

aliasファイルがあるので-Pオプション必要。SDKの置き場所はたぶん変わんないのでこれでいいだろ感。
[:en]XcodeのDashスニペットが上手く機能せずなんだよってなってるときに何故か関係ないキーバインド設定をようやく行ったので
Xcodeアプデするたびにぐぐるの面倒なので備忘録。

Xcodeのキーバインド設定ファイル(IDETextKeyBindingSet.plist)を編集する。

XcodeのIDETextKeyBindingSet.plistをDesktopにコピペ。

$ cp /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist ~/Desktop/

xml規則を見ながら一番下にでも以下を追加。
それぞれ、行削除、行複製、行上移動、行下移動、カーソル位置無視して改行。

    <key>Custom Key Binds</key>
    <dict>
        <key>Delete Line - Custom</key>
        <string>selectLine:, delete:</string>
        <key>Duplicate Line - Custom</key>
        <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string>
        <key>Move Line Up - Custom</key>
        <string>selectParagraph:, cut:, moveBackward:, moveToBeginningOfParagraph:, paste:, moveBackward:, moveToBeginningOfParagraph:</string>
        <key>Move Line Down - Custom</key>
        <string>selectParagraph:, cut:, moveToEndOfParagraph:, moveRight:, paste:, moveBackward:, moveToBeginningOfParagraph:</string>
        <key>Continue Newline - Custom</key>
        <string>moveToEndOfLine:, insertNewline:</string>
    </dict>

Xcodeに戻す。

$ sudo cp ~/Desktop/IDETextKeyBindingSet.plist /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist

Xcodeのキーバインドを設定する。

Xcode > Preferences… > Key Bindings のTextタブ一番下あたりにCustom Key Bindsが追加されてるので
好きなキーバインドに割り当て。適宜Conflictsしてるものをバシバシ削除!
ちなみにas3時代の名残りからこんな感じ。

xcodekeybinds

おしまい!

you[:]