Warum ist vi anscheinend kaputt (viminfo error E576) und wie kann ich das beheben?

18

Ich beherrsche Unix / Linux, bin aber kein Experte. Wenn ich eine Datei öffnen möchte (zum Beispiel file.txt), verwende ich vi:

vi file.txt

Dadurch wird die Datei geöffnet, und wenn ich sie schließen möchte, verwende ich :q!. Ich verwende diese Methode seit zwei Jahren, in denen ich Unix / Linux verwende. Meine Institution hat einen Cluster mit Ubuntu Linux.

Heute habe ich jedoch versucht, eine Datei zu öffnen, und die folgenden Fehlermeldungen wurden angezeigt:

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

Also drücke ich Enter. Ich erhalte die gleichen Nachrichten:

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

Erneut drücke ich Enterund zum Schluss öffnet sich die Datei zum Lesen / Bearbeiten. Das Problem wiederholt sich jedoch, wenn ich versuche, die Datei mit zu schließen :q!, und wenn ich versuche, eine andere Datei mit zu öffnen vi.

Die Schlüsselworte CJ, CG, CC, OEP, CEP, dih, ang, und xvg(ich bin nicht sicher b, obwohl) sind alle Strings , die in Dateien erscheinen oft , dass ich lesen mit vi, obwohl ich nicht sicher bin , dass sie existieren in der jeweiligen Datei , dass ich Öffnung am (Das glaube ich nicht). Also stimmt vielleicht etwas mit meiner viminfoAkte nicht? Aber ich bin mit vi, nicht vim .

Ich bin nicht sicher, was passiert ist. Haben Sie Vorschläge, wie ich dieses Problem diagnostizieren und möglicherweise beheben kann?

Andrew
quelle
2
Ist dein ~/.viminfokorrupt? Versuchen Sie, es an einen anderen Ort zu verschieben, und prüfen Sie, ob das Problem erneut auftritt. Denken Sie daran, dass viele Systeme, die vimnur vials Symlink zur Verfügung stellen , diese bereitstellen vim.
jw013
2
Ich benutze vi, nicht vim. Bist du sicher? viist oft voreingenommen vim(überprüfen Sie mit which viund dann filean diesem Ort).
ire_and_curses
2
Auf den meisten Linux-Systemen ist vi ein Symlink zu vim, sodass Sie möglicherweise ein beschädigtes viminfo haben.
Mark Cohen
@ire_and_curses Danke! Wenn ich eintrete which vi, erhalte ich die Ausgabe /usr/bin/vi. Wenn ich eintrete file /usr/bin/vi, erhalte ich die Ausgabe /usr/bin/vi: symbolic link to / etc / alternatives / vi 'vi' . Does this mean I am using ?
Andrew
1
@ Andrew - Ok, so machen file /etc/alternatives/vi. Ich gehe davon aus, dass dir das sagen wird, dass du tatsächlich rennst vim.
ire_and_curses

Antworten:

25

Mach das:

rm -f ~/.viminfo

In der .viminfoDatei werden Metadaten zu verschiedenen nützlichen, aber nicht kritischen Statusinformationen gespeichert. Dein ist korrupt. Entfernen Sie es.

Bahamat
quelle
2
Es wäre riskanter, sich zu bewegen, .viminfo als es zu entfernen. Wenn Sie beispielsweise an einer großen Codebasis arbeiten, kann es sehr schmerzhaft sein, Ihre Marken zu rekonstruieren.
donothingsuccessfully
@bahamat @donothingsuccessfully Vielen Dank an alle für Ihre Zeit! Verschieben .viminfo(risikoaverse Methode) behebt das Problem. Ich schätze, meine .viminfoDatei war beschädigt. Herzlichen Dank für Ihre Hilfe. Schöne Ferien!
Andrew
1

Der vim-Fehler E576 tritt auf, wenn in Ihrer .viminfoDatei ein Syntaxfehler aufgetreten ist, in dem Ihr Befehl, Ihr Dateiverlauf usw. gespeichert sind.

Die Beschädigung kann auftreten, wenn nicht genügend Speicherplatz zur Verfügung steht oder die Speicher-Engine fehlerhaft ist. Sie können versuchen ~/.viminfo, die ungültigen Zeilen zu bearbeiten , zu lokalisieren und zu entfernen, sie schließlich in einen anderen Namen umzubenennen und sie nur zu entfernen.

Sie können auch -i {viminfo}Parameter verwenden, um die verschiedenen .viminfo-Dateien anzugeben.

Kenorb
quelle