36
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vimで「ヤンクしたテキストをdで上書きしちゃったよ」を解決

Last updated at Posted at 2018-02-18

結論

主な2つを紹介します。

ブラックホールレジスタの使用

以下のように通常のコマンドの前に"_をつけることで、レジスタに保持されたテキストを上書きすること無くカーソル下のテキストを削除することが出来ます。

行削除
"_dd

単語削除
"_diw

ヤンクレジスタの使用

以下のようにプット時にpの前に"0をつけることで、直前にヤンクしたテキストをプットすることが出来ます。
このようにヤンクレジスタを使用することで、ヤンクしたテキストをdd等で削除しても上書きされることなく使用することが出来ます。

直前にヤンクしたテキストをプット
"0p

レジスタ

vimの削除/ヤンク/プットは一般的なソフトウェアで用いられるクリップボードを使用することは基本的にありません。
vimは20~30個ほどのレジスタを提供しています。
そこからレジスタを指定してテキストを保持するのがvimです。
"ayiwと入力すればaというレジスタにテキストを保存することが出来ます。
私達が普段レジスタを指定せずにdiwと入力している時は、無名レジスタというレジスタを使用しています。
そのため、削除とヤンクで別のレジスタを使用すれば上書きされることは無いということです。
冒頭で述べてる"_はブラックホールレジスタと呼ばれ、テキストはどこかにコピーすることなく削除されます。
"0はヤンクレジスタと呼ばれ、直前にヤンクしたテキストが保持されます。

36
19
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?