Vim을 느리게 만드는 플러그인을 확인하는 방법은 무엇입니까?


318

Vim 플러그인을 프로파일 링하는 방법이 있습니까?

큰 Mac을 열면 MacVim이 느려집니다 .py. 모든 플러그인을 선택 취소하고 하나씩 플러그인을 다시 선택하여 범인이 어떤 플러그인인지 확인할 수 있지만 더 빠른 방법이 있습니까?

내 dotvim은 여기 있습니다 : https://github.com/charlax/dotvim



1
실제로, 시작은 괜찮습니다. Vim은 몇 분 사용 후 속도가 느려집니다. 특히 .py파일과 관련이 있습니다.
charlax

이진 검색 갈 길입니다. 2 시간 전에 질문을했는데 그 당시 문제의 원인이 발견되었을 것입니다. Ingo Karkat의 autocmd직감은 그럴듯한 소리를냅니다.
romainl

사실입니다.하지만 한 시간 안에 같은 결과를 얻을 수있는 방법이 있다면 더 낫다고 생각하지 않습니까? 더구나, 스타트 업은 괜찮습니다. 몇 분 동안 사용하면 시간이 오래 걸렸을 것입니다. autocmd좋아 보인다. 방금 시도했지만 Vim은 지금 느리지 않습니다.
charlax

1
방금 같은 문제에 직면했지만 큰 루비 파일에서. 발견 folding=syntax속도가 느려질 수 있습니다. 와 시도 folding=manual그리고 지금 모든 작동합니다
알렉산드르 K.을

답변:


496

내장 된 프로파일 링 지원을 사용할 수 있습니다 : vim을 실행 한 후

:profile start profile.log
:profile func *
:profile file *
" At this point do slow actions
:profile pause
:noautocmd qall!

(종료 noautocmd가 실제로 필요하지는 않지만 vim이 더 빨리 종료됩니다).

참고 : vim 종료 전에 삭제 된 기능에 대한 정보는 얻을 수 없습니다.


13
이것은 놀랍다. EasyTags가 범인임을 알 수있었습니다. 고마워요!
charlax

5
이것은 "vim-gitgutter"를 막힘으로 감지하는 데 도움이되었습니다.
Sebastián Grignoli

6
@subjectego :set more | verbose function {function_name}는 함수 내용과 위치를 보여줍니다.
ZyX

26
확실하지 않으면 결과 profile.log는 Vim 세션의 현재 디렉토리에있는 파일입니다.
Micah Smith

7
profile.log총 시간별로 정렬 된 함수 목록을 보려면 끝으로 이동하십시오 ( profile.log끝에 정렬 된 목록이 있다는 것을 알기 전에는 소용이 없었습니다).
Andrey Portnoy

78

vimrc를로드하는 동안 정확한 타이밍 메시지를 표시하는 또 다른 매우 유용한 vim buildin 메소드를 찾았습니다.

vim --startuptime timeCost.txt timeCost.txt

다음을 실행하십시오 :

:help --startuptime

VIM에서 더 많은 정보를 얻을 수 있습니다.


3
다른 누군가가 궁금해하는 경우를 대비하여 모든 vim / gvim 배포판에 존재하는 것은 아닙니다. 재고가 없습니다 여기에 Win Gvim 7.4가 있습니다 (viminfo에 문서화되어 있음)
thynctank

1
@thynctank 나는 내 gvim 7.4를 시도했지만 효과가있었습니다. 여기 내 버전이 있습니다IM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 10 2013 14:33:40)
feihu

최고의 답변! vim을 시작할 때마다 화가 나는 가장 느린 플러그인을 식별하는 데 도움이되었습니다.
감사합니다

이것과 기본 -V은 그것이 로컬 $HOME이 아닌 문제를 일으킨다 는 것을 보여주었습니다
bsb

:e파일을 새로 고치려면 실행해야 합니다. 다음과 같이 각 op에 소요 된 총 시간에 따라 파일을 정렬하십시오.:%! sort -k2 -nr
Ashutosh Jindal

31

플러그인 또는 구문 강조가 될 수 있습니다. :syntax off이런 일이 생기면 Vim이 더 빨리 빨라지는지 보십시오 .

플러그인의 경우 "일반적인 속도 저하"는 일반적으로 자동 명령에서 비롯됩니다. 는 :autocmd그들 모두를 나열합니다. 를 통해 그들 중 일부를 죽여 조사하십시오 :autocmd! [group] {event}. 보다 빈번한 이벤트 (예 :)에서 CursorMoved[I]덜 빈번한 이벤트 (예 :)로 진행하십시오 BufWinEnter.

속도를 다소 안정적으로 재현 할 수 있으면 이진 검색이 도움이 될 수 있습니다.에서 파일의 절반을 이동 ~/.vim/plugin/한 다음 다른 파일 은 느린 세트에서 반복하십시오.

실제로 후드를 살펴 보려면 :profile명령이 활성화 된 Vim 버전을 구하십시오 . (바닐라 BIG Windows 버전은 아니지만 Cygwin과 함께 제공되는 버전이 있습니다. 또한 대부분의 배포판에서는 자체 컴파일이 매우 쉽습니다.)


17

-V옵션으로 Vim을 시작하여 모든 Vim 활동을 파일로 인쇄하는 것이 도움이된다는 것을 알았습니다 .

vim -V12log

최대 상세 정보 (레벨 12)를 제공하고 파일에 출력합니다 log. 그런 다음 느린 것으로 알려진 일부 Vim 작업을 수행 한 다음 내부적으로 어떤 함수 / 매핑이 호출되는지 확인할 수 있습니다.


10
그러나 로그에 타이밍이 없습니다
Kokizzu

7

화면 업데이트 작업 ( ^L, 스크롤 등)에 문제가있는 경우 구문 강조 파일이 비효율적 일 수 있습니다. 구문 강조 ( :syn off) 를 일시적으로 비활성화 하고 문제가 사라지는 지 확인하여 이를 테스트 할 수 있습니다. 세부 사항을 파고 싶다면 다음을 사용하여 현재 구문 파일을 프로파일 링하십시오 :syntime.

  1. 구문 강조 성능 문제를 일으키는 파일을 엽니 다.
  2. :syntime on프로파일 링을 시작하려면 실행하십시오 .
  3. 파일을 약간 스크롤하십시오.
  4. :syntime report보고서를 생성하기 위해 실행하십시오 . 보고서에서 첫 번째로 나열된 패턴은 처리하는 데 가장 많은 시간이 소요 된 패턴입니다.

2
구문 강조 파일이 원인 인 것처럼 보이면 다음 조치는 무엇입니까?
Spectator6
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.