vi/vimに貼り付けた後のカーソル位置

vi/vimに貼り付けた後のカーソル位置

いつも私を悩ませる一つvi/vim:

一部のテキストを「ヤンキング」(または「コピー」)してから、ファイル内の別の場所に移動して「貼り付け」を実行すると、カーソルは引き続き貼り付けられます。スタート貼り付けたばかりのテキストです。これは、ほとんどの現代編集者が行うこととは異なります。終わりテキストを貼り付けました。

たとえば、「コピーバッファ」に「awesome」という単語が含まれており、構文の「an」という単語の後に貼り付けたいとします。

This is an editor

例えば、編集者、貼り付けた後:

This is an awesome editor
                  ^ Cursor is here

存在する:

This is an awesome editor
           ^ Cursor is here

変えることができるか (例えば)のように振る舞う編集者 これに関して?

答え1

vimでは、貼り付けたテキストの後にカーソルを置くには、gp代わりgPにとpを使用します。Pバインディングを置き換えるには、次の行を次の行に入力します.vimrc

noremap p gp
noremap P gP
noremap gp p
noremap gP P

奇妙なことに、vimでは互換モードでもカーソルが文字バッファの最後に貼り付けpられPた文字に保持されます。

他のviバージョンでは、この設定をどのように変更するのかわかりません。

答え2

']または'>ここでも役に立ちます。

から:h motion.txt

'] `]以前に変更したテキストまたはインポートしたテキストの最後の文字です。

'> `>現在のバッファで最後に選択した視覚領域の最後の行または文字に移動します。ブロックモードの場合は、最後の行の最初の文字にすることもできます(ブロックを定義できるように)。 「選択」が適用される場合、位置は表示領域のすぐ後ろにあります。

答え3

私はこれが意図的に設計されていると確信しています。 「p」(小文字のP)を使用して貼り付ける場合は貼り付ける必要があります。後ろに現在位置または行です。しかし、「P」(大文字P)を使って貼り付けると貼り付けになります。今後現在位置または行です。目的のアクションが新しく貼り付けたテキストの末尾にカーソルを置くことであれば、「p」の代わりに「P」を使用する習慣を試してみてください。

十分に深く掘り下げると、「p」を使用してもカーソルを常に貼り付け先に移動させるvimレシピを.vimrcに入れることができます。

答え4

~によるとhttps://unix.stackexchange.com/a/5060/457327そして私の習慣は次のとおりです。

    nnoremap p P
    " nnoremap p <left>P  (does not work)

        
    " p: paragraph  
        nnoremap vP Vip
        nnoremap <leader>v Vip

    nnoremap P v$<left>P
        " like  Y D C

関連情報