Автозаполнение Vim мучительно медленно - PullRequest
60 голосов
/ 31 января 2010

Большую часть времени у меня хорошо работает функция автозаполнения в Vim, но иногда кажется, что она сканирует файлы, на которые ссылается текущий файл, и затем она становится мучительно медленной, иногда требуя нескольких секунд, чтобы вернуть мне фокус. 1001 *

Иногда Vim говорит мне просто, что «сканирует», иногда говорит «Сканирование тегов»

У меня только это происходит в файлах Ruby, и в основном это происходит, когда в файле есть требование.

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

Ответы [ 3 ]

107 голосов
/ 17 марта 2010

Как я уже упоминал в комментарии, у меня была такая же проблема. Вот что я нашел;

Есть настройка, сообщающая VIM, где искать завершения, называемая complete.

:set complete
complete=.,w,b,u,t,i

это значение по умолчанию. Моя проблема (была на самом деле ..) 'я', который сканирует все включенные файлы. Вот две проблемы, первая, поиск , все эти файлы могут занять много времени, особенно если у вас, как и у меня,

:set path=**

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

Я удалил i на данный момент, так как у меня есть файл тегов, и чаще всего у меня также есть соответствующие файлы в моих буферах (загруженные или выгруженные), которые будут найдены в результате 'b' и "ты".

Используйте

set complete-=i

чтобы удалить i из списка, обратите внимание, что это локально для буфера.

42 голосов
/ 25 ноября 2010

У меня была очень похожая проблема с момента обновления до Vim 7.3 (с 7.2): я использовал (отлично) плагин ACP и в более длинных исходных файлах (C-файлы, 1700 LOC) всплывающее окно возраст, чтобы прыгать через предложения, когда я редактировал в нижней части файла.

Используя PerformanceValidator (из Softwareverify ), я обнаружил, что некоторые методы сворачивания вызывались снова и снова и приводили к очень высокой загрузке процессора и медленному завершению.

Мой обходной путь - установить foldmethod (fdm) на manual. И это решило это ...

5 голосов
/ 31 января 2010

У вас есть файл тегов для проекта, над которым вы работаете? Если нет, попробуйте сгенерировать один с exuberant-ctags, и Vim должен взять его с помощью плагина taglist.

...