web-dev-qa-db-fra.com

Erreur Vim E138: impossible d'écrire le fichier viminfo $ HOME / .viminfo!

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?

20

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.

30
arnefm

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 .

16
Henrik N

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.

5
duhaime

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
3
Rick

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
3
Jon Deaton

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.

0
user191855

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.

0
Naveen Gara

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.

0
psglinux

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.

0
Stephen Edge

Il semble que vous ayez effacé les variables d'environnement.

Faites ceci:

export HOME =/root

Cela devrait résoudre votre problème.

0
Ashfaq

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.

0
David Tahvildaran