Чи велика кількість змушує vim працювати повільно?


18

Це здається справді вибагливим питанням, але у мене є файл Python, у якому є число, яке має тисячу цифр, і цей файл, здається, працює дуже повільно, я не впевнений, чи відбувається якась обробка, що я я не знаю про це.

Я натискаю лінію вгору jі є певна пауза ~ 1 секунда, це дуже боляче!

У мене це є лише у файлі Python, але це не відбувається в інших.

Після видалення номера файл знову працює нормально ...

Ось номер:

number=("""7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450""")

Це навіть не число, а його рядок.


2
Тут підтверджено; не відбувається, якщо файл є .txt. Якийсь синтаксис підкреслює шаблон регулярного виразка, мабуть.
Рмано

Оскільки це пов'язане з підсвічуванням синтаксису, простим способом вирішення буде встановити synmaxcolдеяку обмежену кількість (наприклад, ширину вашого терміналу).
Слейд

Відповіді:


23

Я можу це відтворити з тим, syntax/python.vimщо постачається з Vim 7.4.663.

Використовуючи :syntimeце , здається, викликано наступний синтаксис групи / схема:

TOTAL      COUNT  MATCH   SLOWEST     AVERAGE   NAME               PATTERN
73.870736   20     0       3.940215    3.693537  pythonNumber       \%(^\|\W\)\@<=\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>

Ви повинні повідомити про цю проблему своєму технічному обслуговувачеві (його ім'я та адреса електронної пошти є у заголовку сценарію).

До речі, спочатку я не міг відтворити це, тому що я використовую альтернативний синтаксис скрипт тут . Перехід на це (якщо він відповідає вашим вимогам), також був би життєздатним рішенням.


Редагувати: Далі вивчаючи ймовірно причину, це, мабуть, пов’язано з патологічною роботою нового двигуна на основі регулярних викидів на основі NFA. З :set regexpengine=1, я не бачу цього величезного уповільнення. Отже, одним із можливих способів вирішення / виправлення було б перехід на старий двигун для відповідності синтаксису; це можна зробити, попередньо додавши \%#=1до шаблону (ср. :help NFA).


дякую @Ingo, я ніколи раніше нічого не повідомляв, але радий це зробити. У мене є файл синтаксису /usr/share/vim/vim74/syntax, розробник вгорі - Neil Schemenauer <nas@python.ca>. Чи я можу вас запитати; це чому ви оригінально змінили файли синтаксису? Спасибі
baxx

Так, правильно; остання версія - з 16 липня 2014 року, тому, ймовірно, вона все ще зберігається, і ви отримаєте відповідь від автора. Ви можете вказати йому на це, на ваше запитання, оскільки воно вже містить приємний відтворюваний приклад.
Інго Каркат

Я просто десь знайшов свій альтернативний синтаксис Python; Я лише рідко редагую файли Python, тому до цього часу я не так багато думав.
Інго Каркат

дякую @Ingo, я змінив файли синтаксису, і це вже не так повільно. Я боюся, що двигуни регулярних викидів трохи перевищують моє розуміння, я надішлю електронну пошту розробнику, але я радий провести будь-які тести.
baxx
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.