이전 포스팅에서 언급했었던 내용을 GitHub repo에 커밋하게 되어서 포스팅 한다.

플러그인 형태로 깔끔하게 제공하는것 까지는 시간이 없어서 무리일것 같아 dotfiles repo의 서브디렉토리로 올려두었다.

dotfiles/rclip 링크

사용방법을 한글로 자세히 설명하자면 다음과 같다.


우선 vim에서 사용하려면 remote.vim 파일을 원격 서버에 설치해야 한다.

파일의 내용을 복붙해서 vimrc 등에 첨부해도 괜찮고, 내 dotfiles에 설정되어 있는 방법 (by @christoomey) 처럼 설정파일을 작은 단위로 쪼개서 불러오게 하여 폴더에 넣는것도 괜찮은 방법이다.

christoomey/dotfiles Link


Tmux에서 사용하려면 위의 코드를 ~/.tmux.conf 등에 붙여 넣으면 된다.

혹시 버전 호환 때문에 설정코드에서 에러가 발생하면 위의 코드 대신 아래의 코드를 대신 붙여 넣으면 된다.

bind-key -T copy-mode-vi y \
send-keys -X copy-pipe-and-cancel \
'tmux save-buffer - | base64 | nc localhost 1337'

앞의 설정이 다 끝났다면, 위의 코드를 원격 서버가 아닌 접속할 클라이언트 쪽 컴퓨터의 $HOME/.ssh/remote.sh 경로에 복사해두면 된다.

혹시 실행이 되지 않을 수 있으니 chmod 명령어로 확실히 해두는것이 좋다.

chmod +x remote.sh


마지막으로 귀찮게 따로 수신 서비스를 끄고 켜는 일이 없도록 .zprofile 파일에서 자신이 사용중인 쉘의 설정파일에 내용을 붙여넣어 ssh 명령어 대신 ssh-clip 명령어로 접속하게 하면 끝이다.

기본 bash 쉘을 사용하고 있다면 .bashrc 혹은 .bash_profile에, zsh등을 사용하고 있다면 .zshrc혹은 .zprofile 파일에 붙여넣은뒤 source ~/.file 명령어로 설정이 적용되도록 하면 된다.

이제 SSH를 통해 원격 클립보드를 사용하고 싶을때 에는 ssh-clip 명령어를 대신 사용하여 접속하면, 해당 명령어를 통해서 로컬호스트로 리다이렉트 되는 값을 받는 스크립트가 실행이 되어 VIM에서는 <Leader>y 키로, TMUX에서는 Copy-mode 에서 글자를 선택한 뒤 y키를 눌러서 원격으로 복사하는 것이 가능하다.


첨언으로 나는 로컬 환경에서는 같은 <Leader>y키를 눌러도 시스템 클립보드로 복사가 될 수 있도록 설정했기 때문에, SSH나 원격에서나 편리하게 같은 단축키로 시스템 클립보드로 복사가 가능하도록 하였다 ( 원격에서는 설정값이 덮어씌워 지도록 설정 ).

이밖에도 전체적인 설정파일에 관련해서는 내 dotfiles repo에 공개해두어서 확인이 가능하다.

또한 위의 코드에서 사용된 pbcopy, pbpaste 등은 MacOS 환경에서 기본으로 사용되는 터미널 클립보드 명령어 이므로, 다른 환경에서 제공하는 클립보드 명령어로 대체하여 사용이 가능하다. (e.g. xclip)

참고자료