Vim에서 테스트 코드를 작성하면서 현장에서 테스트 할 수있는 tmux send-keys로 매우 편안합니다.
그런 때 Emacs 라든지 Atom이라고 플러그인으로 했지만, 이젠 Vim이라고 그런 방식이 제대로 안 된다고 생각했던 곳에서 "이제 tmux 로 다른 페인트 열어서 send-keys 하는 것이 좋다"는 결론 되었다.
이 방법이라면 테스트의 종류에 따라 바꾸는 것도 실행 커멘드를 바꾸는 것만으로 간단하게 할 수 있고, 실제로 테스트를 흘리는 것이 Docker 컨테이너 안,라든가 말할 때에도 그대로 응용할 수 있으므로 꽤 좋다.
구체적으로 어떻게 할 수 있을까 하면, 앞으로 쓰는 예에서는, tmux 를 좌우의 2 페인으로 분할해 두고,
가 설정된 상태에서 Vim에서 테스트 코드를 쓰면서 오른쪽 창에서 테스트를 실행한다는 것.
send-keys를 실행하는 스크립트
우선 send-keys 를 실행하는 스크립트를 준비한다.
tmux-send-keys-to-right-pane
#!/usr/bin/env sh
session=$(tmux display-message -p '#S')
window=${session}:$(tmux display-message -p '#I')
args=""
for arg in $@; do
args="${args}""${arg} "
done
tmux send-keys -t right C-z "${args}" C-m
꽤 잡잡한 만큼 어떤 느낌이라든가.
이것에 실행 권한을 붙여 패스가 통과하는 곳에 두게 되었고, tmux 창에서 오른쪽 창을 시작하고, 예를 들어 왼쪽 창에서
$ tmux-send-keys-to-right-pane ls -la
그렇다면 오른쪽 창에서
ls -la
가 실행된다고 생각합니다.이것으로 실행하는 대상을 테스트 명령으로 하면, 당연히 오른쪽 창에서는 테스트가 실행된다.
Vim에서 ↑ 스크립트 실행
여기에서 Vim 설정이됩니다!
우선
.vimrc
에 직접 설정을 써 갑니다! 또, 사사로 대단히 죄송합니다만, 지금 제가 Ruby on Rails 로 Minitest 를 쓰고 있어 그것을 실행하고 싶다고 하는 마음이 있기 때문에, Ruby on Rails 로 Minitest 를 실행하는 것을 예로서 설명하고 싶습니다 ! 죄송합니다.괜찮을까요? 그럼
.vimrc
에 다음을 기재해 주세요!.vimrc
command! RailsTest echo s:rails_test(expand('%'), getpos('.'))
function! s:rails_test(file, pos)
let l:cmd = printf('tmux-send-keys bin/rails test %s:%d', a:file, a:pos[1])
return system(l:cmd)
endfunction
nnoremap <Leader>rt :<C-u>RailsTest<Return>
간단히 설명하면, 이것으로 하고 싶은 것을 할 수 있는 녀석입니다! 너무 쉬웠습니까? 좀 더 설명하면, 이것은 Vim 의 버퍼상에서 실행하는 것으로, 버퍼의 파일과 커서 위치를 Rails(5) 의 테스트 커멘드에 건네주고, 테스트를 실행하는, 그러한 것입니다.
여기에서는
RailsTest
라는 명령이 정의되어 있고 <Leader>rt
가 바인드되어 있으므로, 이것을 읽은 후 왼쪽 창의 Vim에서 Minitest 파일을 열고 오른쪽 창에서는 Rails의 루트 디렉터리를 현재 디렉터리로 한 상태에서 <Leader>rt
키를 스트로킹하면 오른쪽 창에서 bin/rails test <バッファのファイル名>:<行番号>
가 실행되고 예, 실행됩니다. 물론 Vim 내부에서 동기적으로 실행하는 것은 아니므로 테스트 실행 중에 Vim의 동작이 차단되는 것은 없으므로 안심하십시오. 앞서 말씀드렸듯이 오른쪽 창에서 Docker 컨테이너 bash
를 실행하면 그대로 명령을 다시 작성하지 않고도 Docker 컨테이너에서 테스트를 실행할 수 있으며 위를 복사하여 명령 이름과 함수 이름, let l:cmd = printf('tmux-send-keys bin/rails test %s:%d', a:file, a:pos[1])
여기의 행을 다시 쓰면 임의의 명령을 실행할 수 있으므로 편리하게 사용할 수 있다고 생각합니다. 덧붙여서 tmuxinator 라든가 그런 녀석은 한 번도 사용한 적이 없습니다. 나중에 참고로 했습니다 thanks to htp://스페루세 r. 코 m / 쿠에 s 치온 s / 492266 / 룬 - r - 센 d - 아 - 맘 드 - 아 - t-mu x - 파네 - 아 - 룬 - got - x - 대단한 친구
Reference
이 문제에 관하여(Vim에서 테스트 코드를 작성하면서 현장에서 테스트 할 수있는 tmux send-keys로 매우 편안합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/5t111111/items/969783048467b733b62b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)