macOS环境下tmux 3.3a终端会话滚动后无法复制文本至剪贴板
解决tmux 3.3a滚动后无法复制文本到剪贴板的问题
问题核心
滚动触发tmux复制模式后,选中的黄色高亮文本属于tmux内部选中状态,终端的fn+cmd+c无法识别这类文本——因为tmux接管了鼠标和键盘事件,终端捕获不到原生选中。同时你的配置里存在绑定冲突,导致鼠标拖动复制的同步逻辑失效。
配置修复步骤
1. 删除冲突绑定
你的配置里先给MouseDragEnd1Pane绑定了复制同步逻辑,随后又解绑了它,直接导致拖动选中后无法同步到剪贴板。删掉最后一行的:
unbind -T copy-mode-vi MouseDragEnd1Pane
2. 确保选中后同步剪贴板
保留并确认MouseDragEnd1Pane的绑定,让鼠标拖动选中后自动把内容同步到系统剪贴板:
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard"
3. 可选:兼容终端原生复制快捷键
如果更习惯用终端的fn+cmd+c复制,可以添加以下配置,让tmux复制模式下允许终端捕获文本选中:
set -g allow-passthrough on
设置后你可以按住Cmd拖动选中tmux内的文本,再用fn+cmd+c完成复制。
修复后的完整tmux.conf示例
set -g mouse on set -g allow-passthrough on # 可选,兼容终端原生选中复制 bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'" bind -n WheelDownPane select-pane -t= \; send-keys -M bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M bind -T copy-mode-vi C-WheelUpPane send-keys -X halfpage-up bind -T copy-mode-vi C-WheelDownPane send-keys -X halfpage-down bind -T copy-mode-emacs C-WheelUpPane send-keys -X halfpage-up bind -T copy-mode-emacs C-WheelDownPane send-keys -X halfpage-down # 使用vi风格复制模式快捷键 setw -g mode-keys vi # Enter键绑定复制到剪贴板 unbind -T copy-mode-vi Enter bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -selection clipboard" # 鼠标拖动选中后自动同步剪贴板 bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard" set -g visual-bell on
生效方式
保存修改后的~/.tmux.conf,在tmux会话中按Ctrl+b :,输入source-file ~/.tmux.conf回车,或直接重启tmux会话即可。
内容的提问来源于stack exchange,提问作者Chris Stewart
相关产品推荐
相关产品推荐

