65

vim のレジスタは、テキスト スニペットを保存したり、保存されたテキストに対してコマンドを実行したりするための優れた機能です。しかし、私はきちんとした人で、終わったら片付ける傾向があります。

レジスタをクリアしたい場合はa、 を使用できることを知っていますqaq

次のコマンドを実行することもできます。

:let @a = ''

ただし、これらのソリューションは、問題の単なる回避策のように見えます。を実行する:registersと、リストにはまだレジスタa(空の値) が表示されますが、使用されたことのないレジスタは表示されません。

このリストからレジスタを削除する副作用でレジスタをクリアする方法はありますか?

もしそうなら、一度にすべてのレジスタをクリアする方法、つまりレジスタのリストをリセットする方法はありますか?

4

7 に答える 7

19

私の知る限り、組み込みのコマンド/関数を使用してレジスタをリストから消すことはできません。~/.viminfoそれは、少し極端に聞こえるあなたからそれらを削除することによってのみ実行できるようです.

vimメーリングリストのこのスレッドには、すべてのレジスタをクリアするコマンドがありますが、それらはから削除されません:reg:

let regs='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/-"' | let i=0 | while (i<strlen(regs)) | exec 'let @'.regs[i].'=""' | let i=i+1 | endwhile | unlet regs

- - 編集 - -

上記のコマンドはもう必要ありませんが、好奇心旺盛な人のために内訳を次に示します。

" The value of variable regs is a string made up of all named
" and numbered registers, plus the search, small delete, and
" unnamed registers. A string can be used as a list for our
" use case so we use the most concise method. We could have
" done let regs = ['a', 'b', 'c', etc. instead.
let regs = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/-"'

" We are going to iterate through the string so we initialize
" a loop counter with value 0.
let i = 0

" Here is our loop where we check at each iteration if the loop
" counter is smaller than the length of regs.
while (i < strlen(regs))

    " If it is, we programmatically assign an empty string
    " to each corresponding register
    exec 'let @' . regs[i] . ' = ""'

    " and we add 1 to the loop counter.
    let i = i + 1
endwhile

" Once we are done, we get rid of the variable we created above
" which is now unnecessary.
unlet regs
于 2013-10-17T15:38:40.890 に答える
9

ファイルを削除.viminfoするか、ファイル内のレジスタ行を削除してください.viminfo

詳細はこちらから入手できます:

The viminfo file is used to store:
- The command line history.
- The search string history.
- The input-line history.
- Contents of non-empty registers.
- Marks for several files.
- File marks, pointing to locations in files.
- Last search/substitute pattern (for 'n' and '&').
- The buffer list.
- Global variables
于 2014-06-18T07:05:22.377 に答える
7

もう 1 つのオプションは、レジスタをロードしないことです。他の人が言ったように、レジスタはからロードされ.viminfoます。フラグは、-i使用する viminfo ファイルを指定するために使用されます。を指定するNONEと、viminfo がないため、レジスタは読み込まれません。

vim -i NONE
于 2016-03-30T00:08:47.897 に答える