Macの標準的なテキストフィールドでは、コントロールキーを使ってカーソルを移動させるEmacs風のキーバインドが使えます。macOSがサポートしているキーバインドはこんなところでしょうか。
今回のエントリーでは、with story、with to goでこのキーバインドを拡張していることを紹介します。
カーソル移動
- Control+F 前方
- Control+Option+F 一単語前方
- Control+B 後方
- Control+Option+B 一単語後方
- Control+P 前の行
- Control+N 次の行
- Control+A 行の先頭に
- Control+E 行の末尾
- Contorl+V 次のページ
- Control+O カーソルで新しい行を作る
削除
- Control+D カーソルの次の文字
- Control+H カーソルの前の文字
- Control+K カーソルから行末尾まで(ヤンクというペーストボードに入ります)
編集
- Control+T カーソル前後の文字を入れ替え
TextKitというOS標準のテキストフィールドを使っているwithもこのキーバインドに対応しています。Mac OS X Lionで移行してからずっと使っているので意識しなくても使えるのですが、特にお気に入りなのは、Control+Option+F・B。一単語ずつカーソルが移動するので、三倍か四倍ほど早くカーソルを前後に移動させることができますし、切れ目もそこそこ自然です(OS標準の単語分割で、日本語でもそこそこ動作します)。Wordを使わないのはこのキーバインドが使えないから、というのも大きな理由の一つです。
でも不満がないわけではありません。最大の不満は、単語レベルで削除するControl+Option+D・Hがないことです。現在のmacOSでControl+Option+D・Hを入力すると、コントロールコード(U+0004 END OF TRANSMISSIONと U+0008 BACKSPACE)が入力されてしまいます。そんな不満を解消するのも、自作アプリの特権。
ということで、withには、Control+Option+D/Hで単語を削除する機能を搭載しています。標準でオンになっているので、Emacsキーバインドに慣れている方はぜひ使ってみてください。iOSの外部キーボードでも動作します。

これ絶対バグだと思うんだけど、ひょっとしたらあのコントロールコードを利用したい人もいるんだろうか……
