vim에서 make시에 에러가 나는 sub directory로 자동으로 이동하

ktd2004의 이미지

얼마전에 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

Forums: 

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.