需要帮助。我一直在 vi 中编辑文本文件,之前我能够保存更改,但现在每当我输入命令来保存文件时,我都会收到上述错误。请帮忙。
你可以,因为
vi
(或者更可能是vim
)所说的强制写入:
:w!
或者,将文件写入另一个位置:
:w! /path/to/other/location
检查备份文件的写入位置(通常):
:se backup? backupdir? backupext?
尝试
touch
该目录中的一个文件,看看您的操作系统是否给出错误,以启发您为什么编辑器无法在那里写入。
有同样的问题。尝试了上述所有选项,但没有成功。然后当我检查我的磁盘空间时,它已满。一旦我清除了一些空间,我就可以再次写回文件。
P.S:这是在 Linux 中。
有同样的问题。这是因为我以root身份安装了vimconf。您需要更改 ~/.vim 目录中文件的权限并将所有者更改为您的用户。
sudo chmod 0750 ~/.vim
sudo chown user ~/.vim
我也遇到了同样的问题。事实证明这是由于磁盘空间不足造成的。尝试使用 Ex)
touch test.txt
创建一个文件。如果您收到一条消息说 touch: cannot touch test.txt: No space left on device
您将需要清理磁盘空间
我不知道原因是什么,但我在 .vimrc 中将
backupdir
从 .
移动到 ~/.vim/backups
,它为我解决了这个问题:
set backupdir=~/.vim/backups
我想象某种工具正在使用我正在编辑的文件的文件夹(在我的例子中是 Visual Studio 2013),但我不确定。
我已经解决了这个问题:
sudo chown {user} ~/.cache/vim/* -R
其中“{user}”字段是您的用户名。
在 vi 中,尝试:
:w!
:help w!
提供以下信息:
*:w!* :[range]w[rite]! [++opt] {file} Write the specified lines to {file}. Overwrite an existing file.
就我而言,我的磁盘已满。
这里有一些命令来验证这一点并查找磁盘空间被占用的位置。就我而言,PHP 日志超过 20GB。
# see general disk space usage
df -h
# see current file and directory disk space usage. You can go to / and work your way in
du -sh *
备份位置可以在
.vimrc
中给出,例如:
set backupdir=~/.vim/backup
您可能需要自己创建此目录。
另一种可能性是您将备份放在一个集中位置(例如 /tmp),并以 root 身份编辑了特定文件。然后,备份文件将归 root 所有,并且以后您作为凡人将无法写入。
在这种情况下,上面触摸 /tmp/atestfile 的建议不会显示问题!您将拥有写入权限,没问题,但没有 vim 尝试写入的特定备份文件的权限。
以 root 身份删除文件 (sudo rm)。
注意原因w!有效是因为 vim 写入文件而不写入备份文件(尽管出现错误,你仍然坚持写入)。
我刚刚开始使用 nvim,我发现我的问题是我借来的预制 vimrc 文件中有一个预设源。
grep -rnw ~/.config/nvim/ -e backup
.config/nvim/lua/custom/vimrc:132:set backupdir=~/.backup/,/tmp/
与这里的其他人一样,创建该备份目录清除了我的错误消息(~/.backup/)
我认为还值得一提的是,问题可能不是您在备份目录中拥有的权限。对我来说,我正在编写的文件位于根拥有的目录中,尽管该文件是用户拥有的。
如果您正在编辑不属于您的文件,即您正在编辑 root 拥有的目录中的文件,则可能会出现此消息。
你可以在目录下使用这个命令来查看哪些是你所拥有的,哪些是root所拥有的。
~/test λ ls -la .
total 8
drwxr-xr-x 2 root root 4096 Jul 20 01:50 .
drwx------ 27 root root 4096 Jul 20 01:49 ..
-rw-r--r-- 1 user user 0 Jul 20 01:50 hello
在本例中,hello 文件归用户所有,但目录
.
归 root 所有。如果您尝试使用 vim 或 neovim 编辑文件并保存,则会显示错误 Can't write to backup file (add ! to override)
。
所以要解决这个问题你可以
sudo chown root:root hello
sudo vim hello
它应该按预期工作。
简单,首先释放一些空间,然后重试..如果仍然存在相同的问题,然后尝试使用 :w 保存!