7z文件管理器删除外部编辑器的临时文件

时间:2010-09-30 12:18:35

标签: synchronization procmon

我正在使用来自portableapps.com的很多应用程序来工作,尤其是7-zip便携式和gVim便携式。

我已将7zip的外部编辑器设置为gVimPortable.exe。编辑不在存档或压缩文件中的文件时,它可以正常工作......但是当编辑存档或压缩文件中的文件时,它会失败。

7-zip portable会将文件存储到临时位置,启动gvimportable.exe,它会分叉并打开gvim.exe。

gvimportable.exe退出后的一段时间,我可以在Procmon中看到7zFM.exe执行“SetDispositionInformationFile”(详细信息:“删除:True”)删除临时文件,当gvim尝试打开它时,文件已被删除。

请注意,如果我将编辑器设置为NotepadPlusPlusportable.exe,它可以正常工作。

您对此行为有解释吗?

请注意,gVimPortable.exe的-f选项无法解决我的问题。

2 个答案:

答案 0 :(得分:2)

当gvim默认启动时,它会分叉和退出,因此7z认为编辑已完成并删除了该文件。

您需要传递参数-f--nofork以防止这种情况发生。

请参阅gvim manual

中的启动部分

REV1

添加

let &guioptions = "gmrLtTf"

_vimrc(编辑 - >启动设置)

答案 1 :(得分:1)

我想我找到了一个解决方案,至少可以在我的环境中使用(来自portableapps的7zip v9.20 + gVim 7.2)。

  1. 将7zip编辑器设置为使用<base>\App\vim\vim72\gVim.exe而不是<base>\gVimPortable.exe
  2. 将.vimrc文件放在<base>\App\vim\_gvimrc(不在<base>\Data\setting中)。
  3. 说明:

    1. 7zip会在认为外部应用终止后删除临时文件,我认为gVimPortable会给出7zip错误的指示。所以使用gVimPortable,你需要运气才能看到内容,因为它必须足够快才能在7zip删除它之前打开文件,有时可以工作,有时候不行。但7zip总能正确检测到gVim。
    2. 我只是猜了一下,但似乎<base>\App\vim\vim72\gVim.exe<base>\gVimPortable.exe都可以加载<base>\App\vim\_gvimrc :-)