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

时间:2012-06-08 14:03:55

标签: tmux

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

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

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

4 个答案:

答案 0 :(得分:4)

我在我的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

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

v 瓦特

复制

ý

在tmux中,您必须选择进行复制。通常的vi / vim命令就像在普通模式下复制一样。不幸的是,每个tmux参数只能使用一个键(如vy)。

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

答案 1 :(得分:4)

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

答案 2 :(得分:2)

在上游(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即可。

答案 3 :(得分:0)

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