在 .tmux.conf 中复制(到 X 剪贴板)快捷方式

non*_*one 25 command-line tmux clipboard

为了在 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"
Run Code Online (Sandbox Code Playgroud)

这给了我和错误:

.. usage: bind-key [-cnr] [-t key-table] key command [arguments]
Run Code Online (Sandbox Code Playgroud)

(我无法复制错误)

我怎样才能解决这个问题?

编辑:我意识到我可以像常规选择一样使用鼠标选择并复制到 tmux 缓冲区(前 3 个步骤)(虽然突出显示不会持续,但它仍然选择文本),然后使用以下绑定复制到 x 剪贴板:

bind-key -n C-c run "tmux show-buffer | xclip -selection clipboard -i"
Run Code Online (Sandbox Code Playgroud)

(我用这种方法复制了这段文字,很简单;)

请注意,-n表示“无前缀”,因此不需要转义。如果您没有对消失的突出显示感到困惑,这类似于常规(通用用户界面)复制。

这是迄今为止我想出的最好的..

EDIT2:结果ctrl+c与过程中断重叠,所以我ctrl+alt+c现在改为。(不是很喜欢)

EDIT3: 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"
Run Code Online (Sandbox Code Playgroud)

这两个绑定可以在我使用entery完成复制时将文本复制到剪贴板。

我仍然保留这一行,以防我用鼠标进行复制并决定稍后将 tmux 缓冲区内容发送到剪贴板:

bind-key y run "tmux show-buffer | xclip -selection clipboard -i"
Run Code Online (Sandbox Code Playgroud)

Mun*_*eeb 15

此回复并未直接回答您关于创建快捷方式的问题。但这就是我要做的。

您可以通过按住 暂时暂停将您的键/鼠标事件传递给 tmux shift。因此,您可以按住 Shift 并使用终端 / X 的常规快捷方式进行复制。在我使用终结者的情况下,我按shift,用鼠标突出显示我想要的任何内容,复制Ctrl+Shift+C

如果您有拆分窗格,您可以使用 zoom-toggle-key 缩放当前窗格Prefix + z,并执行复制操作。(在 tmux v1.8 上测试)