오늘의 야크 털 깎기는 vim quickfix 갖고놀기였습니다.
vim quickfix는 edit-compile-edit (python/ruby의 경우 edit-autotest-edit) 의 사이클을 빠르게 할 수 있게 도와 주는 기능입니다. vim에서 :make를 쳤을 때 컴파일 에러가 뜨면 자동으로 에러가 발생한 해당 줄로 날아가고 별도의 창에 에러 메시지를 띄워서 보여주는 모듈 이름이 quickfix입니다.
이 기능은 make 말고 다른 프로그램에도 얼마든지 적용할 수 있기 때문에 ruby나 python에도 적용하고 있는데요, (물론 출력파일 형식은 C 에러 메시지 형식이어야 합니다) 결과물이 항상 현재 에디트하고 있던 코드를 덮어버리는 것이 짜증나서, 결과물을 항상 새 탭에 열도록 하는 함수를 만들어 보았습니다. 탭 기능은 vim 7.0 이후로 추가되었으므로 아래 스크립트는 vim 7.0 이상에서만 작동합니다.
~/.vimrc에 다음 코드를 추가합니다
function! QuickFixAndFindTab(command)
let curn = bufnr("%")
cexpr system(a:command)
let newn = bufnr("%")
exe "b " . curn
let tabnr = 0
if newn != curn
for i in range(tabpagenr('$'))
for bufn in tabpagebuflist(i + 1)
if bufn == newn
let tabnr = i + 1
break
endif
endfor
endfor
if tabnr == 0
tabe
exe "b " . newn
else
exe "tabn " . tabnr
endif
endif
cw
endfunction
이제 make, rake 혹은 기타 다른 test runner를 단축키에 등록하면 됩니다. 저는 ",r"과 ",m"을 사용했습니다.
noremap ,r :call QuickFixAndFindTab("rake")
noremap ,m :call QuickFixAndFindTab("make")
'자랑 > 삽질' 카테고리의 다른 글
| vim quickfix 새 탭에서 열기 (0) | 2010/05/13 |
|---|---|
| 루비에 심취해 있습니다. (4) | 2007/03/27 |
| 아이고하느님 - 데스크탑 3호기에 바치는 부고 (4) | 2004/04/18 |
