挿入モードに入らずに空白行を挿入するのが好きで、次のキーマッピングを使用しました。
nomap go o <esc>
これにより、空白行が作成されますが、奇妙な動作が発生します。私はスマートインデントと自動インデントを設定しています。新しい行はインデントに従いますが、手動で削除すると冗長な空白が自動的に削除されますが、インデントは削除されません。また、毎回カーソルがある場所に単一の空白を追加します。
この動作を説明する洞察を持っている人はいますか?
挿入モードに入らずに空白行を挿入するのが好きで、次のキーマッピングを使用しました。
nomap go o <esc>
これにより、空白行が作成されますが、奇妙な動作が発生します。私はスマートインデントと自動インデントを設定しています。新しい行はインデントに従いますが、手動で削除すると冗長な空白が自動的に削除されますが、インデントは削除されません。また、毎回カーソルがある場所に単一の空白を追加します。
この動作を説明する洞察を持っている人はいますか?
Vim は、マッピング コマンドの書き方に関して非常に<ESC>
文字通りです。実際には、マッピング内のスペースを処理してから. つまり、マッピングは次のことを行います。
nnoremap go o<SPACE><ESC>
次のように変更する必要があります。
nnoremap go o<ESC>
また、マッピングに余分なスペースがないことを確認してください!
いつものように、vim wikiには便利なヒントがあります:空行をすばやく追加および削除する。トリックはset paste
、新しい行を追加する前とその後set nopaste
です。さらに、これにより、カーソル位置を記憶し、元の場所に戻るためのマークが設定されます。
nnoremap go :set paste<CR>m`o<Esc>``:set nopaste<CR>
nnoremap gO :set paste<CR>m`O<Esc>``:set nopaste<CR>
「PHPが多すぎる」に同意します。これは私の .vimrc の関連セクションです
nnoremap <A-o> o<ESC>k
nnoremap <A-O> O<ESC>j
カーソルを元の行に戻すので速いと思います(元の文字ではありませんが)。