使用 ctrl-prefix ctrl-y 時 tmux 凍結

使用 ctrl-prefix ctrl-y 時 tmux 凍結

我正在使用自訂 .tmux.conf 文件,如下所示:

unbind-key C-b
set -g prefix C-a
bind-key C-a send-prefix

set-window-option -g mode-keys vi
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection

## CLIPBOARD selection integration
# Requires prefix key before the command key
# Copy tmux paste buffer to CLIPBOARD
bind C-y run "tmux show-buffer | xclip -i -selection clipboard"
# Copy CLIPBOARD to tmux paste buffer and paste tmux paste buffer
bind C-p run "tmux set-buffer -- \"$(xclip -o -selection clipboard)\"; tmux paste-buffer"

我正在使用ctrl+ a ctrl+y從 tmux 複製緩衝區複製到剪貼簿。但每次我這樣做時 tmux 都會凍結並且不接受任何輸入。我嘗試使用ctrl+q但這沒有幫助。

我該怎麼做才能防止 tmux 凍結,哪些快捷方式會幹擾這裡?我也嘗試了快捷方式ctrl++ ,這裡也a ctrlc同樣的問題。

答案1

如果您在命令列上鍵入該xclip命令,您會發現它沒有完成。這是因為它繼續接受輸入,直到標準輸入已經完成了。因此,標準輸出永遠不會關閉。您可以透過重新導向來解決此問題標準輸出xclip/dev/null。例如:

bind y run "tmux save-buffer - | xclip -selection clipboard &>/dev/null"

在這個例子中我重定向標準錯誤錯誤率以防萬一。

答案2

xclip正在等待輸入,這會阻止 tmux 接收輸入。以下範例允許 xclip 在另一個 shell 中執行,而不阻塞 tmux 會話:

bind y run-shell -b "tmux save-buffer - | xclip -selection clipboard"

我甚至會添加一條訊息來幫助您的工作流程:

bind y run-shell -b "tmux save-buffer - | xclip -selection clipboard; tmux display-message \"Tmux buffer saved to clipboard\" "

我希望這有幫助!

答案3

bind y run-shell -b "cat << EOF | tmux save-buffer - | xclip -sel clipboard &>/dev/null"

您可以這樣做,EOF 在使用 xclip 將緩衝區複製到剪貼簿後關閉緩衝區。

相關內容