3

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

我已将 7zip 的外部编辑器设置为 gVimPortable.exe。在编辑不在存档或压缩文件中的文件时,它可以完美运行……但在编辑存档或压缩文件中的文件时,它会严重失败。

发生的情况是 7-zip 便携式将文件存储到一个临时位置,启动 gvimportable.exe,它分叉并打开 gvim.exe。

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

请注意,如果我将编辑器设置为 NotepadPlusPlusportable.exe,它可以完美运行。

你对这种行为有解释吗?

请注意-fgVimPortable.exe 的选项不能解决我的问题。

4

2 回答 2

3

当 gvim 按照您所说的默认启动时,它会分叉并退出,因此 7z 认为编辑已完成并删除文件。

您需要的是传递论点-f--nofork防止这种情况发生。

请参阅gvim 手册中的启动部分

版本 1

添加

let &guioptions = "gmrLtTf"

_vimrc(编辑->启动设置)

于 2010-10-08T07:47:56.427 回答
2

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

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

解释:

  1. 7zip 认为外部应用程序终止后会删除临时文件,我认为 gVimPortable 对此给出了 7zip 错误指示。所以使用 gVimPortable,你需要运气才能看到内容,因为它必须足够快才能在 7zip 删除之前打开文件,有时有效,有时无效。但是 7zip 总能正确检测到 gVim。
  2. 我只是做了一个猜测,但似乎两者都<base>\App\vim\vim72\gVim.exe可以<base>\gVimPortable.exe加载<base>\App\vim\_gvimrc:-)
于 2011-06-23T18:01:21.817 回答