J'ai peur d'avoir rencontré quelque chose d'assez étrange. Lorsque j'ouvre un fichier normalement vim README.txt
, tout va bien. Mais sudo vim README.txt
, le fichier est vide et me donne une E138: Can't write viminfo file $HOME/.viminfo!
erreur en essayant de quitter.
Je soupçonnais que le .viminfo
fichier était corrompu, alors je l'ai supprimé. Ce problème persiste. Quelqu'un peut-il aider?
permissions
vim
sudo
root
James Adam Buckland
la source
la source
ls .viminf*
?ls -la .vininf*
?Réponses:
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 fairerm /root/.viminf*
.Pour vous assurer de cela, exécutez
sudo vim
et exécuter 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 de l'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
revient à courirsudo -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.
la source
J'ai cette erreur à chaque sortie. Je n'ai pas utilisé
sudo
. Il mentionnait explicitement mon répertoire personnel:La suppression
~/.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:
J'ai trouvé cette solution ici .
la source
J'ai reçu la même erreur en essayant
: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.la source
Une façon beaucoup plus propre de créer un répertoire personnel serait d'utiliser le squelette fourni par Linux par exemple.
la source
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.
la source
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.
la source
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
, alors j'ai entré la ligneHOME=2.154
. Cela entraîne levim-HOME
remplacement du paramètre par un répertoire inexistant. N'utilisez pas laHOME
variable pour un autre usage.la source
HOME
s'agit d'une variable d'environnement prédéfinie et la redéfinir n'est généralement pas une bonne idée.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 az étaient 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.la source
Il semble que vous ayez effacé les variables d'environnement.
Faites ceci:
export HOME = / root
Cela devrait résoudre votre problème.
la source
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 en utilisant,
sudo vim
mais sur chacun:q
d'un fichier, j'obtenais un message similaire `` 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
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.la source
Dans mon scénario, c'était l'absence totale de
/root/.viminfo
fichier. Après avoir touché le fichier, l'erreur s'est arrêtée et le fichier a été mis à jour en quittant vim. PS: Il s'agit de Linux intégré à Windriver.la source