3

<CR>カーソル(*)が行の内側にある場合、どのようにして挿入モードを終了しますか?好き:

" pressing <CR> should exit insert mode (in either case)
Lorem *ipsum dolor
Lorem ipsum dol*or

しかし<CR>、カーソルがEOLにあるときに改行を挿入するようにしますか?

" pressing <CR> when cursor @ EOL
Lorem ipsum dolor*
Fusce leo quam

" results in
Lorem ipsum dolor
*
Fusce leo quam

これらの両方を同時に可能にする関数はどのように見えますか?

理論的根拠:ドキュメントを管理するとき、私は小さなストロークをしていることに気付きます(つまり、単語に移動し、変更し、終了します)。私にとって、これらのストロークは、「入力」したいアクションです(チャットウィンドウでメッセージを送信するなど)。したがって、<CR>出口挿入を使用すると、維持するときにこのメンタルモデルを維持できます。一方、<CR>作曲するときは明らかに便利です。幸いなことに、両方を同時に可能にするのに十分なコンテキストがあります-私はまだvimscriptのスキルを持っていません。これは私にいくつかを教えてくれます:)

4

1 に答える 1

4

式マッピングを使用すると、条件に依存するマッピングを実現できます。を参照してください:help :map-expressioncol()次のように、関数を介して行末のカーソルを確認できます。

:inoremap <expr> <CR> col('.') == col('$') ? '<CR>' : '<Esc>'
于 2013-03-13T14:31:13.383 に答える