2010-01-30 5 views
55

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

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

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

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

+1

Что вы используете? –

+1

У меня такая же проблема, но в C++. Вы взяли это под контроль? Я пробовал играть с и без тегов-файлов, но он постоянно рекурсивно проверяет текущий каталог (я его отключил, чтобы посмотреть, что он делает, и он вызывает вызов stat во всех файлах, которые он может найти). Это прозрачная среда == slooooow. – falstro

ответ

98

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

Есть установка, указывающая VIM, где искать пополнения, называемые complete.

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

это значение по умолчанию. Моя проблема (на самом деле ..) «i», которая сканирует все включенные файлы. Здесь есть две проблемы, первая одна, находя все эти файлы может занять некоторое время, особенно если вы, как я, есть

:set path=** 

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

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

Использование

set complete-=i 

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

+0

Большое вам спасибо. Это один из этих недоэкспонированных опций конфигурации, которые не упоминаются в справке «insert.txt». – sehe

4

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

+0

ctags -R в вашем проекте root; это команда, если вы на Linux – gustavgans

40

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

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

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

+1

ВЫ УДИВИТЕЛЬНЫ. Завершение в файлах Ruby было для меня необычно медленным, в файлах, которые были довольно тривиальны по размеру (~ 100 LOC). Не удалось его решить. Тогда я прочитал это. Я меняю foldmethod в буфере Ruby на что угодно, кроме «синтаксиса», и завершение происходит мгновенно. Теперь, почему на земле есть складной метод, называемый сумасшедшим, когда Вим делает автозаполнение? – Legion

+1

Это сработало и для меня. И снова, «почему на земле есть складчатый метод, называемый сумасшедшим, когда Вим делает автозаполнение?» !! – Jason

+1

Я бы дал +5, если мог. Кричите [этот блог] (http://economyofeffort.com/2012/03/01/fixing-slow-vim-auto-completion-with-ruby-files/) для указания меня здесь. – Kelvin

Смежные вопросы