IDE와 유사하게 작동하도록 *NIX 터미널을 설정하는 방법은 무엇입니까?

IDE와 유사하게 작동하도록 *NIX 터미널을 설정하는 방법은 무엇입니까?

쉘(X 없음)만 사용하여 IDE와 유사한 경험을 제공하기 위해 쉘에 무언가를 설정하고 싶습니다. 내가 본 가장 가까운 것은 tmux를 사용하는 것인데, 한 창에는 vim이 있고 다른 창에는 명령줄이 있습니다. 그런 식으로 vim에서 .w !bash한 줄을 실행할 수 있습니다.

그러나 별도로 실행되는 명령 사이에는 환경이 유지되지 않기 때문에 이것은 나에게 만족스럽지 않습니다.

내가 실행하면 :

var1=FOO

그런 다음

echo $var1

를 사용하는 각각은 .w !bash에코 FOO되지 않습니다.

제가 정말로 원하는 것은 터미널 세션의 일부로 한 창에서 텍스트 파일을 살펴보고 바로가기를 사용하여 다른 창의 터미널에 라인을 보내는 것입니다. 이를 달성하기 위한 올바른 도구 조합은 무엇입니까? 나는 emacs가 자체 터미널 에뮬레이터를 사용하여 이와 같은 작업을 수행하도록 구성할 수 있다는 것을 알고 있지만 기본 도구(예: 설치 프로그램)와 함께 작동하는 솔루션을 원합니다.

편집: tmux select-copy-paste는 그렇게 나쁘지는 않지만 여전히 약간 어색합니다.

답변1

빠르고 더러운 개념 증명을 sh갖춘 프로토타입 솔루션입니다 vim.tmux

귀하는 현재 라인을 .w !bash실행 bash하여 stdin으로 보냅니다. bashNET의 다른 창에 표준입력의 줄을 삽입하는 스크립트로 바꿔보겠습니다 tmux.

기본 스크립트는 다음과 같습니다.

#!/bin/sh
pane="$(tmux list-panes -F '#{pane_active} #D' | awk '$1==0 {print $2;exit}')"
IFS= read -r line
tmux send-keys -l -t "$pane" "$line"
tmux send-keys -t "$pane" 'C-j'

절차, 간단한 설명:

  1. 활성화되지 않은 창을 식별합니다.
  2. stdin에서 한 줄을 읽습니다.
  3. 마치 입력한 것처럼 해당 행을 창에 보냅니다.
  4. Enter창으로 보냅니다 .

다른 이름으로 저장하고 를 trun통해 실행 가능하고 접근 가능하게 만드세요 $PATH. 이제 두 개의 창이 있고 그 중 하나에서 tmux실행하고 trun줄을 입력하고 를 누르면 Enter해당 줄이 다른 창에 삽입됩니다.

Invoke 대신 vim에 작동해야 합니다. 쉽게 접근할 수 있도록 이를 키에 바인딩하세요..w !bash.w !trun

노트:

  • 스크립트는 정확히 두 개의 창이 있는지 확인하지 않습니다.
  • 스크립트는 대상 창에서 실행되는 내용에 신경 쓰지 않습니다. 단지 키를 보낼 뿐입니다.

관련 정보