Vim 错误 E138: 无法写入 viminfo 文件 $HOME/.viminfo!

Vim 错误 E138: 无法写入 viminfo 文件 $HOME/.viminfo!

恐怕我遇到了一些相当奇怪的事情。当我正常打开文件时,vim README.txt一切都很好。但是在 上,该文件呈现空白,并在尝试退出时sudo vim README.txt给出错误。E138: Can't write viminfo file $HOME/.viminfo!

我怀疑.viminfo文件已损坏,所以我删除了它。这个问题仍然存在。有人能帮忙吗?

答案1

当你运行时,sudo vim你以 root 身份启动 vim。这意味着 /root 中的 viminfo 文件有问题。你应该做rm /root/.viminf*

为了确保这一点,请运行sudo vim并执行以下命令::!echo $HOME。这将显示您的主目录是/root。

我建议您不要以 root 身份运行 vim,而是使用sudoedit.这是一个更安全的解决方案,因为编辑器不以 root 身份运行。你永远不知道插件会做什么。此外,它允许您在 vim 中使用自己的设置和插件,而不是 root vimrc 中的设置和插件。sudoedit和跑步一样sudo -e。 sudoedit 的工作原理是制作调用用户(您)拥有的文件的临时副本。完成编辑后,更改将写入实际文件并删除临时文件。

一般经验法则:如果没有必要,不要以 root 身份运行。

答案2

每次退出时我都会遇到此错误。我没有使用sudo。它明确提到了我的用户主目录:

E138: Can't write viminfo file /Users/henrik/.viminfo!

删除~/.viminfo并没有修复错误。

结果我有一堆 viminfo 临时文件,删除这些文件解决了问题:

 ls ~/.viminf*      # If you want to see the files.
 rm -rf ~/.viminf*  # Remove them.

找到了这个解决方案这里

答案3

:wq当我尝试访问完全满的磁盘上的文件时,我收到了同样的错误。如果您收到此消息,您可能希望检查您的可用磁盘空间。

答案4

例如,创建主目录的更简洁的方法是使用 linux 为您提供的框架。

sudo cp -a /etc/skel /home/usernmae && sudo chown -R usernmae:usernmae /home/usernmae

相关内容