如何建立一個單獨的命令來從 tmux 剪貼簿複製到 Linux 剪貼簿?

如何建立一個單獨的命令來從 tmux 剪貼簿複製到 Linux 剪貼簿?

我正在嘗試在 Linux 中模擬 OSX 中運行的以下綁定:

# 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 複製到我的系統剪貼簿,因為許多現有答案地址。

我嘗試過以下綁定(一次一個)。

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)使用xsel代替xclip,它不會遇到同樣的問題。

2)將標準輸出重定向為/dev/null這樣:xclip ... >/dev/null

3)使用run -b而不是runtmux不等待xclip完成。

相關內容