Gedit无法保存在共享文件夹(Virtualbox)中

Gedit无法保存在共享文件夹(Virtualbox)中

我得到了

Cannot save _____ Unexpected error: Error renaming temporary file: Text file busy

当我尝试使用 Virtualbox (Debian) 保存在共享文件夹中时,在 Gedit 2 中。我查了一下,显然是Gedit的问题。这些解决方案似乎都不理想或适合我。

是否可以创建一个 shell 脚本(外部工具插件)将文件保存在其他地方,然后将其复制回 shell 中?所以我需要抓取 Gedit 存储临时(实时?)文件的位置。

或者,如果这是不可能/行不通/不好的做法,有人知道解决这个问题的好方法吗?我真的很喜欢 Gedit 并且更喜欢使用它。


目前,这是我的脚本。我告诉外部工具不要保存,而是将文档作为输入传递(stdin)

bin=""
while read LINE; do
    echo ${LINE}    # do something with it here
    bin="${bin}${LINE}\n"
done

echo $bin > /home/me/data2/test.txt

它工作正常,只是它不保留选项卡。我只编辑纯文本文件。编辑:这似乎也跳过了最后一行

答案1

我目前在 Windows 7 主机上最新的 mint-lmde 和 fedora virtualbox 虚拟机上使用 gedit 和 geany 时都遇到了这个问题。但是 Kate、kwrite、gvim/vim、Qtcreator、libre writer 不受影响。 Geany 和 gedit 都给出错误重命名临时文件:文本文件忙。我使用的是虚拟盒子 4.2.16。网上查了一下,类似的问题似乎已经存在很多年了。

我已经找到了 geany 的解决方案。

Fedora 上使用 geany 1.23.1,mint-lmde 上使用 1.22

编辑->首选项->各种勾选use_atomic_file_ saving

根据手册,这应该更安全。或者您可以取消勾选 use_gio_unsafe_file_ saving。两者都有效,说明在手册中。

对于 gedit 来说并非如此。

在 mint-lmde 上使用 gedit 3.4.2 时,只找到了一种一次性解决方法。

编辑->首选项->编辑器取消选中创建备份副本

这可以工作一次,然后在第二次保存时就不行了,除非你开始搞乱勾选、保存、取消勾选、保存,然后它会再次工作。看起来像一个错误。 Fedora 上的 gedit 3.8.3 可以取消勾选,但原始文件消失,只留下备份,没有任何更改。

答案2

“文本文件忙”意味着内核拒绝移动/重命名/删除作为程序运行的可执行文件。你想拯救什么?

答案3

我认为问题根本在于 glib 及其保存到临时文件的方式,然后在不关闭文件的情况下重命名。该错误已记录为: https://bugzilla.gnome.org/show_bug.cgi?id=656225

答案4

我知道这是一个老话题,但当我在寻找这个问题的解决方案时发现它时,我想我会发布我的解决方法,也许它可以帮助其他人。

就我而言,共享文件夹位于 LAN 中的 NAS 上,除了 geany 的问题之外,性能非常糟糕。我的解决方案是定义一个桥接网络适配器在我的虚拟机的 Virtualbox Manager/设置/网络中。然后虚拟机就可以像普通计算机一样访问我的局域网了。我可以将文件夹安装为普通网络共享(在 /etc/fstab 中定义),而不是使用 Virtualbox 中的共享文件夹。因此,我没有在 Virtualbox Manager/Settings/Shared 文件夹中定义任何文件夹。 geany问题消失了,性能也大大提高了。

相关内容