Tmux의 "set-clipboard" 옵션에 대한 "off" 값과 "external" 값의 차이점은 무엇입니까?

Tmux의 "set-clipboard" 옵션에 대한 "off" 값과 "external" 값의 차이점은 무엇입니까?

에서 man tmux:

set-clipboard [on | external | off]

        Attempt to set the terminal clipboard content using the xterm(1)
        escape sequence, if there is an Ms entry in the terminfo(5)
        description (see the TERMINFO EXTENSIONS section).

        If set to on, tmux will both accept the escape sequence to create
        a buffer and attempt to set the terminal clipboard.  If set to
        external, tmux will attempt to set the terminal clipboard but
        ignore attempts by applications to set tmux buffers.  If off,
        tmux will neither accept the clipboard escape sequence nor
        attempt to set the clipboard.

        Note that this feature needs to be enabled in xterm(1) by setting
        the resource:

              disallowedWindowOps: 20,21,SetXprop

        Or changing this property from the xterm(1) interactive menu when
        required.

Ms이것이 내가 Tmux가 외부 터미널의 기능을 사용하여 인코딩된 시퀀스를 수신할 때의 문서를 이해하는 방법입니다 .

  • set-clipboard로 설정 하면 on이 시퀀스는 터미널 클립보드를 설정하는 데 사용됩니다.그리고Tmux 버퍼

  • set-clipboard로 설정 하면 off터미널 클립보드 설정에 시퀀스가 ​​사용되지 않습니다....도 아니다Tmux 버퍼

  • set-clipboard로 설정 하면 external이 시퀀스는 터미널 클립보드를 설정하는 데 사용됩니다.하지만Tmux 버퍼

저는 XTerm(패치 322)을 사용하고 $TERM있으며 로 설정되어 있습니다 xterm-256color. 그 기능은 다음과 같습니다.용어 정보 설명보고서에 따르면 $ infocmp -1x xterm-256color. 구체적으로 해당 Ms기능은 다음과 같이 설정됩니다.

Ms=\E]52;%p1%s;%p2%s\007

여기에는 다음 세 줄만 있습니다 ~/.Xresources.

XTerm*termName: xterm-256color
XTerm*disallowedWindowOps: 20,21,SetXprop
XTerm*selectToClipboard: true

구성 없이 Tmux를 시작합니다.

$ tmux -Lx -f/dev/null

나는 그것을 set-clipboard다음과 같이 설정했습니다 on:

$ tmux set -s set-clipboard on

printf텍스트를 포함하여 OSC 52 시퀀스를 Tmux로 보냅니다 test on.

$ printf '\e]52;c;%s\007' $(printf 'test on' | base64)

결과적으로 Tmux는 내부 버퍼를 생성하고 OSC 52 시퀀스를 XTerm으로 보내 클립보드를 채웁니다 test on.

$ tmux lsb
buffer0: 7 bytes: "test on"

$ xsel -b
test on

set-clipboard이제 다음으로 재설정했습니다 off.

$ tmux set -s set-clipboard off

printf텍스트를 포함하여 OSC 52 시퀀스를 Tmux로 보냅니다 test off.

$ printf '\e]52;c;%s\007' $(printf 'test off' | base64)

이번에는 Tmux가 새 내부 버퍼를 생성하지 않거나 OSC 52 시퀀스를 XTerm으로 보내지 않습니다.

$ xsel -b
test on

$ tmux lsb
buffer0: 7 bytes: "test on"

그렇지 않으면 두 셸 명령 중 하나의 출력에 test off.


마지막으로 다음 set-clipboard으로 재설정했습니다 external.

$ tmux set -s set-clipboard external

printf텍스트를 포함하여 OSC 52 시퀀스를 Tmux로 보냅니다 test external.

$ printf '\e]52;c;%s\007' $(printf 'test external' | base64)

Tmux는 새로운 내부 버퍼를 생성하지 않으며 OSC 52 시퀀스를 XTerm으로 보내지 않습니다.

$ xsel -b
test on

$ tmux lsb
buffer0: 7 bytes: "test on"

그렇지 않으면 두 셸 명령 중 하나의 출력에 test external.


set-clipboard과 로 설정하면 on결과가 이해가 되지만 off, 로 설정하면 결과가 이해가 안 됩니다 external. Tmux 매뉴얼 페이지의 다음 문장을 기반으로 합니다.

external로 설정하면 tmux는 터미널 클립보드 설정을 시도하지만 tmux 버퍼를 설정하려는 애플리케이션의 시도는 무시됩니다.

Tmux가 내부 버퍼를 생성하지 않고 OSC 52 시퀀스를 XTerm으로 보내길 원합니다. 실제로 내부 버퍼를 생성하지 않으며(예상) OSC 52 시퀀스를 XTerm으로 보내지도 않습니다(예기치 않음).

제가 이 문장을 잘못 이해한 게 틀림없어요. 값 external의 차이를 관찰하기 위해 어떤 실험을 수행할 수 있나요 off?

답변1

아니요, 당신 말이 옳지 않습니다. 이 옵션은 다음 두 가지 작업을 제어합니다.

1) tmux는 X 클립보드를 설정하기 위해 OSC 52(또는 Ms의 모든 것)를 사용합니까?

2) tmux 내의 애플리케이션이 OSC 52를 사용하여 tmux 버퍼를 생성할 수 있습니까?

따라서 세 가지 set-clipboard 옵션 값의 의미는 다음과 같습니다.

  • 꺼짐: 1과 2는 모두 아니요입니다.
  • external: 예인 경우 1, 아니요인 경우 2(기본값)
  • on: 1과 2는 모두 예입니다.

복사 모드를 사용하여 텍스트 복사언제나tmux 버퍼를 생성합니다. set-clipboard는 이에 영향을 주지 않습니다. tmux 버퍼를 생성하는 방법에는 세 가지가 있습니다.

  • 복사 모드에서 텍스트 복사(-X copy-selection/copy-pipe/etc 전송): 항상 tmux 버퍼를 생성하고 set-clipboard가 yes인 경우 X 클립보드를 설정합니다.아니요떠나다;
  • set-buffer/load-buffer: 항상 tmux 버퍼를 생성하고 X 클립보드를 설정하지 마십시오.
  • tmux 내부 애플리케이션의 OSC 52: tmux 버퍼 생성그리고X 클립보드를 설정하지만, set-clipboard가 켜져 있는 경우에만 해당됩니다.

관련 정보