回答:
どうですか:
inoremap <C-\> <C-o>:left 0<Cr><BS>
<C-o>
:left 0
すべてのインデントを削除する通常モードのコマンド()を実行します。これにより、カーソルが行の先頭に置かれます。<BS>
最後の行に戻ります。
これは「後方J
」に少し似ています。
残念ながら、Shift + EnterまたはCtrl + Enterのマッピングは不可能なようです。そのため<C-\>
、「enterの近く」としてを選択します。
<C-u>
代わりに使用しないのはなぜ<C-o>:left 0<CR>
ですか?
J
」として機能しfoo<CR>bar<C-\>
ますfoobar
。私見、それはより便利ですが、YMMV。
foo<CR>bar<C-u>
すると、foo<CR>
(Vimが追加した自動インデントが追加されます)<C-o>:left 0<CR>
カーソル位置に関係なく、常に同じ動作をします。
私はこれを持っていますvimrc
、2番目の部分は関連しています:
inoremap <expr> <silent> <cr> pumvisible() ? "<c-y>" : "<c-g>u<cr>"
これが行うこと:Enter
挿入モードでヒットするたびに、「元に戻すシーケンスを中断し、新しい変更を開始する」こともできます(を参照h: i_CTRL-G_u
)。つまり、Enter
誤ってヒットした場合、以前に挿入された行を削除せずに、Statoxが提案したように、変更を元に戻すことができます。基本的に、各行は個別に元に戻すことができます。ESC u a
Ctrl-o u
編集/更新:Emacs(別名evil-mode)でVimエミュレーションを使用する場合、このパッケージを使用して同様の効果を得ることができます。
<c-y>
、ポップアップメニューとの関係について興味があります。
Ctrl-y
挿入モードでは、現在のポップアップ選択が完了し、上記のマッピングでEnter
も完了することができます。
"<c-g>u<cr>"
ことで&paste ? "<cr>" : "<c-g>u<cr>"
そうしないと、誤ってHTMLの200行を貼り付け、次の時間は、あなたがそれを元に戻すに多くの楽しみを持っています、。:)
paste
オンの場合、挿入モードのマッピングは無効になります(Vimのヘルプによる)
backspace
は、オプションの設定方法によっては機能しない可能性があるため、このソリューションの方が気に入っています。
私のやり方はそうですCtrl-wBackspace。
Ctrl-w最後の単語を削除するには(これが標準のvimであるかどうか忘れていました)、スペースだけなので、行頭に戻ります。その後Backspace、私がいた前の行に戻ります。
Ctrl-w
、挿入モードでの使用については知りませんでした。しかし、Carpetsmoker♦はさらに高速です。したがって、 `Ctrl- \`のデフォルトのバインディングはそれほど有用ではないようです。
:help i_CTRL-W
。そして、それを2回押すと、同様にトリックを行うようです?
<C-u>
、新しい行のすべての文字が削除されるため、より便利な場合があります
これから抜け出す方法は(挿入モードから)UpCtrl-oJDelです。おそらく最も効率的な組み合わせではありませんが、それについて考える必要なしに私がやっていることです。
ctrl+w
2回は動作し、非常に簡単なようです