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

Joo*_*ooj 11 tmux

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

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

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

Fat*_*lan 5

我的 tmux 配置中有这个:

# 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
Run Code Online (Sandbox Code Playgroud)

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

vw

并复制

y

在 tmux 中,您必须选择要复制的内容。正如您从常用的 vi/vim 命令中知道的那样,没有什么比在正常模式下进行复制更好的了。不幸的是,对于每个 tmux 参数,您只能使用一个键(例如v或)。y

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


p11*_*00i 5

在上游(2.4+)tmux 版本上,这一点发生了变化,为了创建开始选择的绑定,您需要使用-T和 send-keys -X

更多信息请参见tmux 变更日志

这里以我的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
Run Code Online (Sandbox Code Playgroud)

如果您使用emacs复制模式,替换copy-mode-vicopy-mode就足够了。