
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 の終了を待たなくなります。