Ich fürchte, ich bin auf etwas Seltsames gestoßen. Wenn ich eine Datei normal öffne, vim README.txt
ist alles in Ordnung. Bei diesem Vorgang sudo vim README.txt
wird die Datei jedoch leer und es wird ein E138: Can't write viminfo file $HOME/.viminfo!
Fehler angezeigt, wenn ich versuche, das Programm zu beenden.
Ich habe vermutet, dass die .viminfo
Datei beschädigt ist und habe sie gelöscht. Dieses Problem bleibt bestehen. Kann jemand helfen?
permissions
vim
sudo
root
James Adam Buckland
quelle
quelle
ls .viminf*
?ls -la .vininf*
?Antworten:
Wenn Sie ausführen
sudo vim
, starten Sie vim als root. Das heißt, es ist die viminfo-Datei in / root, die das Problem darstellt. Das solltest du tunrm /root/.viminf*
.Um sicherzustellen , dass dies zu machen, laufen
sudo vim
und führen Sie diesen Befehl aus ::!echo $HOME
. Dies zeigt Ihnen, dass Ihr Ausgangsverzeichnis / root ist.Ich würde empfehlen, dass Sie vim nicht als root ausführen, sondern verwenden
sudoedit
. Dies ist eine sicherere Lösung, da der Editor nicht als Root ausgeführt wird. Sie wissen nie, was ein Plugin tun könnte. Außerdem können Sie Ihre eigenen Einstellungen und Plugins in vim verwenden und nicht die in Roots vimrc.sudoedit
ist das gleiche wie Laufensudo -e
. sudoedit erstellt eine temporäre Kopie der Datei, die dem aufrufenden Benutzer (Ihnen) gehört. Nach Abschluss der Bearbeitung werden die Änderungen in die eigentliche Datei geschrieben und die temporäre Datei gelöscht.Als allgemeine Faustregel gilt: Führen Sie keine Dinge als root aus, wenn dies nicht erforderlich ist.
quelle
Ich habe diesen Fehler bei jedem Verlassen erhalten. Ich habe nicht verwendet
sudo
. Es erwähnte explizit mein Benutzerverzeichnis:Durch das Entfernen wurde
~/.viminfo
der Fehler nicht behoben.Es stellte sich heraus, dass ich eine Reihe von viminfo-temporären Dateien hatte, und das Entfernen dieser Dateien behebte das Problem:
Habe diese Lösung hier gefunden .
quelle
Ich habe den gleichen Fehler erhalten, als ich versucht habe,
:wq
eine Datei auf einer vollständig vollen Festplatte zu erstellen. Wenn Sie diese Nachricht erhalten, möchten Sie möglicherweise den verfügbaren Speicherplatz überprüfen.quelle
Eine viel sauberere Möglichkeit, ein Home-Verzeichnis zu erstellen, ist beispielsweise die Verwendung des von Linux bereitgestellten Skeletts.
quelle
Für mich bestand das Problem darin, dass ich mein Basisverzeichnis in einen Speicherort innerhalb eines NFS-Mount geändert hatte. Aus irgendeinem Grund hatte dies zur Folge, dass der Eigentümer des Verzeichnisses "niemand" war. Das Hinzufügen von Schreibrechten für "andere" löste das Problem, da ich eindeutig nicht der Eigentümer der Datei war.
quelle
Dies ist höchstwahrscheinlich darauf zurückzuführen, dass im Ausgangsverzeichnis nicht mehr genügend Speicherplatz vorhanden ist und neue vim-Vorgänge nicht in die .viminfo-Datei schreiben können.
quelle
Ich hatte das gleiche Problem beim Aktualisieren des Inhalts von Makefile. Ich brauchte eine lokale Variable und beschloss, sie zu benennen
HOME
, also gab ich die Zeile einHOME=2.154
. Dadurch wird dievim-HOME
Einstellung durch ein nicht vorhandenes Verzeichnis ersetzt. Verwenden Sie dieHOME
Variable nicht für andere Zwecke.quelle
HOME
es sich um eine vordefinierte Umgebungsvariable handelt und eine Neudefinition in der Regel keine gute Idee ist.Ich denke, dass dies nur für ziemlich alte Versionen von Linux / vi gilt, aber ich fand heraus, dass sich temporäre Dateien im Stammverzeichnis mit den Dateinamen /root/.viminfa.tmp ... /root/.viminfz.tmp und befinden Es gab 26 davon mit mehrjährigen Zeitstempeln. Uns waren die Buchstaben des Alphabets ausgegangen, als alles von az genommen wurde. Ich habe alle diese Dateien entfernt und das Problem ist verschwunden. Natürlich
# rm -rf ~/.viminf*
würde Henriks dieses Problem in Ordnung bringen.quelle
Anscheinend haben Sie Umgebungsvariablen gelöscht.
Mach das:
export HOME = / root
Dies sollte Ihr Problem beheben.
quelle
Ich bin mir nicht sicher, wie ich auf dieses Szenario gestoßen bin, da ich mich nicht daran erinnere, Dateien mit geöffnet zu haben,
sudo vim
aber für jede:q
Datei wurde eine ähnliche Meldung angezeigt: "Viminfo kann nicht geschrieben werden, kann nicht geschrieben werden".rm ~/.viminfo
hat es nicht gelöst und~/.vim/
war leer.chmod 666 ~/.viminfo
Die Warnmeldung beim Beenden einer Datei in Vim wurde behoben. Obwohl ich nicht sicher bin, ob dies die beste Lösung ist? Es ist sinnvoll, warum die Warnung gestoppt wurde, da .viminfo zuvor rw ------ war und ich davon ausgehe, dass mit vim-befehlshistorien darauf geschrieben wird.quelle
Ich mein Szenario, es war das Fehlen einer
/root/.viminfo
Datei insgesamt. Nachdem ich die Datei berührt hatte, wurde der Fehler beendet und die Datei beim Beenden von vim aktualisiert. PS: Dies ist Windriver Embedded Linux.quelle