新しい環境に移行した時に、いつも検索してるので備忘として。
Marvericks, Xcode6の場合
1.設定ファイルを取り出す
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
編集にはroot権限が必要なので、一旦他の場所にコピって編集した上で、再度戻すようにしたほうがいいかも
2.行の複製コマンドを作る
リストの一番下にEdit(名前はなんでもOK)というDictionaryを追加。
そこにコマンド名と実行内容をkeyとvalueの対で入れることで新しいコマンドを作ることができる。
行の複製の場合、keyを Duplicate Line、stringを _selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:_とする。
IDETextKeyBindingSet.plistに追加した内容は以下の通り。
<key>Edit</key>
<dict>
<key>Duplicate Line</key>
<string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string>
</dict>
修正したファイルを、管理者パスワードなどを入れつつ、元の場所に戻す。
3.作成したコマンドにキーボードショートカットを割り当てる
- Xcodeを起動し、Xcode > Preference > Key Bindingsを選択する。
- Key Binding SetプルダウンからManage Key Bindings..を選択し、下部の+ボタンからDuplicate "Default"を選んでKey Binding Setを複製する
- リストの一番下にDuplicate Lineコマンドが表示されてるはずなので、その行の右側の空白をダブルクリックして割り当てたいショートカットを入力する。(ここではcommand+D)
- 他のコマンドとショートカットが競合していると右側に赤いマークがつくので、違うショートカットを指定する等して競合を解消する。競合したままだとどちらのコマンドも有効にならない模様。
IDETextKeyBindingSet.plistに使えるコマンド
HFTextRepresenter.hにあるメソッドのうち、 _- (void)〜〜:(id)arg1;_の形式のものがIDETextKeyBindingSet.plistに使えそう(未確認)。