"vim" 및 "nvim"에서 "오류 처리 기능"을 디버깅하는 방법은 무엇입니까?

"vim" 및 "nvim"에서 "오류 처리 기능"을 디버깅하는 방법은 무엇입니까?

긴 이야기 짧게

단순히 잘못된 플러그인을 제거하는 것이 아니라 실제 문제를 해결하는 데 관심이 있는 경우 오류가 시작되는 정확한 위치 vim(어떤 파일?)를 어떻게 찾을 수 있습니까? 추측하는 것보다 오류의 근원을 찾는 더 좋은 방법이 있을까요 nvim?strace

질문

vim나는 종종 내 또는 구성에 플러그인을 추가 nvim하고 후크(버퍼 열기, 닫기, 쓰기)에서 오류가 발생하는 경우가 많습니다.

"test.py" [New] 0L, 0C written
Error detected while processing function 343[12]..272:
line    8:
E716: Key not present in Dictionary: _exec
E116: Invalid arguments for function get(a:args, 'exec', a:1['_exec'])
E15: Invalid expression: get(a:args, 'exec', a:1['_exec'])

문제는 그것이 어디서 왔는지 모른다는 것입니다. 단지 알 수 없는 파일의 줄 번호를 얻었을 뿐이고 그것은 내 vim/ nvim구성 파일이 아닙니다.

답변1

이 특정 플러그인은 객체 지향 스타일로 작성되었습니다. 343[12]..272의 익명(번호가 매겨진) 함수를 나타냅니다 .사전 객체.

(최근에 설치된) 플러그인을 알고 있는 경우 :breakadd file */pluginname.vim파일의 파일을 사용하여 ~/.vimrc중지한 다음 :next한 줄씩 단계별로 실행할 수 있습니다.

또는 Vim 세션의 전체 로그 캡처를 사용할 수 있습니다 vim -V20vimlog. Vim을 종료한 후 vimlog로그 파일에서 오류 메시지와 이전 의심스러운 명령을 확인하세요.

관련 정보