Por que o vi aparentemente está quebrado (erro de viminfo E576) e como posso corrigi-lo?

18

Sou proficiente no uso de Unix / Linux, mas não sou especialista. Se eu quiser abrir um arquivo (por exemplo file.txt), eu uso vi:

vi file.txt

Isso abre o arquivo e, se eu quiser fechá-lo, eu uso :q!. Uso esse método há dois anos que uso o Unix / Linux. Minha instituição possui um cluster executando o Ubuntu Linux.

Hoje, no entanto, tentei abrir um arquivo e recebi estas mensagens de erro:

E576: viminfo: Missing '>' in line: newest to oldest):
E576: viminfo: Missing '>' in line: ?/CJ
E576: viminfo: Missing '>' in line: ?/CG
E576: viminfo: Missing '>' in line: ?/CC
E576: viminfo: Missing '>' in line: ?/OEP
E576: viminfo: Missing '>' in line: ?/CEP
E576: viminfo: Missing '>' in line: ?/dih
E576: viminfo: Missing '>' in line: ?/ang
E576: viminfo: Missing '>' in line: ??b
E576: viminfo: Missing '>' in line: ?/xvg
E136: viminfo: Too many errors, skipping rest of file
Press ENTER or type command to continue

Então eu pressiono Enter. Eu recebo as mesmas mensagens:

E576: viminfo: Missing '>' in line: newest to oldest):
E576: viminfo: Missing '>' in line: ?/CJ
E576: viminfo: Missing '>' in line: ?/CG
E576: viminfo: Missing '>' in line: ?/CC
E576: viminfo: Missing '>' in line: ?/OEP
E576: viminfo: Missing '>' in line: ?/CEP
E576: viminfo: Missing '>' in line: ?/dih
E576: viminfo: Missing '>' in line: ?/ang
E576: viminfo: Missing '>' in line: ??b
E576: viminfo: Missing '>' in line: ?/xvg
E136: viminfo: Too many errors, skipping rest of file
Press ENTER or type command to continue

Mais uma vez eu pressiono Entere, finalmente, o arquivo é aberto para leitura / edição. No entanto, o problema se repete quando tento fechar o arquivo usando :q!e também quando tento abrir qualquer outro arquivo usando vi.

As palavras-chave CJ, CG, CC, OEP, CEP, dih, ang, e xvg(não tenho certeza sobre b, embora) são todas as cadeias que aparecem frequentemente em arquivos que eu li usando vi, embora eu não estou certo de que todos eles existem no arquivo particular que eu sou abertura (Eu penso que não). Assim, talvez algo esteja errado com o meu viminfoarquivo? No entanto, eu estou usando vi, não vim .

Não tenho certeza do que aconteceu; você tem alguma sugestão de como eu posso diagnosticar e possivelmente corrigir esse problema?

Andrew
fonte
2
Você é ~/.viminfocorrupto? Tente movê-lo para outro lugar e veja se o problema retorna. Lembre-se de muitos sistemas que fornecem vimapenas vium link simbólico para vim.
jw013
2
Estou usando o vi, não o vim. Você tem certeza? vigeralmente é um alias para vim(verifique com which vie depois filenesse local).
ire_and_curses
2
Na maioria dos sistemas Linux, o vi é um link simbólico para o vim, portanto, você pode ter um viminfo corrompido.
Mark Cohen
@ire_and_curses Thanks! Quando entro which vi, recebo a saída /usr/bin/vi. Quando entro file /usr/bin/vi, obtenho a saída /usr/bin/vi: symbolic link to / etc / alternative / vi ' . Does this mean I am using vi`?
22412 Andrew
11
@ Andrew - Ok, o mesmo acontece file /etc/alternatives/vi. Espero que isso lhe diga que você está realmente executando vim.
ire_and_curses

Respostas:

25

Faça isso:

rm -f ~/.viminfo

O .viminfoarquivo mantém metadados sobre várias informações de estado úteis, mas não críticas. O seu é corrupto. Remova.

bahamat
fonte
2
Seria mais avesso ao risco mover-se .viminfo do que removê-lo. Por exemplo, se você estiver trabalhando em uma grande base de código, pode ser muito doloroso reconstruir suas marcas.
donothingsuccessfully
@bahamat @donothingsuccessfully Obrigado a todos pelo seu tempo! Mover .viminfo(método avesso ao risco) corrige o problema. Então, acho que meu .viminfoarquivo estava corrompido. Sinceros agradecimentos por sua ajuda. Boas festas!
Andrew
1

O erro vim E576 acontece quando você tem algum erro de sintaxe no seu .viminfoarquivo que armazena seu comando e histórico de arquivos, etc.

A corrupção pode ocorrer quando você está sem espaço ou seu mecanismo de armazenamento está com defeito. Você pode tentar editar ~/.viminfo, localizar e remover as linhas inválidas, eventualmente renomeá-lo para outro nome e apenas para removê-lo.

Você também pode usar o -i {viminfo}parâmetro para especificar o arquivo .viminfo diferente.

kenorb
fonte