'2010/05'에 해당되는 글 1건

  1. vim quickfix 새 탭에서 열기 2010/05/13

오늘의 야크 털 깎기는 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