2

挿入モードに入らずに空白行を挿入するのが好きで、次のキーマッピングを使用しました。

nomap go o <esc>

これにより、空白行が作成されますが、奇妙な動作が発生します。私はスマートインデントと自動インデントを設定しています。新しい行はインデントに従いますが、手動で削除すると冗長な空白が自動的に削除されますが、インデントは削除されません。また、毎回カーソルがある場所に単一の空白を追加します。

この動作を説明する洞察を持っている人はいますか?

4

3 に答える 3

5

Vim は、マッピング コマンドの書き方に関して非常に<ESC>文字通りです。実際には、マッピング内のスペースを処理してから. つまり、マッピングは次のことを行います。

nnoremap go o<SPACE><ESC>

次のように変更する必要があります。

nnoremap go o<ESC>

また、マッピングに余分なスペースがないことを確認してください!

于 2009-08-28T00:52:41.707 に答える
0

いつものように、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>
于 2009-08-28T08:04:36.270 に答える
0

「PHPが多すぎる」に同意します。これは私の .vimrc の関連セクションです

nnoremap <A-o> o<ESC>k
nnoremap <A-O> O<ESC>j

カーソルを元の行に戻すので速いと思います(元の文字ではありませんが)。

于 2009-08-28T05:58:07.693 に答える