无法从 tmux (2.4+) 复制到 OS X 剪贴板

无法从 tmux (2.4+) 复制到 OS X 剪贴板

以下代码曾经在我的中工作.tmux.conf

# Mac OS X:
bind-key -n -t emacs-copy M-w copy-pipe "reattach-to-user-namespace pbcopy"

# Move tmux copy buffer into x clipboard
unbind-key M-w
bind-key -n M-w run "tmux save-buffer - | xclip -i -selection clipboard" \; display-message 'Copying to clipboard'

它最近停止工作,所以我无法再将文本从 tmux 复制到其他地方。我猜这是升级 tmux 或reattach-to-user-namespace.

我现在收到以下错误:

invalid or unknown command: bind-key -n -t emacs-copy M-w copy-pipe 
"reattach-to-user-namespace pbcopy"

这是我正在使用的版本(来自brew)。

/usr/local/Cellar/tmux/2.4/bin/tmux

/user/local/bin/reattach-to-user-namespace/2.5

可能发生了什么变化?我该如何恢复从tmux系统复制的能力?

答案1

请尝试以下方法:

bind-key -T copy-mode M-w send-keys -X copy-pipe 'reattach-to-user-namespace pbcopy'

注意tmux 最近改变关键表:

  • 关键表发生了重大变化。模式键表不再与主键表分开。所有模式密钥表以及绑定密钥和取消绑定密钥的 -t 标志都已被删除。

    emacs-edit、vi-edit、emacs-choose 和 vi-choose 表已被命令提示符和选择模式中的固定键绑定所取代。模式键和状态键选项保留。

    emacs-copy 和 vi-copy 表已被 copy-mode 和 copy-mode-vi 表取代。使用 -X 和 -N 标志发送命令到发送键。所以如下:

    绑定 -temacs-copy C-Up 向上滚动 绑定 -temacs-copy -R5 WheelUpPane 向上滚动

    变成:

    绑定 -Tcopy-mode C-Up 发送 -X 向上滚动 绑定 -Tcopy-mode WheelUpPane 发送 -N5 -X 向上滚动

    这一更改允许使用完整的命令解析器(包括命令序列)和命令集 - 例如,带有编辑和历史记录的普通命令提示符现在用于搜索、跳转等,而不是自定义命令提示符。现在默认的 Cr 绑定是:

    绑定 -Tcopy-mode Cr 命令提示符 -p'向上搜索'“发送 -X 向后搜索'%%'”

    send -X 还提供了一些新命令,例如
    copy-pipe-and-cancel。

答案2

正如阿梅里奥在另一个答案中提到的那样,在处理键盘快捷键映射时,tmux版本经历了重大的、向后不兼容的更改。2.4

vi我如何使用密钥和版本进行复制的方式2.6是:

bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'reattach-to-user-namespace pbcopy'
bind-key -T copy-mode-vi V send-keys -X rectangle-toggle
bind-key -T copy-mode-vi Y send-keys -X copy-end-of-line

您应该能够使用类似的语法为自己绑定正确的命令。

相关内容