Ao contrário das marcas, que têm um comando :delmarks
e um valor especial "não definido", os registros não podem ser excluídos. Um registro vazio é o mais próximo de um estado "não usado" que você pode obter. (No entanto, o Vim e o comando :registers
têm o comportamento especial que você observou quando registros não inicializados que não foram restaurados do arquivo viminfo são ignorados na saída.)
Eu acho que o que você está procurando é um comando :Registers
personalizado (você pode até mesmo apelidá-lo para o comando original em minúsculas com um :cmap
ou o cmdalias plugin) que omite vazio registra a partir de sua saída, assim:
function! s:Registers( arguments )
redir => l:registersOutput
silent! execute 'registers' a:arguments
redir END
for l:line in split(l:registersOutput, "\n")
if l:line !~# '^"\S\s*$'
echo l:line
endif
endfor
endfunction
command! -nargs=? Registers call <SID>Registers(<q-args>)
Como alternativa, você pode escrever um patch do Vim para introduzir um comando :delregisters
. Não deve ser muito difícil escrever; basicamente tem que definir a estrutura y_regs[i].y_array
para NULL
(veja ops.c
no código fonte do Vim).