テキストエディタ「単語単位で移動」の違い
hoge@moge,death/peso ff
というテキストの1桁目から「単語単位で移動」を繰り返したときのカーソル移動位置の違いを比較する。
秀丸:h→m→d→p→f
サクラエディタ:h→@→m→,→d→/→p→f
xyzzy:h→@→,→/→
meadow:h→@→,→/→
vim:h→@→m→,→d→/→p→f
VisualStudio:h→@→m→,→d→/→p→f
意外にもサクラ、VisualStudio と vim が同じ挙動である。
ところで vi の w の挙動はかなり複雑なのはご存知だろうか。例えば
hoge sage
というテキストの h の上で w をするとカーソルは s へ行くが、dw は s の前のスペース(含む)まで削除し、cw はスペースの手前の e までを変更になる。一貫性という観点から見れば美しくないが、これは最も利便がよく、かつ自然に感じられる挙動である。論理的な審美性よりも実用性を重視する vi の設計思想の好例だろう。
なお Visual Studio やサクラでも C-Delete はスペース(含む)までを削除する。しかしこちらは逆に「単語の末尾までを選択」というコマンドがないため不便に感じることがある。C-S-Right は「単語の末尾までを選択」という挙動にしてほしいというのは私だけだろうか。
xyzzy, meadow は正規表現 [A-Za-z0-9][^A-Za-z0-9] で検索しているように見える。逆移動の M-b は [^A-Za-z0-9][A-Za-z0-9] 検索のようだ。まさに一貫しているが、「単語の末尾へ移動」というのと _ (アンダースコア)で止まってしまうのは使いづらくないだろうか。
使い勝手という面では、秀丸式の移動単位が大きすぎず、細かすぎずでベストなように思う。あらゆる点でバランスがとれ、そつのない秀丸らしい単語移動である。
単語移動1つとっても各エディタの個性が見て取れるものである。
[追記]
サクラエディタには「単語単位で移動するときに単語の両端に止まる」というオプションがある。すばらしい。
参考:
Vz Editorのようにカーソルを構文境界毎に移動させる
http://d.hatena.ne.jp/Rommy/20060818/1155852221