Vim - медленный переход в обычный режим для больших файлов PHP с включенной подсветкой синтаксиса - PullRequest
4 голосов
/ 20 марта 2012

Когда я использую Vim 7.3 для редактирования большого файла PHP (2000 строк), если я переключаюсь из режима вставки в обычный режим, задержка составляет около 1-2 секунд.

Это довольно расстраивает, когда мне нужно сделать несколько быстрых правок.

Для небольших файлов (300 строк) задержка отсутствует. На реверсе (нормальный режим для режима вставки) также нет задержки.

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

:syntax off

Некоторые вещи, которые я пытался безрезультатно:

  • отключение складывания
  • выключение плагина matchparen
  • отключение всех пользовательских плагинов
  • с помощью плагина largefile

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

Это заставляет меня думать, что это то, что можно исправить.

Я проверил это в gVim и консоли vim (под cygwin) в Windows XP.

Кто-нибудь знает, в чем может быть проблема?

Или кто-нибудь еще может воспроизвести эту проблему? Я гуглил, но больше никого не вижу с такой же странной проблемой.

ОБНОВЛЕНИЕ : Я думаю, что это может быть связано только с подсветкой синтаксиса PHP. Я только что попробовал coffeescript и javascript файлы с более чем 2000 строками, и у меня не было проблем с ними.

Ответы [ 3 ]

6 голосов
/ 20 марта 2012

Я не видел проблему, которую вы описываете, но событие InsertLeave было бы одним из мест, где можно начать поиск.Проверьте вашу цветовую схему (и любые другие плагины), чтобы увидеть, есть ли автокоманда InsertLeave.В моей собственной системе файл цветов схемы lettuce.vim содержит несколько таких файлов;вполне возможно, что они дороги или даже могут вызывать какую-то рекурсивную обработку (просто мысли вслух).

Редактировать Вы можете проверить, какие автокоманды связаны с данным событием:делать :au {EventName}, например :au InsertLeave.

2 голосов
/ 05 декабря 2013

Попробуйте этот параметр в своем файле .vimrc.

set ttimeoutlen = 0

1 голос
/ 22 июля 2014

У меня возникла та же проблема, и я предложил плагин

https://github.com/Konfekt/FastFold

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

...