vim에서 빌드 명령을 실행하고 출력을 다른 tmux 창으로 보내시겠습니까?

vim에서 빌드 명령을 실행하고 출력을 다른 tmux 창으로 보내시겠습니까?

나는 그것을 사용하고 있다멀티플렉서그리고내 개발 IDE로. tmux에는 3개의 창이 열려 있습니다. 하나는 소스 코드 편집용, 하나는 디버깅용, 다른 하나는 디스플레이 콘솔용입니다.

makeVim에서 이 명령을 실행 하고 Vim이 내보낸 모든 빌드 정보를 디스플레이 콘솔 창에 보내고 싶습니다 . 어떻게 해야 하나요?

답변1

한 창에서 모든 셸 명령을 실행하고 해당 run-shell명령을 사용하여 다른 창에 해당 출력을 표시할 수 있습니다. 예를 들어:

tmux run-shell -t 2 "echo hello"

...그리고 "hello"는 창 번호 2에 인쇄됩니다. 를 사용하여 창 번호를 볼 수 있습니다 prefix + q.

거기에서 vim당신은 할 수 있어야합니다 :

:!tmux run-shell -t 2 "make ..."

-b백그라운드에서 실행하는 명령을 추가했습니다 .

고쳐 쓰다:@SLN에서 제기된 일부 문제 해결이 댓글...

  • tmux출력 창을 다음 위치에 배치합니다.복사 모드, 스크롤할 때와 동일한 패턴이므로 일반적인 방식으로 중단합니다( Ctrl+ C는 단방향입니다). 참고: [12/34]창의 오른쪽 상단에 다음과 같은 항목(예: 페이지/총 페이지)이 표시되면 이 모드에 있는 것입니다.
  • 다른 명령이 완료된 후 Enter( 또는 Ctrl+ L)를 클릭해야 하는 Vim의 경우 makeVim이 외부 명령( )을 처리하는 방식입니다 :!cmd. 이 문제를 피할 수 있는 방법은 없지만 Enter명령이 완료되기 전에 클릭하고 완료되면 반환되도록 할 수 있다고 생각합니다. (시스템에 따라 다를 수 있습니다.)

업데이트 2:나는 두 번째 항목에 대한 해결책을 알고 있습니다. 매핑을 사용하여 외부 명령을 실행하는 경우 Esc 키를 포함할 수 있습니다. 다음은 ls쉘 명령을 따르는 예입니다.

nnoremap <leader>ls :!ls<CR><C-L>

일반 모드에서 ls 명령을 누르면 콘솔 출력이 닫히고 \ls즉시 반환됩니다. vim어쩌면 당신의 명령이 무엇이든 그에 적응할 수 있을 것입니다.

답변2

미리 파일을 터치할 수 있습니다 & tail -f file: 창에 있습니다... vim에서 make를 시작하고 출력을 해당 파일로 리디렉션하면 make 세션이 표시됩니다...

관련 정보