问题 Tmux复制模式:如何创建自己的命令?


我喜欢Tmux及其使用Vi命令的复制模式,但我真的很生气,因为这种模式远不如真正的Vim那么高效。

例如,没有关键字只能复制一个单词(yw),我必须始终“转到单词的开头”“开始选择”,“转到单词的结尾”然后“完成选择”。当我只需要在vim中做你的时候很多操作。

我搜索了一种在Tmux复制模式下创建自己的“yw”命令的方法。链接所需的所有操作是一个好主意,但是用命令分隔的简单绑定 ; 只是不起作用(类似的东西在非复制模式下工作)。有什么我想念的吗?或者Tmux的复制模式是否有限,而不是像我需要的那样可编写脚本?


9951
2018-06-08 14:03


起源

你怎么称呼'bind-key'是什么样的? - chepner
类似于:bind-key -t vi-copy X previous-word \;开始选择\;下一个词\;复制选择 - Jooj


答案:


我在我的tmux conf中有这个:

# vi-style controls in copy mode
set-option -g status-keys vi
set-window-option -g mode-keys vi

# v and y like vi in copy-mode
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection

现在进入复制模式后,我可以通过以下方式轻松选择单词:

vw ^

并复制

ÿ

在tmux你必须 选择一些东西 复制。正如你从普通的vi / vim命令所知,没有什么能像普通模式一样复制。不幸的是你只能使用 一把钥匙 (喜欢 v 要么 y)对于每个tmux参数。

您可以在此处找到有关tmux的vi移动命令的更多信息: https://superuser.com/a/197272/57890


4
2018-06-08 18:32



使用带有绑定的“tartget”有一个很酷的tmux技巧,或者这只是你在本地的东西? - wonbyte


这似乎是一个错误 bind-key 使用时调用命令 -t 选项。我已经提交了一份错误报告 https://sourceforge.net/tracker/?func=detail&aid=3533562&group_id=200378&atid=973262


4
2018-06-08 18:34



太好了,谢谢你的回答和错误报告! - Jooj


在上游(2.4+)tmux版本中,这已经改变,以便为您需要使用的开始选择创建绑定 -T 和发送密钥 -X

更多信息 tmux changelog

在这里我的绑定 vi复制模式 举个例子:

# Bind `v` to trigger selection    
bind-key -T copy-mode-vi v send-keys -X begin-selection

# Bind `y` to yank current selection
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel

# Rebind `mouse click + drag button release` to not jump away from context
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-selection

如果 您正在使用 emacs的 复制模式,替换 copy-mode-vi 同 copy-mode 应该够了。


2
2018-04-30 13:52





有一个tmux补丁允许创建过程并为“模式”击键绑定任意数量的操作: http://ershov.github.io/tmux/


0
2018-04-18 15:20