GVim работает очень медленно при редактировании файлов в общей папке Windows - PullRequest
11 голосов
/ 20 января 2010

На моем компьютере на работе, каждый раз, когда я открываю файл, расположенный на сетевом ресурсе, GVim становится полностью непригодным для использования. Прокрутка документа может занять 15 секунд, чтобы перейти на одну «страницу». Даже использование клавиш перемещения для перехода от одного слова к другому может занять от 2 до 3 секунд. Кажется, это новое поведение, но я не помню, чтобы что-то меняло, что могло бы вызвать это. У меня сложилось впечатление, что Vim на самом деле не имеет доступа к файлу, кроме как при открытии и сохранении. Это верно?

Ответы [ 6 ]

10 голосов
/ 20 января 2010

Есть несколько факторов, которые могут повлиять на это.

Во-первых, убедитесь, что у вас есть настройка Vim, чтобы вы предпочитали хранить файл подкачки локально. Если ваш $HOME находится на локальном диске, я, как правило, помещаю это в мой vimrc (который будет либо $HOME\_vimrc, либо $VIM\_vimrc). Убедитесь, что вы создали этот каталог, иначе Vim продолжит использовать один из других каталогов в списке.

set directory^=$HOME/tmp

Это добавляет каталог $HOME/tmp к началу списка, который Vim проверяет, где размещать файлы подкачки.

Во-вторых, сделайте то же самое для файла резервной копии, который создает Vim. Та же ситуация, что и выше, но параметр, который вы будете менять, будет backupdir вместо directory.

В-третьих, обязательно отключите плагин matchparen. Этот плагин является новым для Vim 7, поэтому вы можете использовать более старую версию Vim. Это приводит к частому сканированию файла на наличие одинарных скобок, скобок и т. Д., Что может значительно замедлить Vim, когда файл находится в общей сетевой папке. Опять же, это должно войти в ваш vimrc.

let g:loaded_matchparen = 1

Если вы хотите временно отключить плагин, вы можете использовать команду :NoMatchParen, а затем :DoMatchParen, чтобы повторно включить его позже в этом сеансе Vim.

Наконец, если ничего из этого не помогло, вы всегда можете скопировать файл локально и отредактировать его.

5 голосов
/ 24 августа 2010

Файл подкачки не имеет к этому никакого отношения.У меня локальный файл подкачки, но проблема все еще есть.Я использую Process Monitor от SysInternals.com, и он обнаружил плохое поведение при попытке открыть "\ server \ TestTool \ foo \ ReadMe.TXT"

Сначала он пытается создать CreateFile (он же, каталог открыт) на "\ serve\».Обратите внимание, что последний символ отсутствует.Это приведет к тайм-ауту в течение 4 секунд с «ОБЪЕКТ ОБЪЕКТА НЕДОСТАТОЧНЫМ».

Затем он пытается создать CreateFile в «\ server \ TestToo \».Имя сервера правильное, последняя буква «TestTool» обрезается.Опять же, это 3-секундный тайм-аут с «ИМЯ ПЛОХОЙ СЕТИ».

Наконец, он понимает все правильно и вызывает CreateFile для «\ server \ TestTool \», который сразу работает.Затем CreateFile на «\ server \ TestTool \ foo», который работает сразу.Затем CreateFile на "\ server \ TestTool \ foo \ ReadMe.TXT", который работает сразу.

ПОЧЕМУ он пытается использовать неверные имена для сервера и корневого каталога ???Что это за безумие?

3 голосов
/ 29 октября 2012

Я исправил эту проблему после принудительной установки HOME path в расширенных настройках системы. (Ваш текущий путь HOME будет сетевым каталогом.)

Панель управления> Все элементы панели управления> Система> Расширенные настройки системы> Переменные среды

Нажмите "Новый ..."

Имя переменной: HOME

Значение переменной: c:\Home\ **<-- Type your home directory**

2 голосов
/ 28 мая 2010

Продолжение ответа jamessan: чтобы автоматически отключить плагин при редактировании файлов на общем ресурсе, добавьте эту строку в _vimrc

autocmd BufReadPre //* :NoMatchParen
1 голос
/ 14 июня 2011

Имеет проблему, похожую на Дэвид Андерсон , но решения пока нет.

При загрузке \\ServerName\A$\B\C\File.txt Vim сделает:

  • Открыть \ ServerName \ A $ \ B \ C \ File.txt

Затем он делает много циклов, таких как:

  • CreateFile \ ServerName \ A $ <- каждый занимает примерно 1 секунду </li>
  • QueryDirectory \ ServerName \ A $ \ B
  • QueryDirectory \ ServerName \ A $
  • QueryDirectory \ ServerName \ A $ \ B \ C
  • QueryDirectory \ ServerName \ A $ \ B

Для сравнения с Notepad ++, который загружает файлы практически мгновенно, есть больше строк, и Notepad ++ никогда не запрашивает \\ServerName\A$.

Также длительность (столбец Длительность ), записанная в Process Monitor, мала, но время, затрачиваемое Vim, кажется достаточно высоким ( Время дня столбец) для CreateFile \\ServerName\A$ .

Насколько я знаю, плагины не установлены, и я следовал другим советам, чтобы ускорить загрузку сетевых ресурсов.

Примечание: доллар на пути. Более странным является то, что Vim будет очень быстро загружаться на более позднюю Windows Server (2008 вместо 2003) с той же структурой папок.

1 голос
/ 20 января 2010

Вы можете рассмотреть возможность установки плагина LargeFile . Он отключает несколько функций, влияющих на производительность.

...