【问题标题】:Cannot create backup file(add ! to overwrite)无法创建备份文件(添加!覆盖)
【发布时间】:2012-01-15 17:24:39
【问题描述】:

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

【问题讨论】:

  • @closevoter(s):Vi 和 Vim 是用于编程的工具,因此是主题
  • @IgnacioVazquez-Abrams:确实如此,但大多数计算机用户都使用键盘。模态文本编辑器有一个以程序员为中心的更具体的用户群。
  • @Johnsyweb:请随意说服愤怒的系统管理员群体,他们很快就会敲打你的门......
  • 我没有建议系统管理员不要使用 vi。

标签: linux bash vi


【解决方案1】:

你可以,正如vi(或者,更有可能是vim)所说,通过执行强制写入:

:w!

或者,将文件写入其他位置:

:w! /path/to/other/location

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

:se backup? backupdir? backupext? 

尝试touch该目录中的一个文件,看看你的操作系统是否给你一个错误提示你为什么你的编辑器不能在那里写。

【讨论】:

  • 在我的情况下,备份文件夹 (~/.vim/backups) 不存在。我创建了它,错误消失了。
  • +1 指出:se backup? backupdir? backupext? ! ---- 在我的情况下,子目录backup(由backupdir 选项值指定)与我的插件一起从损坏的~/.vim/ 目录中丢失。
  • 不知道它是如何结束的文件夹,如 ~/.vimundo,~/.vimbackup 归 root 所有。将所有者更改回我可以解决问题。 sudo chown -R peng:peng ~/.vim*
  • 在我的情况下,backupdir 是 ~/tmp 并且不存在。创建它解决了这个问题。
  • 此错误发生在您将备份文件夹设置为具有set backupdir=$PATH 的特殊文件夹后,并且$PATH 不存在。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 就我而言,$HOME 目录 (~) 不再可写。不知道这是怎么发生的,我不记得 chmod 了任何东西。
    • 还要确保它存在,我的在某个地方被删除了。
    【解决方案4】:

    我遇到了同样的问题。原来是因为磁盘空间不足。尝试使用 Ex) touch test.txt 创建文件。如果您收到一条消息说touch: cannot touch test.txt: No space left on device,您需要清理磁盘空间

    【讨论】:

    • 原来我需要一个新的 10000000000TB 驱动器。
    【解决方案5】:

    我已经解决了这个问题:

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

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

    【讨论】:

      【解决方案6】:

      我不知道是什么原因,但我在 .vimrc 中将 backupdir. 移动到 ~/.vim/backups,它为我解决了这个问题:

      set backupdir=~/.vim/backups
      

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

      【讨论】:

        【解决方案7】:

        在 vi 中,尝试:

        :w!
        

        :help w! 提供以下信息:

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

        【讨论】:

          【解决方案8】:

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

          这里有一些命令可以验证这一点并找到磁盘空间被占用的位置。就我而言,它是超过 20GB 的 PHP 日志。

          # 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 *
          

          【讨论】:

            【解决方案9】:

            备份位置可以在.vimrc中给出,例如:

            set backupdir=~/.vim/backup
            

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

            【讨论】:

              【解决方案10】:

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

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

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

              注意原因 w!工作是因为 vim 在没有写入备份文件的情况下写入文件(尽管出现错误,您仍坚持写入文件)。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2022-08-13
                • 2012-11-22
                • 2012-04-24
                • 2023-03-26
                • 2022-11-02
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多