Vim은 구문을 켜면 시간이 지남에 따라 속도가 느려집니다.


11

syntax onVim 을 사용할 때 할 수있는 일이 있습니까?

실질적인 것을 열 자마자 잠시 후에 편집하는 것이 거의 불가능 해집니다. 키를 누를 때마다 지연이 발생합니다. 구문 강조 표시를 끄거나 vim을 다시 시작하면 다시 문제가 없습니다.

나는 한 synmaxcol59 라인 길이 80 개 문자를 초과하지 않는 120 샘플 루비 파일을 설정합니다.

나는를 사용 vim-ruby하고 vim-rails있습니다.

문제는 시간이 지남에 따라 지연이 누적되는 것입니다. 파일을 처음부터 열면 괜찮습니다. 잠시 후 점점 느려집니다.


1
이것을 사용하여 복제 해 보셨습니까 vim -Nu NONE -c 'syntax on'? 이 게시물
akshay

어떤 파일 형식? 어떤?
romainl

1
루비. 실제로 편집 할 수 -u NONE있으므로 플러그인이어야합니다. 대부분의 질문에 대한 대답은 '범죄자를 찾을 때까지 플러그인 비활성화'입니다. :(
firedev

그러나 문제는 시간이 지남에 따라 지연이 누적되는 것 같습니다. 파일을 처음부터 열면 괜찮습니다. 잠시 후 점점 느려집니다.
firedev

답변:


13

최신 Vim 버전에는 :syntime각 구문 그룹이 일치하는 데 걸리는 시간에 대한 보고서를 생성하여 구문 강조 표시 속도 저하 문제를 해결 하는 명령이 있습니다. 이것은 매우 유용하며 신속하게 범인을 찾을 수 있습니다. 유일한 단점은 프로파일 링이 활성화 된 Vim의 빌드 (일반적으로 "HUGE")가 필요하다는 것입니다. :help :syntime그것을 사용하는 방법에 대한 좋은 지침을 제공합니다.

또는 현재에 따라 ~/.vim/syntax/및 에서 개별 구문 스크립트를 제거한 다음 스크립트 내부에서 구문 정의의 일부를 제거하여 드릴 다운 할 수 있습니다.$VIMRUNTIME/syntax/'filetype'


흥미롭고, 이런 소리는 태그와 관련이 있습니다. 가장 많은 시간이 걸리는 최상위 라인에는 다른 프로젝트의 방법이 있습니다. TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN 0.129674 247 182 0.002365 0.000525 rubyMethodNameTag \C\<\%(roi\|paginate\|admin_index_attributes\|facilities\|manager\|net_price?\ ....– 이것은 다른 폴더에서 명확하게 나타납니다. 태그를 비활성화 하시겠습니까?
firedev

vim-easytags 와 같은 태그를 강조하는 플러그인을 사용하십니까 ? 실제로 속도가 느려질 수 있습니다.
Ingo Karkat

그렇습니다, 다시 비활성화하십시오. 감사.
firedev

흠 이제 다시 행동하고 있습니다. 0.121880 2078 54 0.002260 0.000059 rubySymbol []})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@= – 이번에 할 수있는 일이 있습니까?
firedev

2
새로운 정규식 엔진 일 수 있습니다. 시도하십시오 :set regexpengine=1(Ruby 파일을 열기 전에 새로운 Vim 인스턴스에서 가장 좋습니다).
Ingo Karkat

5

vim의 구문 강조에서 또 다른 일반적인 병목 현상은 접기입니다. fold에 많은 구문 항목이 포함되어 있으면 편집이 매우 느려질 수 있습니다. 즉, vim은 삽입 된 모든 문자에 대한 모든 구문을 새로 고치므로 많은 줄을 넘습니다.

이것이 당신이 경험하고 있다면 FastFold 플러그인을 사용하는 것이 좋습니다 . 이 플러그인은 구문 폴드를 식별하고 수동 폴드로 대체하여 vim의 구문 강조를 훨씬 빠르게 만듭니다.


1

여기에 내가 한 일이 있습니다.

  • 제거 xolox/vim-easytags
  • 제거 xolox/vim-misc
  • 대체 kien/ctrlp d11wtq/ctrlp_bdeletetacahiroy/ctrlp-funkyjunegunn/fzf
  • 세트 regexpengine=1

현재 Vim은 버터처럼 부드럽지만 더 이상 태그가 없습니다. 한숨...


1
Vim은 내장 태그를 지원합니다. 태그 파일을 생성하기 위해 ctags 이외의 타사 플러그인이 필요하지 않습니다. 팀 포프 (Tim Pope)의 힘겨운 태그 첨부 문서 참조. 나는 이것을 사용하고 놀라운 일을합니다. 또한 :help tag-commands태그로 이동을 참조하십시오 . Vim으로 작업 할 때 ctags가 매우 중요하다고 생각합니다. 탐색이 매우 간단하며 자동 완성 기능으로 :help i_Ctrl-x_Ctrl-]!
akshay

여기에 무엇이든 추가하십시오 vi.stackexchange.com/questions/2630/how-to-set-up-tags-properly ?
firedev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.