vimのカットアンドペーストの履歴


60

私がvimで「カット」しているとき、私はカットしたすべての最近のものの履歴を保持するレジスタがあると信じています。これらのレジスタにアクセスするにはどうすればよいですか?

たとえば、これらの単語のそれぞれを連続してカットしたとしましょう

  • 'こんにちは'
  • '世界'
  • 'そして'
  • 「Vim」

これらの編集を実際に特定のレジスタに保存するのではなく、「d」を4回連続して使用していることに注意してください。

回答:


102

:ヘルプの登録

コマンドは、10個の番号付きレジスタがあることを示しています("0to "9)。

登録"0ヤンクされた最新のものです。registerに"1は、最新の削除済みテキストがあり"2、以前の削除を登録し、その前に削除"3があります。

あなたは、順番にレジスタをそれぞれの行を削除した場合"1"2"3および"4それぞれ「Vimの」、「そして」、「世界」&「こんにちは」を、含まれています。

:reg(または:registers)コマンドを使用して、これを確認できます。

:reg
""   Vim^J
"1   Vim^J
"2   And^J
"3   World^J
"4   Hello^J

したがって、4行を1つずつ削除した後、2行目(「ワールド」)を次のように復元できます。

"3p

これは3番目に新しい削除だからです。


これは完璧です; しかし、最新の「ヤンク」テキストが欲しいのは何ですか?
アレクセイ

だから、使用します。P(0P」と同じ意味)
NJD

1
また、を読むときは、特殊レジスター、特に「*」と「+」にも注意してください:help registersとても便利です。
ダニエルアンダーソン

3
神よ、あなたは毎日新しいことをヴィマーとして学びます。それは素晴らしい。ありがとう、@ njd。
エリオッタブル

3
この回答は重要な詳細を省きます。1行以上の削除のみがこの方法で履歴に保存されます。OPが質問で説明した方法で(のd代わりに4回使用して)単語を削除すると、dd最後に削除された単語以外はすべて失われます。
アレクサンダー・レヒシュタイナー

8

njdの答えに加えて、これはYankRingプラグインで簡素化できます。以前のヤンクを閲覧しやすくするだけでなく、いくつかのキーを設定して、「スタック」から以前のヤンクをポップできるようにすることができます。これにより、次のことが可能になります。

yy    " Copy first line
yy    " Copy second line
yy    " Copy third line
yy    " Copy fourth line
" Assumes you've mapped ,p to be the pop command: choose your preferred key or key-combination
,p    " Paste fourth line and pop it off the Yank Ring
,p    " Paste third line and pop it off the Yank Ring
,p    " Paste second line and pop it off the Yank Ring
,p    " Paste first line and pop it off the Yank Ring

4
,p前のヤンクをポップするようにマップする方法を追加できますか?
アンドリューウッド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.