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

发布于 2024-09-25 21:10:15 字数 534 浏览 8 评论 0原文

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

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

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

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

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

您对这种行为有解释吗?

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

I am using a lot applications from portableapps.com for work, and more particularly 7-zip portable and gVim portable.

I have set 7zip's external editor to gVimPortable.exe. It works perfectly when editing a file that is not inside an archive or compressed file… but it miserably fails when editing a file inside an archive or compressed file.

What happens is that 7-zip portable stores the file to a temporary place, launches gvimportable.exe, which forks and opens gvim.exe.

And some time after gvimportable.exe exits, I can see in Procmon that 7zFM.exe does a “SetDispositionInformationFile” (Details: “Delete: True”) that deletes the temporary file, and when gvim tries to open it, the file has been deleted.

Note that it works perfectly if I set the editor to NotepadPlusPlusportable.exe.

Do you have an explanation for this behaviour?

Please not that the -f option of gVimPortable.exe does not solve my problem.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦在夏天 2024-10-02 21:10:15

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

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

中的启动部分

请参阅 gvim 手册 rev1

添加

let &guioptions = "gmrLtTf"

_vimrc (编辑->启动设置)

When gvim started as you say by default it forks and exits so 7z thinks that the edit has finished and deletes the file.

What you need is to pass the argument -f or --nofork to prevent this.

See the startup section in the gvim manual

rev1

add

let &guioptions = "gmrLtTf"

to _vimrc (Edit->Startup Settings)

撑一把青伞 2024-10-02 21:10:15

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

  1. 设置 7zip 编辑器使用 \App\vim\vim72\gVim.exe 而不是 \gVimPortable.exe
  2. 放入您的 .vimrc 文件位于 \App\vim\_gvimrc (不在 \Data\setting 中)。

说明:

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

I think I've found a solution, at least works on my env (7zip v9.20 + gVim 7.2 from portableapps).

  1. Set the 7zip editor to use <base>\App\vim\vim72\gVim.exe instead of the <base>\gVimPortable.exe
  2. Put your .vimrc file at <base>\App\vim\_gvimrc (not in <base>\Data\setting).

Explanation:

  1. 7zip will delete temp file after it thinks the external app terminated, I think the gVimPortable gives 7zip wrong indication on this. So use gVimPortable, you need luck to see the content, as it must fast enough to open the file before 7zip delete it, sometime works, sometimes not. But 7zip could always correctly detect the gVim.
  2. I just made a guess, but seems both <base>\App\vim\vim72\gVim.exe and <base>\gVimPortable.exe could load <base>\App\vim\_gvimrc :-)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文