GVIM зависает при сохранении через FTP GVFS

981
Lie Ryan

Мне понравилась интеграция Gnome с Nautilus и FTP, а также возможность монтировать удаленный каталог FTP как обычную закладку / каталог и дважды щелкать любые удаленные файлы, чтобы открыть их в любой неизмененной программе. Я также любил редактировать текстовые файлы с помощью GVim.

Однако если я дважды щелкну файл на Nautilus, чтобы открыть текстовый файл в Gvim, то сохранение файла займет около 10 секунд, и GVim будет зависать в течение этого времени. Основным раздражителем является то, что я не могу продолжить редактирование, пока текстовый редактор ожидает завершения записи, эта задержка прервала мой рабочий процесс и процесс мышления, и сохранение стало болезненным процессом. Другая проблема заключается в том, что я не думаю, что простая загрузка файла должна занимать столько времени.

Я знаю о внутренней поддержке FTP GVim, но они не так хорошо интегрированы с FTP Nautilus, и она страдает от той же проблемы.

Итак, несколько вопросов:

  1. Есть ли способ заставить GVim или GVFS сохранять в фоновом режиме, пока я продолжаю редактирование?
  2. Почему GVFS такой медленный? Есть ли способ настроить GVFS на использование одного постоянного соединения FTP вместо создания нового соединения FTP каждый раз?

Я на Gentoo Linux x86-64.

5
У меня та же проблема (по крайней мере, кажется, что та же самая проблема) в Ubuntu с Kate и SFTP. user55325 13 лет назад 0

2 ответа на вопрос

0
Haqa

К сожалению, я не думаю, что вы найдете решение этой проблемы, по крайней мере, не легко. Насколько я понимаю, это функция виртуальной файловой системы - она ​​блокирует записи до тех пор, пока они не завершатся успешно или не завершатся неудачно, чтобы их можно было точно передать в приложение.

Я (как user55325) испытал это с Kate и SFTP, а также с рядом других приложений, похоже, так оно и есть.

Учитывая, что мой VPN на работе довольно медленный, мне пришлось отказаться от редактирования файлов таким образом, работая из дома, и мне пришлось прибегнуть к rsync для больших проектов.

0
CodeGnome

Предполагается, что вы уже отключили плагин netrw, который (по крайней мере, в Debian и Ubuntu) распространяется вместе со средой выполнения Vim. Это может показаться правильным способом, если только вам не нужен файл, который выглядит по какой-то причине локальным.

Если вы хотите рассматривать удаленный файл как локальный, вам лучше использовать систему VFS с более настраиваемой конфигурацией, чем gvfs. Например, вы можете рассмотреть FUSE модули curlftpfs или avfs . Первый, безусловно, позволяет восстановить соединение, когда время ожидания истекло, и довольно хорошо задокументировано.

Это действительно звучит так, как будто ваша проблема в том, что gVim считает ваш файл локальным, когда это не так, и делает все правильно, когда ввод / вывод заблокирован, ожидая открытия FTP-соединения. Использование монтирования FUSE, поддерживающего постоянное соединение, или правильное использование плагина netrw должны решить эти проблемы для вас.

Вы хотите, чтобы приложение блокировало ошибочные записи. Мягкое монтирование должно использоваться только для данных, доступных только для чтения, поэтому, даже если Vim предлагает такое поведение, не стоит полагаться на него.

Как я уже писал: «Я знаю о внутренней поддержке FTP GVim, но они не так хорошо интегрированы, как FTP Nautilus, и ** он страдает от той же проблемы **.» Кроме того, я не думаю, что это правда, что блокировка во время записи всегда желательна; например, Coda для Mac OSX позволяет вам продолжить редактирование файла, пока файл загружается в фоновом режиме; есть спиннер, который уведомляет вас о том, что сохранение все еще выполняется, чтобы вы знали, когда проверять результат (для моего случая использования редактирования файла PHP мне нужно проверить результат в браузере). Lie Ryan 12 лет назад 0

Похожие вопросы