いつも私を悩ませる一つ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