여러 tmux 명령을 단일 키 입력에 바인딩하는 방법은 무엇입니까?

여러 tmux 명령을 단일 키 입력에 바인딩하는 방법은 무엇입니까?

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

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

저것그러나 작동하지 않습니다. 나는 또한 명령을 함께 묶는 다른 방법을 시도하지 않았습니다.

답변1

당신이 사용할 수있는run-shell옵션하지만 핵심은 명령을 다음과 결합하는 것입니다.\;

이 경우 다음과 같습니다.

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

쉘 실행 쉘 명령
(별명: 실행)
창을 만들지 않고 백그라운드에서 쉘 명령을 실행합니다. 완료되면 stdout에 대한 모든 출력이 복사 모드로 나타납니다. 명령이 성공을 반환하지 않으면 종료 상태도 표시됩니다.

답변2

내 질문을 한 후 나는 유용할 수 있는 것을 생각했습니다. 시도해 보았는데 작동합니다. tmux 구성에 여러 파일을 제공하기만 하면 됩니다.

특히 구성 다시 로드와 관련된 솔루션은 다음과 같습니다. .tmux.conf 파일에 다음을 입력합니다.

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

~/.tmux/reload.tmux 파일에 다음 내용을 추가합니다.

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

완벽하게 작동합니다.

답변3

수동으로 지워야 하는 복사 버퍼에 출력을 넣으려면 run-shell 방법을 사용하십시오. 중간 구성 파일을 사용하면 두 번째 구성 파일을 유지 관리하는 오버헤드가 추가됩니다. 내 경우에는 GUI의 팝업 대화 상자와 유사하게 메시지가 짧은 시간 내에 사라지기를 원했지만 모든 것을 단일 파일에 보관하기를 원했기 때문에 이 두 가지 답변을 결합하는 것이 더 효과적이었습니다.

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

답변4

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."
}

관련 정보