대부분의 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개 이상이라면, cn
과 cp
로 각 에러를 오갈 수 있으며, 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>
:make %가 처음에 잘되다가 갑자기 에러가 뜹니다..
좋아요좋아요