恐怕我遇到了很奇怪的事情。当我正常打开文件时vim README.txt
,一切正常。但是在时sudo vim README.txt
,该文件呈现空白,并E138: Can't write viminfo file $HOME/.viminfo!
在尝试退出时给我一个错误。
我怀疑.viminfo
文件已损坏,因此将其删除。这个问题仍然存在。有人可以帮忙吗?
ls -la .vininf*
什么?
恐怕我遇到了很奇怪的事情。当我正常打开文件时vim README.txt
,一切正常。但是在时sudo vim README.txt
,该文件呈现空白,并E138: Can't write viminfo file $HOME/.viminfo!
在尝试退出时给我一个错误。
我怀疑.viminfo
文件已损坏,因此将其删除。这个问题仍然存在。有人可以帮忙吗?
ls -la .vininf*
什么?
Answers:
运行sudo vim
时,以root用户身份启动vim。这意味着问题是/ root中的viminfo文件。你应该做rm /root/.viminf*
。
要确保这一点,请运行sudo vim
并执行以下命令::!echo $HOME
。这将显示您的主目录是/ root。
我建议您不要以root身份运行vim,而应该使用sudoedit
。这是一个更安全的解决方案,因为编辑器不是以root身份运行。您永远不知道插件会做什么。另外,它允许您在vim中使用您自己的设置和插件,而不是roots vimrc中的设置和插件。sudoedit
与运行相同sudo -e
。sudoedit的工作方式是为调用用户(您)拥有的文件制作一个临时副本。完成编辑后,所做的更改将被写入实际文件,而临时文件将被删除。
作为一般经验法则:如果不需要,请不要以root用户身份运行。
创建主目录的一种更简洁的方法是使用linux为您提供的框架。
sudo cp -a /etc/skel /home/usernmae && sudo chown -R usernmae:usernmae /home/usernmae
对我来说,问题是我已将主目录更改为NFS挂载内的位置。由于某种原因,这导致目录的所有者为“ nobody”。为“其他”添加写权限解决了该问题,因为我显然不是文件的所有者。
chmod o+w ~/.viminfo
我不确定自己是如何遇到这种情况的,因为我不记得使用过打开任何文件,sudo vim
但是在每个:q
文件上我都得到类似的提示:“无法编写viminfo是不可写的”。
rm ~/.viminfo
没有解决,它~/.vim/
是空的。
chmod 666 ~/.viminfo
解决了在Vim中退出文件时的警告消息。虽然我不确定这是否是最佳解决方案?这是有道理的,为什么它停止了警告,因为.viminfo以前是rw ------,我认为这是在vim命令历史记录中写入的。
我的情况是,/root/.viminfo
完全没有文件。我触摸文件后,错误停止了,并且在退出vim时更新了文件。PS:这是嵌入式Linux的windriver。
ls .viminf*
吗?