Rejestry w vim są świetną funkcją do przechowywania fragmentów tekstu, une nawet do uruchamiania poleceń zapisanym w nich tekście. Jestem jednak porządną osobą i staram się sprzątać, kiedy skończę.
Wiem, jee jeśli chciałbym wyczyścić rejestr a
, mogę użyćqaq.
Mogę również wykonać następujące polecenie:
:let @a = ''
Jednak rozwiązania te wydają się zwykłym obejściem problemu. Kiedy wykonuję :registers
, listez les noms des réponses a
(z pustą wartością), les retours de baladeurs, les changements de noms, les détails.
Vous êtes déjà inscrit sur notre site: rejeuz-vous si vous voulez acheter?
Un jeśli tak, czy istnieje również sposób na usunięcie wszystkich rejestrów naraz, tzn. Zresetowanie tej listy rejestrów?
Depuis cette vénérable réponse sur la liste de diffusion, reliée par @romainl , nous avons setreg('a', [])
qui efface le registre.
Ainsi, le code pourrait devenir:
let regs=split('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/-"', '\zs')
for r in regs
call setreg(r, [])
endfor
Autant que je sache, vous ne pouvez pas utiliser les commandes/fonctions intégrées pour faire disparaître les registres de la liste. Cela semble être faisable seulement en les supprimant de votre ~/.viminfo
qui semble un peu extrême.
ce fil de la liste de diffusion vim a une commande qui efface tous les registres mais ne les supprime pas de :reg
:
let regs='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/-"' | let i=0 | while (i<strlen(regs)) | exec 'let @'.regs[i].'=""' | let i=i+1 | endwhile | unlet regs
Supprimez le fichier .viminfo
ou supprimez la ligne de registre dans le fichier .viminfo
.
Vous pouvez obtenir les détails de Ici :
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
Mettez ceci dans votre .vimrc
:
command! WipeReg for i in range(34,122) | silent! call setreg(nr2char(i), []) | endfor
et effacer chaque registre avec :WipeReg
Si vous souhaitez que cela se produise chaque fois que vous démarrez Vim, ajoutez également:
autocmd VimEnter * WipeReg
Il est possible de définir une valeur pour chaque registre utilisé, similaire à l'approche de romainl:
function! ClearRegisters()
redir => l:register_out
silent register
redir end
let l:register_list = split(l:register_out, '\n')
call remove(l:register_list, 0) " remove header (-- Registers --)
call map(l:register_list, "substitute(v:val, '^.\\(.\\).*', '\\1', '')")
call filter(l:register_list, 'v:val !~ "[%#=.:]"') " skip readonly registers
for elem in l:register_list
execute 'let @'.elem.'= ""'
endfor
endfunction
Cela évite d'inclure un registre supplémentaire sur la sortie de :registers
Une autre option est de ne jamais charger aucun registre. Comme d'autres l'ont dit, les registres sont chargés à partir de .viminfo
. L’indicateur -i
permet de spécifier le fichier viminfo à utiliser. Si vous spécifiez NONE
, aucun viminfo, et par conséquent aucun registre ne sera chargé.
vim -i NONE
Par souci d'exhaustivité, je noterai que, si définir un registre de manière à contenir une chaîne vide ne supprime pas le registre du résultat de la commande :registers
, Vim n'enregistre pas les registres ainsi effacés dans le fichier .viminfo
.
Par conséquent, une autre solution rapide pour supprimer des registres spécifiques de la liste consiste à les effacer à l'aide de l'une des commandes que vous suggérez, puis à redémarrer Vim.