vim에 컴파일러/인터프리터의 에러메시지 연동시키기

대부분의 IDE에서는, 컴파일 에러나 런타임 에러가 발생했을 때, 소스코드에서 해당 에러의 원인이 된 라인으로 바로 이동하는 기능이 있다.

물론 vim에서도 약간의 설정으로 가능한 기능이다. 설정 및 사용법을 알아보자.

makeprg 설정

우선 현재의 소스코드를 해석하거나 컴파일할 때 사용할 프로그램을 설정한다. 여기서는 python으로 해 보겠다.

:set makeprg=python

이렇게 하고 나면, :make %로 현재 편집중인 파일을 파이썬으로 실행해 볼 수 있다.

errorformat 설정

다음은 vim이 파이썬의 에러메시지를 해석할 수 있도록 에러포맷을 정의해야 한다.

:set errorformat=%C %.%#,%A  File "%f"\, line %l%.%#,%Z%[%^ ]%\@=%m

이제 :make %로 편집중인 소스코드를 파이썬으로 실행했을 때 에러가 발생한다면, 자동으로 커서가 에러가 발생한 위치로 옮겨진다.

파이썬이 출력한 에러메시지에서 어떤 줄이 위의 식에 매칭된다면, vim은 그 줄이 소스코드에서 에러의 원인이 되는 위치를 알려주는 것으로 생각하고 해석하여 파일명, 라인번호 등의 정보를 얻어낸다. 위의 식이라면 %f에 대응하는 것이 파일명, %l에 대응하는 것이 라인번호다.

예를 들어 파이썬이 아래와 같은 메시지를 출력한다면,

Traceback (most recent call last):
File "test.py", line 13, in <module>
    x = MyClass()
TypeError: __init__() takes exactly 2 arguments (1 given)

vim은 두번째 줄을 인식해서 test.py와 줄번호 13을 얻어낼 것이다.

자세한 문법은 :help errorformat으로 확인해보자.

만약 errorformat과 대응하는 에러메시지가 1개 이상이라면, cncp로 각 에러를 오갈 수 있으며, clist로 에러메시지의 목록을 확인할 수 있다.

단축키 한번에 실행하기

매번 :make %을 입력하는 것이 번거롭다면, 다음과 같이 단축키 한번에 실행되도록 할 수도 있다. 다음은 f5 키로 실행하도록 하는 설정이다.

:map<f5> :make %<cr>

설정파일에 설정하기

물론 위에서 언급한 errorformat이나 makeprg의 설정 등은 모두 언어별로 다를 수 밖에 없다. 따라서 vim의 syntax 설정 디렉토리에 넣어두는 것이 좋을 것이다. 파이썬이라면 ~/.vim/syntax/python.vim 파일에 다음의 설정을 추가하면 된다.

set errorformat=%C %.%#,%A  File "%f"\, line %l%.%#,%Z%[%^ ]%\@=%m
set makeprg=python
map<f5> :make %<cr>

vim에 컴파일러/인터프리터의 에러메시지 연동시키기”에 대한 1개의 생각

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중