为了将文本复制到 tmux 中的 X 剪贴板,我当前所做的是:
- 进入选择模式prefix[
- 开始选择space(使用
mode-keys vi
顺便说一句) - 选择文本并按enter
- 使用以下命令将 tmux 缓冲区复制到 X 剪贴板prefixctrl+c
(我有一个映射bind C-c run "tmux show-buffer | xclip -selection clipboard -i"
我试图通过为选择模式进行映射来消除其中一些步骤。我努力了:
bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"
这给了我和错误:
.. usage: bind-key [-cnr] [-t key-table] key command [arguments]
(我无法复制错误)
我怎样才能解决这个问题?
编辑:我意识到我可以使用鼠标选择并复制到 tmux 缓冲区(前 3 个步骤),就像常规选择一样(虽然突出显示不会持续,但它仍然选择文本),然后使用以下绑定复制到 x 剪贴板:
bind-key -n C-c run "tmux show-buffer | xclip -selection clipboard -i"
(我用这个方法复制这段文字,很简单;)
请注意,-n
表示“无前缀”,因此不需要转义。如果您没有对消失的突出显示感到困惑,这类似于常规(通用用户界面)复制。
这是迄今为止我想出的最好的..
编辑2:结果与进程中断的事情重叠,所以我现在ctrl+c改为。 ctrl+alt+c(不太喜欢)
编辑3:tmux 1.8 左右添加了在复制模式下添加键绑定的支持,因此现在我的第一个初衷可以使用以下内容:
bind-key -tvi-copy y copy-pipe "xclip -selection clipboard -i"
bind-key -tvi-copy enter copy-pipe "xclip -selection clipboard -i"
这两个绑定使我可以在使用enter或y完成复制时将文本复制到剪贴板。
我仍然保留这一行,以防我用鼠标进行复制并决定稍后将 tmux 缓冲区内容复制到剪贴板:
bind-key y run "tmux show-buffer | xclip -selection clipboard -i"
答案1
此回复并没有直接回答您有关创建快捷方式的问题。但这就是我所做的。
您可以通过按住 暂时停止将键/鼠标事件传递到 tmux shift。因此,您可以按住 Shift 并使用终端/X 的常规快捷键来进行复制。在我使用终结者的情况下,我按shift,用鼠标突出显示我想要的任何内容,然后复制Ctrl+Shift+C
如果您有拆分窗格,您可以使用 Zoom-toggle-key 缩放当前窗格Prefix + z,并执行复制操作。 (在 tmux v1.8 上测试)
答案2
这并不能直接回答您的问题,但请看一下tmux 复制,如中所述在 tmux 中以 vi-copy 模式使用系统剪贴板和让 tmux 将缓冲区复制到剪贴板。安装后,
prefix + y
- 将文本从命令行复制到剪贴板。复制模式绑定:
y
- 将选择复制到系统剪贴板