~/Library/KeyBindings/DefaultKeyBinding.dictでarrayタグが使えることを知った。
arrrayコンテナにstring型のエレメントを突っ込む事で、一つのキーバインドに複数のアクション( Objective-Cのセレクタ? )を割り当てられる。以下のように書いておくと
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>^ </key> <string>setMark:</string> <key>^w</key> <array> <string>selectToMark:</string> <string>copy:</string> <string>deleteToMark:</string> </array> </dict> </plist>
1.Ctrl+spcで [ マークをセット ]
2.適当にカーソルを移動後
3.Ctrl-w で [ マークした範囲の選択-> 選択範囲コピー-> 選択範囲削除 ]
の動きを実現できる。Emacsの C-spc C-w ぽい感じ。テキストエディットやSafariのtextareaなどがよりEmacsぽく使えます。
ひとつのキーに一個のアクションしかバインドできないと思ってたので この発見は嬉しい。
... まだこの組み合わせしか試してないのであとでまとめたい
追記
引数も指定できるみたい.
<!-- Ctrl + u で hogeを入力する--> <key>^u</key> <array> <string>insertText:</string> <string>hoge</string> </array>