중첩된 tmux 세션에서 iTerm2로 이스케이프 시퀀스를 보내는 방법은 무엇입니까?

중첩된 tmux 세션에서 iTerm2로 이스케이프 시퀀스를 보내는 방법은 무엇입니까?

これはiTermでのみ機能します(日付と時刻をクリップボードに入れます)。

printf "\e]1337;Copy=:$(date | base64)\a"; echo $(pbpaste)

これはローカルで実行されるtmuxで動作します(DCSパススルーを使用)。

printf "\ePtmux;\e\e]1337;Copy=:$(date | base64)\a\e\\"; echo $(pbpaste)

これはリモートで実行されるtmuxで動作します。

printf "\ePtmux;\e\e]1337;Copy=:$(date | base64)\a\e\\"; echo $(ssh -p 2222 -qt localhost pbpaste)

私の唯一の問題は、ローカルtmuxからリモートでtmuxを実行することです。

printf "\ePtmux;\e\ePtmux;\e\e]1337;Copy=:$(date | base64)\a\e\\\e\\"; echo $(ssh -p 2222 -qt localhost pbpaste)

問題は、内部が\e\\外部に解釈されるということだと思います\e\\

\e\\外部tmuxが正しくなるように内部を脱出する方法はありますか?

ベストアンサー1

終了 \e\\ の \e を含むすべての tmux のすべての \e を 2 倍にする必要があります。

printf "\ePtmux;\e\ePtmux;\e\e]1337;Copy=:$(date | base64)\a\e\e\\\e\\"

또는 OSC 52를 사용하도록 tmux를 구성한 다음 iTerm2에서 열면("터미널의 응용 프로그램이 클립보드에 액세스할 수 있습니다"를 빠르게 검색하여) 호스트 클립보드에 전달되는 모든 tmux(버퍼)에 붙여넣기를 생성합니다. . tmux의 경우 다음과 같은 것이 필요합니다.

set -as terminal-overrides ',tmux*:Ms=\\E]52;%p1%s;%p2%s\\007'
set -as terminal-overrides ',screen*:Ms=\\E]52;%p1%s;%p2%s\\007'
set -s set-clipboard on

그런 다음 가장 안쪽의 tmux에서 이 작업을 수행할 수 있습니다.

printf "\033]52;$(date)\007"

물론 이는 tmux에서 복사한 모든 내용이 아마도 원하지 않는 호스트 클립보드로 이동한다는 의미입니다.

おすすめ記事