J'ai peur d'avoir rencontré quelque chose d'assez étrange. Lorsque j'ouvre un fichier normalement, vim README.txt
, tout va bien. Mais sur Sudo vim README.txt
, le fichier est vide et me donne un E138: Can't write viminfo file $HOME/.viminfo!
erreur lors de la tentative de sortie.
Je soupçonnais le .viminfo
le fichier était corrompu, je l'ai donc supprimé. Ce problème persiste. Quelqu'un peut-il aider?
Lorsque vous exécutez Sudo vim
vous démarrez vim en tant que root. Cela signifie que c'est le fichier viminfo dans/root qui pose problème. Tu devrais faire rm /root/.viminf*
.
Pour vous en assurer, exécutez Sudo vim
et exécutez cette commande: :!echo $HOME
. Cela vous montrera que votre répertoire personnel est/root.
Je vous recommande de ne pas exécuter vim en tant que root, mais plutôt d'utiliser sudoedit
. Il s'agit d'une solution plus sécurisée car l'éditeur ne s'exécute pas en tant que root. Vous ne savez jamais ce qu'un plugin pourrait faire. De plus, il vous permet d'utiliser vos propres paramètres et plugins dans vim et non ceux dans root vimrc. sudoedit
est identique à l'exécution de Sudo -e
. sudoedit fonctionne en créant une copie temporaire du fichier qui appartient à l'utilisateur appelant (vous). Une fois la modification terminée, les modifications sont écrites dans le fichier réel et le fichier temporaire est supprimé.
En règle générale: ne lancez pas les choses en tant que root si ce n'est pas nécessaire.
J'ai cette erreur à chaque sortie. Je n'ai pas utilisé Sudo
. Il mentionnait explicitement mon répertoire personnel:
E138: Can't write viminfo file /Users/henrik/.viminfo!
Suppression de ~/.viminfo
n'a pas corrigé l'erreur.
Il s'avère que j'avais un tas de fichiers temporaires viminfo, et la suppression de ceux-ci a résolu le problème:
ls ~/.viminf* # If you want to see the files.
rm -rf ~/.viminf* # Remove them.
Trouvé cette solution ici .
J'ai reçu la même erreur en essayant de :wq
un fichier sur un disque qui était complètement plein. Si vous recevez ce message, vous souhaiterez peut-être vérifier votre espace disque disponible.
Une façon beaucoup plus propre de créer un répertoire personnel serait d'utiliser le squelette que Linux vous fournit par exemple.
Sudo cp -a /etc/skel /home/usernmae && Sudo chown -R usernmae:usernmae /home/usernmae
Pour moi, le problème était que j'avais changé mon répertoire personnel en un emplacement à l'intérieur d'un montage NFS. Pour une raison quelconque, cela a eu pour conséquence que le propriétaire du répertoire est "personne". L'ajout d'autorisations d'écriture pour "autre" a résolu le problème car je n'étais clairement pas le propriétaire du fichier.
chmod o+w ~/.viminfo
J'ai eu le même problème lors de la mise à jour du contenu de Makefile. J'avais besoin d'une variable locale et j'ai décidé de la nommer HOME
, j'ai donc entré la ligne HOME=2.154
. Cela provoque le vim-HOME
paramètre à remplacer par un répertoire inexistant. N'utilisez pas la variable HOME
pour une autre utilisation.
Je mon scénario, c'était l'absence de /root/.viminfo
fichier tout à fait. Après avoir touché le fichier, l'erreur s'est arrêtée et le fichier a été mis à jour à la sortie de vim. PS: Il s'agit de Linux intégré à Windriver.
Cela se produit très probablement parce que le répertoire home a manqué d'espace disque et que toute nouvelle opération vim ne peut pas écrire dans le fichier .viminfo.
Je pense que cela ne peut s'appliquer qu'aux versions assez anciennes de linux/vi, mais ce que j'ai trouvé, c'est qu'il y avait des fichiers temporaires dans le répertoire principal de la racine avec les noms de fichiers /root/.viminfa.tmp ... /root/.viminfz.tmp et qu'il y en avait 26 avec des horodatages couvrant plusieurs années. Nous n'avions plus de lettres de l'alphabet car toutes les lettres a-z ont été prises. J'ai supprimé tous ces fichiers et le problème a disparu. Bien sûr, Henrik # rm -rf ~/.viminf*
réglerait très bien ce problème.
Il semble que vous ayez effacé les variables d'environnement.
Faites ceci:
export HOME =/root
Cela devrait résoudre votre problème.
Je ne sais pas comment je suis tombé sur ce scénario moi-même, car je ne me souviens pas avoir ouvert de fichier à l'aide de Sudo vim
mais sur chaque :q
d'un fichier que j'obtenais comme "Impossible d'écrire viminfo n'est pas accessible en écriture".
rm ~/.viminfo
ne l'a pas résolu et ~/.vim/
était vide.
chmod 666 ~/.viminfo
a résolu ce message d'avertissement lors de la fermeture d'un fichier dans Vim. Bien que je ne sois pas certain que ce soit la meilleure solution? Il est logique pourquoi il a arrêté l'avertissement car .viminfo était rw ------ avant et je suppose qu'il est écrit dans les historiques de commandes vim.