Skip to content

Instantly share code, notes, and snippets.

@pn11
Last active October 18, 2021 11:05
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save pn11/c973af16d91f92f9874f to your computer and use it in GitHub Desktop.
Save pn11/c973af16d91f92f9874f to your computer and use it in GitHub Desktop.
リモートのtmuxのコピーモードとクリップボードを共有する

リモートのtmuxのコピーモードとクリップボードを共有する

  • ローカルマシン: Mac (iTerm2)
  • リモートマシン: Linux (ROOT権限なし)

という状況でtmuxのコピーモードでコピーしてきたものをMacで扱いたい。

C-b zでズームしてからoptionキー押しながらマウスでコピーでもいいんだけど(iTerm2のみ?、ズームしないと複数行コピーするときに隣のペインも選択してしまう)、キーボードだけでやりたい。そこでxselを使う。

xselのインストール

ROOT権限ないので

sudo apt-get install xsel

とかできない。

取って来て解凍

cd ~/software
wget http://www.vergenet.net/~conrad/software/xsel/download/xsel-1.2.0.tar.gz
tar zxvf xsel-1.2.0.tar.gz

ビルド、インストール

インストール先を$HOME/localに指定してビルド、インストール。

./configure --prefix=$HOME/local
make
make isntall

で完了。

which xsel

すると

~/local/bin/xsel

と表示される。

動作確認

Local Mac -> Remote Linux

Macで何かコピーしてからLinuxで

xsel

とするとコピーした文字列が表示された。まあこれはもともとターミナル上でcmd+vすればよいので困ってないんだけど。

Remote Linux -> Local Mac

Linuxで

echo $HOME | xsel -bi

として、Macでcmd+vするとホームディレクトリのパスが表示された。というわけでクリップボードの共有ができた。

tmuxコピーモードの設定

を参考にさせていただいた。

~/.tmux.confに以下を記述すると、remoteのtmuxのコピーモードでコピーした文字列がlocalのMacのクリップボードにも入った。

unbind -t emacs-copy M-w
unbind -t emacs-copy C-w
bind-key -t emacs-copy M-w copy-pipe "xsel -bi"
bind-key -t emacs-copy C-w copy-pipe "xsel -bi"

さらにC-kもパイプする方法をググったけど見つからなかった。ちなみに

tmux list-keys -t emacs-copy

するとキーバインディング一覧が出る。

.tmux.confをMacにも対応

ここを参考にすれば、簡単にMacとLinuxで設定を分けられそう。.tmux.confのif文てこんな簡単に書けるのか。分かりやすくて良い。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment