vim이 다른 터미널 창에서 "make" 명령을 실행하도록 하는 방법이 있나요?

vim이 다른 터미널 창에서 "make" 명령을 실행하도록 하는 방법이 있나요?

나는 주로 C/C++ 프로그래밍을 위한 편집기로 vim을 사용합니다. 불행하게도 저는 빌드 프로세스가 작동하는 방식이 별로 만족스럽지 않습니다. :makemake 프로세스를 실행하기 위해 입력(또는 키에 매핑)할 수 있다는 것을 알고 있습니다 . 그러나 이 명령은 적절한 강조 표시 없이 동일한 터미널 창에서 빌드 프로세스를 실행하기 때문에 작동 방식이 마음에 들지 않습니다. 따라서 저는 일반적으로 두 번째 모니터의 다른 창에서 make 명령을 실행하여 기본 Vim 창에서 소스 코드를 스크롤하는 동안 한 창에서 컴파일러가 표시하는 빌드 오류를 올바르게 강조 표시하고 볼 수 있습니다. 포커스를 다른 창으로 변경한 다음 make 명령을 입력해야 하므로 이는 매우 지루한 작업이기도 합니다.

이제 내 질문은 다음과 같습니다. 포커스를 변경하지 않고 vim이 다른 창에서 make 명령을 실행하도록 할 수 있습니까? 이렇게 하면 "다른 창에서 빌드" 명령을 vim의 키에 매핑하고 단 한 번의 키 누르기로 모든 작업이 수행되도록 할 수 있습니다.

내 시스템은 i3를 DWM으로 사용하는 Manjaro Linux입니다.

(이 글을 stackoverflow에 게시해야 할지 여기에 게시해야 할지 잘 모르겠습니다. 잘못된 포럼이라면 용서해 주세요.)

답변1

명명된 파이프를 사용합니다.

  1. 터미널에서 Vim을 사용하여 소스 코드를 엽니다.
  2. 출력하려는 ​​두 번째 터미널을 열고 를 make사용하여 새 파이프를 만듭니다 mkfifo mypipe.
  3. 두 번째 터미널에서는 watch --color -n 0.3 'cat mypipe'항상 Named Pipe를 읽으려면 실행하세요.
  4. 첫 번째 터미널에서 :!script -q -c "make" mypipe > /dev/null소스 코드에 대한 변경 사항을 저장하고 Vim에서 실행하세요.

script우리는 사용해야 한다컬러 출력을 유지하도록 프로그램을 속입니다.. 버전을 확인하세요watch 지원 색상.

답변2

다음 항목에 추가할 수 있습니다 ~/.vimrc.

nnoremap <Space> :vert :term make<CR><C-W><C-w>

여기서는 Space주요 :vert :term make<CR><C-W><C-w>명령을 다시 매핑합니다. 이는 다음을 의미합니다.

  • :vert수직 분할을 수행합니다.
  • :term새 창에서 터미널을 실행하십시오.
  • make<CR>make이 터미널에서 실행하세요.
  • <C-W><C-w>포커스를 원래 창으로 되돌립니다.

이것이 당신이 원하는 것이기를 바랍니다. 물론 원하는 키/조합을 선택하고(필수 아님 Space) 수평 분할을 선호하는 경우 :vert비트를 제거하면 됩니다.

관련 정보