About Vim keybind for Dvorak.

私は、テキストエディタとしてvimを使っている。
私は、キーボードの配列としてDvorakを使っている。

この二つは、ここの評価自体はそんなに悪いものではない、というか一部に熱狂的なファンがいるコアな存在。
尖がった奴らです。

しかし、いかんせんこの二つは相性が悪い。

Dvorakvimの相性が悪い理由。

単純にvimキーバインドqwertyに最適化されたものであるからである。
hjklでカーソル移動が出来たものも、qwertyを離れた瞬間にその美しさを失う。

いかにして、快適にvim上でDvorakを使用するか。

  1. コマンドモードのみQWERTYを使用する。
    Dvorakは、文字入力のみと割り切って、コマンドモードではおとなしくQWERTYを使う。
  2. コマンドモードも完全にDvorakにする。
    コマンドモードですらDvorakを追求する。現在私はこれ。
  3. vimのコマンドモードのキーバインドを全て書き換える。
    Dvorakに最適化したキーバインドを再考する。今やりたいと思っていること。

考察?

以下のリンク先で、Dvorak,Qwertyそれぞれのキーバインドの一覧シートが公開されている。

vi/vim tutorial

http://boredzo.org/vi_tutorial/

以下のリンクでは、Escの入力方法について考察してある。

Vim; Dvorak and Escape

https://bbs.archlinux.org/viewtopic.php?pid=524624

現状の把握。

現状私は、窓使いの憂鬱を使い、CapsLockつまりAの脇にCtrl兼Escを配置している。

#CapsLockキーに、Ctrl機能を割り当てる。
#通常押下時は、Escキーに置換。
#Ctrlキーとして使う際(キーリピート時)は、Escを出力しない。
mod	ctrl += !!CapsLock
key	*CapsLock = *Esc
key	R-*CapsLock = *LeftControl

#RightControlをCapsLockにする。
mod	ctrl -= RightControl
mod	ctrl += !!RightControl
key	*RightControl = *CapsLock

ワンショットモディファイヤを利用しているところがポイント。

これで、単打時はEsc、長押しやコンビネーション時はCtrlとして機能することになる。

ただし、この方法ではEscとのコンビネーションが出来なくなるためオリジナルのEscキーは生かしてある。

あと、カーソルキーが左手に欲しかったため、左手esdfの位置にカーソルキーを配置してみた。これが案外快適であるが、いちいちSpaceを押さなければいけないのが億劫だし、これだとVimのコマンドモードというものの意味合いが薄れる。

#esdfダイヤモンドカーソルとする。
mod	mod0 += !!Space
key	M0-*e = *Up
key	M0-*d = *Down
key	M0-*s = *Left
key	M0-*f = *Right
key	M0-*a = *Enter
key	M0-*q = *BackSpace
key	M0-*w = *Delete
key	M0-*i = *PageUp
key	M0-*k = *PageDown
key	M0-*j = *Home
key	M0-*l = *End

この方法の良い点は、ソフトによらずspace押下時に別モードを用意することが出来るという点だ。
すなわち、vimキーバインドをこの方法で定義しておけば他のソフトにおいても擬似的にvimキーバインドを利用することができる。

今後。

今は、spaceキーで別モードを用意している状態である。
別モードを用意する代わりにVimキーバインドDvorakの相性の悪さには目を瞑っているのだ。

しかし、
VimEmacsをはじめとした多くのソフトウェアとは違い、
"完全モーダブルなコマンドモードを用意しているという利点を生かす"ためには、
ネイティブなリマッピングを行うのが最良であろう。

今後折を見てリマッピング作業に取り掛かることとする。

追記

通常のカーソル並びをダイヤモンドカーソルっていうと思ってました。。。
esdx系をダイアモンドっていうのですね。
esdf,wasd系はなんていうのでしょうか。。。