Tmux复制模式:如何创建自己的命令?
我喜欢Tmux和Vi命令的复制模式,但是我真的很烦恼,因为这种模式远没有Vim那么高效。
例如,没有复制一个单词(yw)的键绑定,我必须总是“走到单词的开头”,“开始选择”,“走到单词的末尾”,然后“完成选择”。 当我需要在vim中执行yw时,需要进行很多操作。
我搜索了一种在Tmux复制模式下创建自己的“yw”命令的方法。 链接所有需要的操作是一个不错的主意,但是一个简单的绑定,用命令分隔;
只是不起作用(类似的事情在非复制模式下工作)。 有什么我想念的吗? 或者,Tmux的复制模式仅仅是有限的,而不是像我需要的那样是脚本化的?
我在我的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命令中所知道的那样,在正常模式下没有任何东西可以复制。 不幸的是,每个tmux参数只能使用一个键 (如v
或y
)。
你可以在这里找到更多关于tmux的vi的移动命令:https://superuser.com/a/197272/57890
这似乎是使用-t
选项调用bind-key
命令时的错误。 我通过https://sourceforge.net/tracker/?func=detail&aid=3533562&group_id=200378&atid=973262提交了错误报告。
在上游(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
应该是足够的。
上一篇: Tmux copy mode: how to create your own command?
下一篇: Howto go to beginning of line in tmux after remapping prefix to CTRL+A?