入力中にカーソルを移動するには?

Q. 入力中にカーソルを移動したくなったらどうするの?
A. したいと思ったことがない。移動しようと思った時には、既にノーマルモードにいる。




ので、私には入力中のカーソル移動は必要ないのですが、
しかし、その人にはその人なりの使いやすい状態というのがあるので、
何かしら移動手段を考えてみました。

カーソルキーを押しやすいキーボードを使う

矢印マークのキーが遠くて、押すには指をホームポジションから移動しなくてはいけなくて、、
それでどうしたら良いか、ってことが問題なんじゃないだろか?


であれば、キーボードを変えればいいのですよ。
良いキーボードあります。Happy Hacking Keyboardどうでしょう?
このキーボードなら、小指でカーソルキーを操作できるから、
ホームポジションから指を動かさなくても済みます。
http://www.pfu.fujitsu.com/hhkeyboard/leaflet/hairetu.html

移動用のマッピングを定義してしまう

キーボードを変えるのは嫌だっていう我が儘な(?)人向け。
カーソルを移動するためのマッピングを設定する。


例えば、このように定義する。
これでControlキーとhjklで、入力中でも移動できる。

:imap <c-h> <Left>
:imap <c-j> <Down>
:imap <c-k> <Up>
:imap <c-l> <Right>

ただ実際には、Control-hにマッピングすると困ることが多いだろうから、
キーは別のにした方が良いでしょう。Altキーとか。

カーソルキーを使わない方法を考える

ノーマルモードでカーソル移動するよりも、
カーソルキーで移動する方が楽になるであろうシチュエーションを想定して、
いくつか方法を考えてみた。

入力ミスしない

入力ミスした時に、それを修正するためのカーソル移動。
そもそも、ミスしなければ問題ない。

細かい入力、移動の繰り返しにはマクロを使う

入力、ちょっと移動、入力、ちょっと移動、
という操作を行う場合は、マクロを使うと楽になる。
ただし、規則性がある場合のみ、利用可能。

いったん消してしまってから、まるごと再入力する

例えば、「train」と入力するはずが、「trein」と入力してしまった。

The train
↓
The trein

そういう時に、まず、「ein」か、あるいは「trein」全部消してしまう。
カーソル前の文字を消す場合は、Control-wとか、Control-hを使います。

The 

しかるのちに、修正したテキストを入力する。

The train is leaving soon.

Control-o使って、ノーマルモードに一瞬抜ける

入力中にControl-oを押すと、ノーマルモードに移行します。
この状態でコマンドを何か1つ実行すると、再び入力モードに戻ります。


この挙動を利用して、

テキスト入力中
↓
Control-o実行(ノーマルモードになる)
↓
カーソルを移動する
↓
カーソル移動後、自動的に入力に戻れる
↓
入力再開

というふうに操作する。


この方法だと、コマンド一回分しか、カーソル動かせませんけど、
これで十分なことも多いんじゃないですかね。




ちょっと無理矢理な案もありますけど、
こんなところですか。