レジスタ/複数のレジスタを完全にクリアするにはどうすればよいですか?


16

私はかなり頻繁に使用する:registers(の役割まさに、私がどこに置くものを忘れ、すべてのレジスタの内容を表示するコマンドを"*"."%、などです)。

特に、"オプションでオプションを設定したためviminfo、vimセッション間でレジスタが保持されるため(一般的には短期的には)、:registersリストは時間とともに長くなり、より面倒でいっぱいになります本当に古いもので。

これまでのところ、これを修正することがわかった唯一の方法は、「古い」レジスタの内容の一部を手動で編集することです~/.viminfo。これを行う必要vim -u NONEがあり、少し面倒です。

すべてのレジスタを消去する、または特定のレジスタを消去するよりクリーンな方法があり、:registersリストに表示されなくなりましたか?

回答:


12

要するに、レジスタを完全に消去するためのきれいな方法がないため、レジスタはから消え:regます。

~/.viminfoぼんやりするのではなく、空白に設定することで本当に本当に本当に終わったら、レジスタを「ソフトクリア」する傾向があります。aたとえば、レジ​​スタをクリアするには、入力qaqしてaレジスタを空の文字列に設定します。同様に:let @a=''、同じことを行います。

次に、:reg空のレジスタと含まれているレジスタを区別するのが非常に簡単であるため、の出力を確認すると役立ちます。一方、本質的にすべての名前付きレジスタは最上行(マクロ)またはメイン行(便利な貼り付け物)にあり、それでも約15個の名前付きレジスタしか使用していません。

数年前のvimメーリングリストには、レジスタを消去する簡単な方法はないと結論付けたスレッドがありました。


5

リストaから登録名(たとえば、)を削除したい:registers場合、今すぐそれを行う方法があります。コマンドを実行します:call setreg('a', [])

これは、ユーザー@LucHermitteのStackOverflowに関するこの質問からわかりました。彼の答えは、複数のレジスタをクリアする方法を詳述しています。このタスクを非常に簡単にしたい場合は、.vimrc:)でクリエイティブになってください。


3

あなたのこれを入れてください.vimrc

command! WipeReg for i in range(34,122) | silent! call setreg(nr2char(i), []) | endfor

ですべてのレジスタをクリアします :WipeReg

Vimを起動するたびにそれを実行したい場合は、次も追加します。

autocmd VimEnter * WipeReg

1
コマンドに感謝しますが、「。、「%」、「:」などの読み取り専用レジスターでは機能しません。
Ashok
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.