tmuxがバッファをクリップボードにコピーするようにします。

tmuxがバッファをクリップボードにコピーするようにします。

私はtmuxバッファの内容をクリップボードにコピーする良い方法を見つけようとしています。私は次のようないくつかの他のことを試しました。

bind-key p select-pane -t 2 \; split-window 'xsel -i -b' \; paste-buffer

これはかなり近づいた。私がしなければならなかったのは、prefix-pを実行した後にCtrl-dを押すだけでした。

私はこの問題を解決しようとしました。

bind-key p select-pane -t 2 \; split-window 'xsel -i -b << HERE\; tmux paste-buffer\; echo HERE'

しかし、これはうまくいきません。実際にペアリングしてみると

bind-key p select-pane -t 2 \; split-window 'xsel -i -b << HERE'

何もしないので、ペインはシェルコマンドで<<が好きではないと仮定します。

どんなアイデアがありますか?

編集:必要に応じてスキップできますが、select-pane -t 2問題ありません。私は特定のレイアウトのみを使用し、ウィンドウ2は他のタスクを実行するときに分割することを好むので、デフォルトでは分割に関連するバインディングに移動します。

答え1

これは働きます:

# move x clipboard into tmux paste buffer
bind C-p run "tmux set-buffer \"$(xclip -o)\"; tmux paste-buffer"
# move tmux copy buffer into x clipboard
bind C-y run "tmux save-buffer - | xclip -i"

答え2

このcopy-pipeコマンドはバージョン1.8から追加されました。選択をtmuxバッファにコピーし、それをコマンドにパイプします。これでプレフィックスバインディングは必要ありません。例は次のとおりです。

bind -t vi-copy y copy-pipe "xclip"

# For OS X users:
bind -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"

copy-modeここでいくつかのテキストを選択すると、yそのテキストはオペレーティングシステムのクリップボードだけでなくtmuxバッファにもコピーされます。ただし、クリップボードからtmuxバッファにテキストをインポートしたい場合は役に立ちません。

答え3

Mac OS-X用のよりシンプルなソリューション

これはAlexの答えに基づいており、当時は存在しなかったものを使用します。

使用する場合自家製(そうでなければなぜできないのですか?)それでは、次のようにすることができます。

brew install reattach-to-user-namespace

それから~/.tmux.conf

set-option -g default-command "reattach-to-user-namespace -l zsh" # or bash...
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(tmuxを使用して何かをコピーする必要があります)からMacペーストボードとして<tmux-key> Control-cNow available forCommand-vまたはを使用します。pbpaste

Macクリップボードのコンテンツを貼り付けるには、を使用します<tmux-key> Control-v

答え4

試してみたいかもしれませんtmux-yankプラグイン。システムクリップボード(OS XおよびLinux)に直接コピーできるだけでなく、現在のシェルラインをインポートするなどの他の利点もあります。

関連情報