0

Vim では、最後のヤンクを貼り付けようとすると、p を押します。その時点で、カーソルの後ではなく、カーソルがある場所にレジスタが貼り付けられることを期待しています。

より正確には、'i' の特別なバージョンである 'a' のように動作します。しかし、「p」は非常に原始的なコマンドであるため、「a」ではなく「i」のように動作することを期待しています。

At the cursor - After the cursor
i - a
P - p

おまけの質問: なぜi+<esc>=hですか?

4

2 に答える 2

5

あなたは混乱しています: 通常モードでは、カーソルは常に文字の上にあるため、これらのコマンドはどれも「カーソルで」機能しません。「カーソル位置」での貼り付けまたは「カーソル位置」での挿入モードの開始は、カーソルの下の文字を削除する必要があることを意味しますが、これはめったに必要なことではなく、 の動作はiapPそれと一致しています。

i「カーソル位置」ではなく「カーソルの前」で挿入モードを開始しP、同じロジックに従います。名前のないレジスタの内容は「カーソルの前」に挿入されます。

lore[m] ipsum
i
lore|m ipsum <-- before the cursor

a「カーソルの後」に挿入モードを開始しp、同じロジックに従います。名前のないレジスタの内容が「カーソルの後」に挿入されます。

lore[m] ipsum
a
lorem| ipsum <-- after the cursor

v{motion}pただし、既存のテキストに貼り付けたり ( )、カーソルの下の文字を削除しながら挿入モードを開始したり ( s)、あらゆる種類のクレイジーなテキスト操作のトリックができない場合、Vim は最悪です。

Vim を最大限に活用するには、モダリティを採用する必要があります。具体的には、通常モードでのカーソルの動作に慣れる必要があります。

おまけの答え: 挿入モードを終了すると、通常モードのカーソル位置は常に挿入モード カーソルの左側の文字に置かれます。これはある程度理にかなっている半恣意的な選択であり、反対の動作 (カーソルを右側に置く) は、IMO ではあまり意味がありません。

于 2013-02-08T13:45:30.367 に答える
5

直感で議論するのは難しいです - 誰もが自分自身を持っています:-)

の動作の理由pは の場合と同じです。テキストのaに貼り付ける方法が必要です。そうしないと、行末でこれを行うことができず (古いviには存在しなかったなどの新しい Vim 設定は無視されます)、他の場所ではカーソルを (面倒な!) の前に移動する必要があります。ペースト。'virtualedit'

左に移動時

同様に、カーソルEscは常に有効な文字に配置されるように左に移動します。詳細と解決策については、この Vim Tips Wiki ページを参照してください。

于 2013-02-08T13:16:48.787 に答える