
vimでクリックしてESC
コマンドモードに戻ると、カーソルは1文字左に移動します。私が望んでいたわけではなく、時にはl
文字を削除したり、その場所にすぐに戻ることもありました。
このような行動に理由がありますか?私が見逃した使用パターンにこれは便利ですか?
答え1
挿入モードでは、カーソルは文字の間、最初の文字の前、または最後の文字の後にあります。通常モードでは、カーソルは文字の上にあります(改行はこの目的に使用される文字ではありません)。これは少し珍しいです。ほとんどの編集者は常に文字の間にカーソルを置き、ほとんどのコマンドは文字に対して機能します。後ろに(厳密には言わない。下に) カーソル。これは、GUIが出現する前に常にテキスト端末が使用されていたためです。見せるカーソルが文字(下線またはブロック、点滅する可能性があります)の上にあります。この抽象化は、1つ以上の位置(柱とフェンス)が必要なため、挿入モードで失敗します。
モードを切り替えるには、カーソルを文字の半分だけ移動する必要があります。このi
コマンドは左に移動し、カーソルを終了文字の前に置きます。a
右に移動するように指示します。可能であれば、挿入モードを終了すると(キーを押してEsc)、カーソルが左(または行の先頭にある場合は右)に移動します。
私はこのようなEsc行動が意味があると思います。通常、行の末尾に入力してEsc左側にのみ入力できます。したがって、一般的な行動が最も一般的な行動です。
カーソルの下の文字を最後の面白い文字として扱い、挿入コマンドをその文字として扱いますa
。カーソルを移動せずに繰り返すことができますが、a Esc空ではない行の先頭から始めると、右に1つの位置に移動します。
答え2
答え3
この動作は編集可能です。ここに答えたようにでも、止まって何が起きているのか考えてみてください。挿入モードでは、実際には文字の上にあるのではなく、文字の間にあります。何かを挿入すると、挿入してから項目が後ろにあるようにカーソルが挿入した端に移動します。それでは、文字を入力してその文字で何かをしたいと思います。クリックすると、Esc挿入した最後の文字に直接選択カーソルが置かれます。そうでなければ、むしろもっと恥ずかしかったでしょう。
あなたが考えることができるのは、挿入モードにあるときに通常モードのように動いてから切り替えることです。この場合、カーソルは文字を返しますが、そうすると、挿入モードにあり、最後に行った操作は挿入ではありません。たぶん、通常モードでより多くの時間を費やす必要がありますか?
答え4
私の解決策は次のとおりです。
以下は、提供されたソリューションのよりクリーンなバージョンです。これに関するwikiページ。
au InsertLeave * call cursor([getpos('.')[1], getpos('.')[2]+1])