tmux クリップボードから Linux クリップボードにコピーするための別のコマンドを作成するにはどうすればよいですか?

tmux クリップボードから Linux クリップボードにコピーするための別のコマンドを作成するにはどうすればよいですか?

OSX で動作する次のバインディングを Linux でエミュレートしようとしています。

# Copy and paste from system clipboard
bind C-c run "tmux save-buffer - | reattach-to-user-namespace pbcopy"
bind C-v run "reattach-to-user-namespace pbpaste | tmux load-buffer - && tmux paste-buffer"

つまり、tmuxバッファをシステムクリップボードに明示的にコピーするコマンドと、コピーして戻す別のコマンドをバインドしたいのです。しないでくださいvi-selectを使用してtmuxからシス​​テムクリップボードにコピーしたいのですが、既存の回答住所。

私は以下のバインディングを(一度に 1 つずつ)試しました。

bind C-c run "tmux save-buffer - | xclip -in -selection clipboard"
bind C-c run "tmux show-buffer | xclip -sel clip -i"

どちらも最初の使用時には正しく動作するように見えますが、使用後にすべての tmux キーバインディングが無効になるという重大な副作用があります。

つまり、最初のコピーの後は、tmux キーバインディングがどれも機能しなくなります。

tmux コマンドをさらに実行する機能を無効にせずに、tmux クリップボードからシステム クリップボードに何かをコピーしたり、その逆を行ったりするにはどうすればよいでしょうか?

答え1

xclip には stdout を閉じないバグがあり、tmux は終了したことを認識しません。これが、最初のコピー後にそれ以上の tmux コマンドを実行できない理由です。そのため、次のいずれかを実行できます。

1) 同じ問題が発生しない xclip の代わりに xsel を使用します。

2) stdout を/dev/null次のようにリダイレクトします。xclip ... >/dev/null

3)run -bの代わりにを使用するとrun、tmux は xclip の終了を待たなくなります。

関連情報