tmux와 vim-rspec과 vim-dispatch로 편안한 RSpec 생활

tmux와
  • vim-rspec
  • vim-dispatch

  • 이 두 가지를 함께 사용하면 vim에서 RSpec으로 작성한 example을 실행하는 것이 매우 쉽습니다.

    우선 새로운 플러그인을 발견했을 때 제일 먼저 신경이 쓰이는 「NANI가 할 수 없어!??!?!?!」

    라는 말이 아니라 실제로 보지 않으면 모르기 때문에 gif를 붙입니다.



    같은 상황에서
  • RSpec을 vim에서 실행할 수 있습니다
  • 실행 처리는 ™ux의 다른 pane이 자동으로 열려 거기서
  • 실행 후 vim의 quickfix로 결과 표시

  • 해줍니다. 개인적으로는 가려운 곳에 손이 닿는 느낌이 들고 굉장합니다.

    물론 커서에서 가장 가까운 example 1개만 실행도 가능합니다



    무슨 일이 있었는지 흐름



    vim-rspec을 넣어 실행할 수 있습니다.
    :call RunCurrentSpecFile()
    :call RunNearestSpec()
    :call RunLastSpec()
    :call RunAllSpecs()
    

    명령 중 하나를 실행



    vim-rspec 측의 설정으로 vim-dispatch를 넣는 것으로 들어간다 Dispatch 명령에 rspec


    vim-dispatch는 tmux가 시작되면 자동으로 다른 패널을 열어 실행합니다.



    vim-dispatch가 실행 결과를 quickfix에 표시합니다.

    같은 느낌이 듭니다.

    설정 방법



    설치


    NeoBundle 'tpope/vim-dispatch'
    NeoBundle 'thoughtbot/vim-rspec'
    

    나처럼 지연로드하고 조금이라도 vim 기동을 빨리하고 싶은 사람은
    NeoBundleLazy 'thoughtbot/vim-rspec', {
                    \ 'depends'  : 'tpope/vim-dispatch',
                    \ 'autoload' : { 'filetypes' : ['ruby'] }
                  \ }
    

    설정


    let g:rspec_command = "Dispatch rspec {spec}"
    그리고 vim-rspec이 입력하는 명령을 두드리면 rspec 명령을 Dispatch 명령에 전달하여 실행할 수 있습니다.
    NeoBundleLazy
    let s:bundle = neobundle#get('vim-rspec')
    function! s:bundle.hooks.on_source(bundle)
       let g:rspec_command = 'Dispatch rspec {spec}'
    endfunction
    

    됩니다.

    그건 그렇고, 나는 RSpec 1.X를 사용하는 프로젝트도 있기 때문에
    let s:bundle = neobundle#get('vim-rspec')
    function! s:bundle.hooks.on_source(bundle)
      if executable('rspec')
        let g:rspec_command = 'Dispatch rspec {spec}'
      elseif executable('spec')
        let g:rspec_command = 'Dispatch spec {spec}'
      endif
    endfunction
    

    합니다.



    zeus도 사용하는 사람은
    let g:rspec_command = "Dispatch zeus rspec {spec}"
    그렇다면 zeus의 혜택도 물론받을 수 있습니다, 편리!

    키 바인딩



    나는 다음과 같이 설정한다.
    nmap <silent><leader>c :call RunCurrentSpecFile()<CR>
    nmap <silent><leader>n :call RunNearestSpec()<CR>
    nmap <silent><leader>l :call RunLastSpec()<CR>
    nmap <silent><leader>a :call RunAllSpecs()<CR>
    

    요약



    guard도 사용하고 있습니다만, guard에서는 개별의 example을 실행하는 좋은 방법을 찾을 수 없어, 이 방법에 도착했습니다.

    vim-dispatch는 vim-rspec과 조합하여 사용하는 것 외에도 여러가지 편리한 사용법이 있으므로 한 번 README을 보면 좋을지도 모릅니다

    좋은 웹페이지 즐겨찾기