Vim은 SSH를 통해 클라이언트 클립보드에 복사하는 기능을 상실했습니다.

Vim은 SSH를 통해 클라이언트 클립보드에 복사하는 기능을 상실했습니다.

vim 서버 인스턴스에서 내 클라이언트 운영 체제(SSH를 통해 연결됨)의 클립보드로 텍스트를 가져올 수 있도록 vim을 설정했습니다.
기본 설정은

  • 고객
    • 그놈 터미널
  • 서비스 터미널
    • X11 세션 전달을 사용하는 SSH 예시ssh -Y <user>@<server>
      • 멀티플렉서
        • vim gtk

서버에서 실행 중인 vim 버전 - vim-gtk시스템 클립보드에 복사해야 하는 추가 항목

$ vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan  2 2014 19:40:46)
Included patches: 1-52
Modified by [email protected]
Compiled by buildd@
Huge version with GTK2 GUI.  Features included (+) or not (-):
  • 운영 체제 우분투 14.04

vim(서버에서 실행) 내에서 텍스트를 시각적으로 선택할 수 있습니다. 그런 다음 을 클릭하면 "클라이언트 +OS y클립보드에서 해당 시각적 선택 항목을 사용할 수 있습니다.
이는 서버에 연결하고 새 tmux 세션을 시작할 때 작동하지만 SSH 중단 후 서버에 다시 연결하고 tmux 세션에 다시 연결하면 작동이 중지됩니다. 왜 이런 일이 발생하는지 아시나요?

답변1

내 해결책은 다음과 같습니다(포인터에 대한 xpra 덕분에). 문제는 다음과 같습니다.

  1. 로컬 및 원격 bashrc가 동일하다고 가정합니다.
  2. tmux-ssh를 사용하여 원격 사이트에 연결합니다. -p 및 -u와 같은 일반 ssh(1) 매개변수가 필요합니다. 기본적으로 원격 사이트에서 tmux-x-attach()를 호출합니다.
  3. tmux-x-attach()는 실행 중이 아닌 경우 xpra 서버를 시작한 다음 실행 중인 xpra 서버에 연결하고 tmux-attach()에 제출합니다.
  4. tmux-attach()는 다음 중 하나를 수행합니다.
    1. 존재하지 않는 경우 새 tmux 세션을 시작하십시오.
    2. 실행 중인 (단일) tmux 인스턴스에 연결
    3. 여러 tmux 세션 중 어느 세션에 연결할 것인지 묻는 메시지 표시
  5. 분리할 때 SSH 세션이 종료되기 전에 xpra에서 분리되는 tmux-x-attach로 돌아갑니다.
  6. tmux가 내부적으로 분리된 경우 터미널을 정리하기 위해 (tput init) 시도합니다. 윔

.bashrc에서

  tmux-x-attach() {
     ps -f -u $USER | grep -v grep | grep -q 'xpra start' || xpra start :9
     xpra attach :9 --opengl=no > /tmp/xpra-attach.log 2>&1 &
     DISPLAY=:9 tmux-attach "$@"
     xpra detach :9
  }

  tmux-attach() {
     case $(tmux list-sessions 2>/dev/null | wc -l) in
        0) tmux ;;
        1) tmux attach ;;
        *)
           tmux list-sessions 
           read -n 1 -p "Select command: " N < /dev/tty > /dev/tty;
           tmux attach -t $N
           ;;
     esac
  }
  tmux-ssh() { ssh "$@" -A -X -t 'PS1=tmux-ssh- ; . ~/.bashrc ; tmux-x-attach'; tput init; }

관련 정보