7z файловый менеджер удаляет временный файл для внешнего редактора - PullRequest
2 голосов
/ 30 сентября 2010

Я использую множество приложений от portableapps.com для работы, в частности, 7-zip portable и gVim portable.

Я установил для внешнего редактора 7zip файл gVimPortable.exe. Он отлично работает при редактировании файла, который не находится внутри архива или сжатого файла ... но с треском проваливается при редактировании файла внутри архива или сжатого файла.

Что происходит, так это то, что 7-zip portable сохраняет файл во временном месте, запускает gvimportable.exe, который разветвляется и открывает gvim.exe.

И спустя некоторое время после выхода gvimportable.exe я вижу в Procmon, что 7zFM.exe выполняет «SetDispositionInformationFile» (Подробности: «Delete: True»), который удаляет временный файл, и когда gvim пытается открыть его, файл был удален.

Обратите внимание, что он отлично работает, если я установил для редактора NotepadPlusPlusportable.exe.

У вас есть объяснение этому поведению?

Обратите внимание, что опция -f в gVimPortable.exe не решает мою проблему.

Ответы [ 2 ]

2 голосов
/ 08 октября 2010

Когда gvim запускается, как вы сказали, по умолчанию он разветвляется и выходит, поэтому 7z считает, что редактирование завершено, и удаляет файл.

Вам нужно передать аргумент -f или --nofork, чтобы предотвратить это.

См. Раздел запуска в руководстве gvim

rev1

добавить

let &guioptions = "gmrLtTf"

до _vimrc (Правка-> Настройки запуска)

1 голос
/ 23 июня 2011

Я думаю, что нашел решение, по крайней мере, работает на моем env (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 :-)
...