숫자가 많으면 vim이 느리게 실행됩니까? 누르고 j~ 1 초의 명확한

이것은 정말로 멍청한 질문처럼 보이지만, 그 안에 1000 자리 길이의 숫자가있는 파이썬 파일이 있고 그 파일이 매우 느리게 실행되는 것 같습니다. 모르겠다.

나는 라인업을 누르고 j~ 1 초의 명확한 일시 중지가있어 매우 고통 스럽습니다!

나는 이것을 파이썬 파일에만 가지고 있지만 다른 사람들에게는 발생하지 않습니다.

번호를 삭제하면 파일이 다시 정상적으로 작동합니다.

숫자는 다음과 같습니다.

number=("""7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450""")

그것은 실제로 숫자가 아니며 문자열입니다.



답변

syntax/python.vimVim 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]\=\>

이 문제를 관리자에게보고해야합니다 (이름과 이메일 주소는 스크립트 헤더에 있음).

덧붙여서, 나는 here 에서 대체 구문 스크립트를 사용하기 때문에 원래 이것을 재현 할 수 없었 습니다 . 그것으로 전환하면 (요구 사항에 맞는 경우) 실행 가능한 해결 방법이 될 것입니다.


편집 : 아마도 원인을 더 자세히 살펴보면 새로운 NFA 기반 정규 표현식 엔진의 병리학 적 성능 때문인 것 같습니다. 와 함께 :set regexpengine=1, 나는 그 큰 둔화를 보지 못합니다. 따라서 가능한 해결 방법 / 수정 중 하나는 해당 구문 일치에 대해 이전 엔진으로 전환하는 것입니다. \%#=1패턴 앞에 추가 하면됩니다 (cp. :help NFA).