여러 tmux 명령을 하나의 키 입력에 어떻게 바인딩 할 수 있습니까?


13

특히 명령이 완료된 후 알림을 보내려고합니다. 예를 들어 구성 파일을 다시로드하면 다음과 같이 수행 될 수 있는지 확인하고 싶습니다.

bind R source-file "$HOME/.tmux.conf" && display-message "Configuration reloaded."

그러나 그것은 작동하지 않습니다. 명령을 함께 묶는 방법으로 시도한 다른 것도 없습니다.


1
\;구분 기호로 나를 위해 (Debian squeeze의 TMUX 1.3) 작동합니다 .
Gilles 'SO- 악마 그만'

1
알았어요. \; 않는 일을, 그리고 내가 아래에 선택한 대답의 본질이다. 어떻게 든 테스트했다; 너무 빨리 작동하지 않았다고 판단했습니다. 그러나 나는이 질문을 여전히 여기에 남겨두고 있습니다.
iconoclast

답변:


12

run-shell옵션을 사용할 수 있지만 중요한 것은 명령을\;

이 경우 다음과 같은 것이 있습니다.

bind R source-file ~/.tmux.conf \; run-shell "echo 'Reload'"

run-shell shell-command
(별칭 : run)
창을 만들지 않고 백그라운드에서 shell-command를 실행합니다. 완료되면 stdout으로의 출력이 복사 모드로 표시됩니다. 명령이 성공하지 못하면 종료 상태도 표시됩니다.


대답 해줘서 고마워 나는 그것을 구체적으로 테스트하지는 않았지만 \로 질문에 코드를 테스트했기 때문에 그것이 효과가 있다고 생각하지 않습니다. 그리고 두 번째 명령은 실행했지만 첫 번째 명령은 실행하지 않았습니다. 그리고 왜 run-shell이 ​​작동하는지 모르겠지만 표시 메시지는 작동하지 않습니다.
iconoclast 2016 년

1
좋아, 나는 당신의 솔루션을 테스트 해 보았고 tmux는 분명히 그 명령에서 (절대적으로 확실하지는 않지만) 잠그지 않습니다. 계속 노력하지만, 작동하지 않을 것이라고 확신합니다 ...
iconoclast

tmux 1.4에서 작동합니다. 디자인입니다 ... - 평균 "복사 모드" "감금"합니까
jasonwryan

좋아, 나는 tmux를 잠그지 않고 작동하도록했다. 원래의 시도가 왜 \; 작동하지 않았다 :
iconoclast

1
대답의 핵심은 \; -run-shell에 관한 부분은 실제로 중요하지 않으며, 디스플레이 메시지를 제공 한 예가 훨씬 낫다고 생각합니다. 그래서 나는 내 대답을 선택하고 있지만 다른 사람들을 오도하거나 혼동하지 않도록 대답을 편집하고 싶습니까? 감사!
iconoclast

4

내 질문을 작성한 직후에는 효과가있을 것으로 생각했습니다. 나는 그것을 시도하고 작동하며, 당신은 당신의 tmux 구성을 위해 여러 파일을 참 아야합니다.

다음은 특히 구성 다시로드와 관련된 솔루션입니다. .tmux.conf 파일에서 다음과 같이 입력하십시오.

bind R source-file "$HOME/.tmux/reload.tmux"

~ / .tmux / reload.tmux 파일에 다음과 같은 내용을 입력하십시오.

source-file "$HOME/.tmux.conf" 
display-message "Configuration reloaded."

완벽하게 작동합니다.


1
이것은 실제로 작동하는 유일한 방법입니다. 다른 모든 것은 작동하지 않습니다.
lzap

정말? ... 다른 접근 방식을 테스트 한 지 오래되었지만, tmux가 실패한 경우 놀랐습니다. 작동하지 않는다고 확신하면 다시 테스트 하여이 답변을 수락 할 것입니다.
iconoclast

네, 사과드립니다, 위의 답변이 실제로 효과가 있습니다 :-)
lzap

1

run-shell 방법을 사용하면 출력을 수동으로 지워야하는 복사 버퍼에 넣습니다. 중간 구성 파일을 사용하면 두 번째 구성 파일을 유지 관리하는 오버 헤드가 추가됩니다. GUI의 팝업 대화 상자와 비슷하게 짧은 간격 후에 메시지가 사라지고 싶지만 단일 파일에 포함 된 모든 것을 유지하기 때문에 두 가지 대답을 결합하면 더 잘 작동합니다.

bind R source-file ~/.tmux.conf \; display-message "Configuration reloaded"

0

tmux 내부에 완전한 스크립트를 허용하고 내부에 tcl 언어를 첨부하는 패치가 있습니다.

http://ershov.github.io/tmux/

또한 '모드'키 입력에 대해 원하는만큼의 동작을 지정할 수 있습니다.

이를 사용하면 코드는 다음과 같습니다.

bind R tcl { source-file "$HOME/.tmux.conf" ; display-message "Configuration reloaded." }

또는 더 읽기 쉬운 :

bind R tcl {
  source-file "$HOME/.tmux.conf"
  display-message "Configuration reloaded."
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.