これは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에서 복사한 모든 내용이 아마도 원하지 않는 호스트 클립보드로 이동한다는 의미입니다.