読者です 読者をやめる 読者になる 読者になる

~/Library/KeyBindings/DefaultKeyBinding.dict に

~/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>

( XMLじゃなくて perlリテラルっぽい形式で書かれてますが )