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


22

为了将文本复制到tmux中的X剪贴板,我目前要做的是:

  • 进入选择模式 prefix[
  • 开始选择space(使用mode-keys vibtw)
  • 选择文本并按 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表示“无前缀”,因此不需要转义。如果您不对消失的高亮感到困惑,这类似于常规(通用用户界面)复制。

这是我到目前为止提出的最好的..

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"

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

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

bind-key y run "tmux show-buffer | xclip -selection clipboard -i"

1
您可以使用stty将中断从ctrl-c更改为其他内容。例如,使用Ctrl-Z: stty intr=^Z。请谨慎使用该命令,可以将常规字符设置为中断字符(如果这样做,请使用ctrl-v输入该字符,直到修复设置为止)。并且不要对使用的键感到困惑(例如ctrl-z通常是挂起键)。

@ash记下来了,谢谢..但我想我会保留它^c作为中断键,因为我会比复制更多地使用它。我还更新了答案以反映我当前对这个问题的解决方案。

听起来不错。还要注意,许多运行xmodmap都会使事情陷入难以纠正的有趣状态,因此,如果命令的影响看起来不正确,我建议从新的X会话重新开始。
灰烬

运行bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"现场给出:Unknown command: run
Alexej马古拉

1
但是,运行bind-key C-c run "tmux show-buffer | xclip -selection clipboard -i"正常。
Alexej Magura

Answers:


13

此答复不会直接回答您有关创建快捷方式的问题。但是,这就是我的工作。

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

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


由于水平分割,我无法使用它,但是缩放技巧听起来很棒,谢谢您的提示。
没有

当然,这可以在gnome-terminal中工作;但是它适用于所有终端仿真器吗?可能不是
-jpaugh

在wsl-terminal,这有效。拯救我的一天!
秦丝

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.