vim에서 make시에 에러가 나는 sub directory로 자동으로 이동하
얼마전에 kldp에 질문을 올렸다가 겨우 어떻게 알아내서 이렇게 내용을 올립니다.
기존에 vim에는 clist, cn, cp, cw,... 등의 명령이 있습니다.
vim의 command-line모드에서 컴파일을 수행한후 경고나 에러가 발생한 문서로 자동으로 이동하는 기능과 관련된 명령들입니다.
그런데 "make -C"를 사용하는 경우에 sub directory내의 파일로는 이동을 하지 않더군요. 그래서 errorformat 변수를 다음과 같이 설정해서 해결했습니다.
.vimrc파일에 다음의 내용을 추가합니다.
set errorformat+=%Dmake[%*\\d]:\ 들어감\ `%f'\ 디렉토리,%Xmake[%*\\d]:\ 나감\ `%f'\ 디렉토리
사용환경은 RedHat9, vim6.2.21, gcc3.2.1, make 3.79.1등입니다.
간단하게 설명드리면
errorformat은 errorformat에서 지정한 형태의 pattern이 나오면 지정한 값들에 들어온 pattern을 적당히 맵핑시켜서 error에 대한 정보를 저장할 수 있게 한 것입니다.(scanf처럼)
간단한 예를 들면
set errorformat=%f:%l:%m
이라고 지정해놓으면
a.c:3:unused variable.
와 같이 에러가 출력되면
에러가 발생한 파일(%f)은 a.c
에러가 발생한 라인(%l)은 3
에러의 내용(%m)은 unused variable
와 같이 parsing됩니다.
하지만 sub directory의 이동인 경우에 이 포맷에 해당 정보가 출력되지 않습니다.
따라서 directory stack을 사용해야 합니다.
제가 사용하는 make프로그램에서의 디렉토리 이동시의 출력은 다음과 같습니다.
make[1]: 들어감 `/usr/src/linux/driver/net' 디렉토리
make[2]: 나감 `/usr/src/linux/driver/net' 디렉토리
따라서 위에서 설정한 errorformat은 디렉토리의 이동을 vim에게 알려주는 역활을 합니다.
참고 :
help errorformat
help quickfix-directory-stack
댓글 달기