カーソル移動決定版?キーバインド

またまたmayu(窓使いの憂鬱)ネタです。
最適なキーバインドを考えるにあたって個人的に重視しているのがカーソル移動です。

おそらくカーソル移動そのものの最適化を考えると、たぶんVimノーマルモードにおける、キー1発で自由に移動というのがベストだと思います。

が、これはノーマルモードとインサートモードの切り替えがあるVimだからこそ可能なわけです。自分としては他のソフトでも共通で使える最適なカーソル移動を考えていました。

で、色々と試行錯誤の結果、とりあえずこれで行こうと思えるものができたので紹介します。


カーソル移動決定版(になると良いなと思ってる)キーバインド

シンプルに書くと、Spaceキー押しながらHJKLで上下左右移動、また無変換キー押しながらHJKLでHome,PageDown,PageUp,Endになります。

これを実現するために、無変換キーには窓使いの憂鬱独自のモディファイヤキーを割り当てています。

また、Spaceキーには押しっぱなしでAltになるように設定し、なおかつAlt+HKJKでカーソル移動が行われるようにしています。
なお、ここで独自モディファイヤ二つ目を割り当てるのではなくわざわざAltを割り当てているのは、Emacsのメタキーとしても使うからです。

また、頻繁に使うCtrl+Home、Ctrl+Endについては、さらに無変換とカンマ、ピリオドを組み合わせることで一発で飛べるようにしています。

そのほか変換をCtrlにするなど幾つかの設定を組み合わせて、今は下記の図のような感じになっています。

色分けしたキーとコマンドが対応してます。灰色のコマンドは、補助キーを使わずにそのまま押した場合の動作です。また「-」はとくにキーバインドを標準から変更していないことを示します。


.mayuはこんな感じです

.mayuの中身の、上記の図の設定に対応する部分はこんな感じです。
前回晒したのとそんなに大きくは変わってませんが。


#無変換キーをmayu独自のモディファイヤに
mod mod0 = !!無変換

#SpaceをAltと両用に
mod alt += !!Space
key R-*Space = &Ignore

#変換キー押しながらをCtrlに
mod ctrl += !!変換
key *変換 = *RightControl

#無変換キーでIMEOFF/変換キーでIMEON
#&Syncの設定はキーの順序指定
key *無変換 = &Sync &SetImeStatus(off)
key *変換 = &Sync &SetImeStatus(on)

#セミコロンをエンターに
#Ctrlを押しながらだとセミコロンに
key *IC-SemiColon = Enter
key *IC-C-~S-SemiColon = SemiColon

#HJKLでの移動
key *C-*S-A-H = *C-*S-Left
key *C-*S-A-J = *C-*S-Down
key *C-*S-A-K = *C-*S-Up
key *C-*S-A-L = *C-*S-Right

#Home,End
key M0-*H = *Home
key M0-*L = *End

#PageUp,PageDown
key M0-*K = *PageUp
key M0-*J = *PageDown

#文書先頭へ、文書最後尾へ
key M0-*Comma = C-*Home
key M0-*FullStop = C-*End

#Ctrl+hをバックスペースに
key C-H = BS

自分はこういう人の設定ファイルを見るのが楽しくて仕方がない人間なので、.mayuでも.emacsでも_vimrcでも、みんなどんどん晒していってほしいなあと日々ぼんやり思っています。