11

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

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

我搜索了一种在 Tmux 复制模式下创建自己的“yw”命令的方法。链接所需的所有操作是一个好主意,但是用 just 分隔的命令进行简单绑定;是行不通的(类似的事情在非复制模式下也有效)。有什么我想念的吗?还是 Tmux 的复制模式受到限制,并且不像我需要的那样可编写脚本?

4

4 回答 4

5

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

并复制

y

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

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

于 2012-06-08T18:32:04.753 回答
4

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

于 2012-06-08T18:34:32.120 回答
3

在上游(2.4+)tmux 版本上,这已更改,为了创建一个绑定开始选择,您需要使用-T和发送密钥-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

如果您使用的是emacs复制模式,则替换copy-mode-vicopy-mode应该足够了。

于 2017-04-30T13:52:36.287 回答
0

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

于 2016-04-18T15:20:50.207 回答