无法创建备份文件(添加!覆盖)

问题描述 投票:0回答:14

需要帮助。我一直在 vi 中编辑文本文件,之前我能够保存更改,但现在每当我输入命令来保存文件时,我都会收到上述错误。请帮忙。

linux bash vi
14个回答
58
投票

你可以,因为

vi
(或者更可能是
vim
)所说的强制写入:

:w!

或者,将文件写入另一个位置:

:w! /path/to/other/location

检查备份文件的写入位置(通常):

:se backup? backupdir? backupext? 

尝试

touch
该目录中的一个文件,看看您的操作系统是否给出错误,以启发您为什么编辑器无法在那里写入。


8
投票

有同样的问题。尝试了上述所有选项,但没有成功。然后当我检查我的磁盘空间时,它已满。一旦我清除了一些空间,我就可以再次写回文件。
P.S:这是在 Linux 中。


8
投票

有同样的问题。这是因为我以root身份安装了vimconf。您需要更改 ~/.vim 目录中文件的权限并将所有者更改为您的用户。

sudo chmod 0750 ~/.vim
sudo chown user ~/.vim

4
投票

我也遇到了同样的问题。事实证明这是由于磁盘空间不足造成的。尝试使用 Ex)

touch test.txt
创建一个文件。如果您收到一条消息说
touch: cannot touch test.txt: No space left on device
您将需要清理磁盘空间


3
投票

我不知道原因是什么,但我在 .vimrc 中将

backupdir
.
移动到
~/.vim/backups
,它为我解决了这个问题:

set backupdir=~/.vim/backups

我想象某种工具正在使用我正在编辑的文件的文件夹(在我的例子中是 Visual Studio 2013),但我不确定。


3
投票

我已经解决了这个问题:

sudo chown {user} ~/.cache/vim/* -R 

其中“{user}”字段是您的用户名。


1
投票

在 vi 中,尝试:

:w!

:help w!
提供以下信息:

                                                       *:w!*
:[range]w[rite]! [++opt] {file}
                        Write the specified lines to {file}.  Overwrite an
                        existing file.

1
投票

就我而言,我的磁盘已满。

这里有一些命令来验证这一点并查找磁盘空间被占用的位置。就我而言,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 *

1
投票

备份位置可以在

.vimrc
中给出,例如:

set backupdir=~/.vim/backup

您可能需要自己创建此目录。


0
投票

另一种可能性是您将备份放在一个集中位置(例如 /tmp),并以 root 身份编辑了特定文件。然后,备份文件将归 root 所有,并且以后您作为凡人将无法写入。

在这种情况下,上面触摸 /tmp/atestfile 的建议不会显示问题!您将拥有写入权限,没问题,但没有 vim 尝试写入的特定备份文件的权限。

以 root 身份删除文件 (sudo rm)。

注意原因w!有效是因为 vim 写入文件而不写入备份文件(尽管出现错误,你仍然坚持写入)。


0
投票

我刚刚开始使用 nvim,我发现我的问题是我借来的预制 vimrc 文件中有一个预设源。

grep -rnw ~/.config/nvim/ -e backup
.config/nvim/lua/custom/vimrc:132:set backupdir=~/.backup/,/tmp/

与这里的其他人一样,创建该备份目录清除了我的错误消息(~/.backup/)


0
投票

我认为还值得一提的是,问题可能不是您在备份目录中拥有的权限。对我来说,我正在编写的文件位于根拥有的目录中,尽管该文件是用户拥有的。


0
投票

如果您正在编辑不属于您的文件,即您正在编辑 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

它应该按预期工作。


0
投票

简单,首先释放一些空间,然后重试..如果仍然存在相同的问题,然后尝试使用 :w 保存!

© www.soinside.com 2019 - 2024. All rights reserved.