我正在使用自定义的 .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 ctrl+ c,这里也有同样的问题。
答案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"
您可以按照以下方式操作,使用 xclip 将 EOF 复制到剪贴板后关闭缓冲区。