【发布时间】:2013-08-07 23:46:21
【问题描述】:
tmux 有一个命令模式,可以通过C-b : 访问,我想知道是否有办法将我的.tmux.conf 文件中的命令(如split-window)别名为我经常使用的东西,如vsp vim。
我知道我可以将键盘快捷键与bind 绑定,但我也可以为命令设置别名吗?
【问题讨论】:
标签: tmux
tmux 有一个命令模式,可以通过C-b : 访问,我想知道是否有办法将我的.tmux.conf 文件中的命令(如split-window)别名为我经常使用的东西,如vsp vim。
我知道我可以将键盘快捷键与bind 绑定,但我也可以为命令设置别名吗?
【问题讨论】:
标签: tmux
tmux 2.4 添加了command-alias 数组选项来执行此操作,因此例如您可以这样做
:set -s command-alias[10] vsp='split-window -h'
然后你可以像你期望的那样在命令提示符中使用:vsp。
【讨论】:
:list-commands 最有意义,但用户定义的别名不会出现在该列表中(还没有!)
从 tmux 2.0 开始,这似乎是不可能的。
您可以做的一件事是从外壳向封闭的 tmux 会话发送命令。这意味着您可以,例如,创建一个可以拆分窗口的 bash 别名:
alias vsp="tmux split-window -h"
然后,您可以在 bash 提示符下运行 vsp 以垂直拆分 tmux 窗口。根据您的具体用例,这可能会有所帮助。
还值得注意的是,如果目标是最小化输入,则 tmux 命令可以缩短为它们最短的明确前缀:sp 与 split-window 做同样的事情。
【讨论】:
您可以使用bind。以下是打开和关闭 mouse-mode 的示例别名:
bind m \
set -g mode-mouse on \;\
set -g mouse-resize-pane on \;\
set -g mouse-select-pane on \;\
set -g mouse-select-window on \;\
display 'Mouse mode ON'
bind M \
set -g mode-mouse off \;\
set -g mouse-resize-pane off \;\
set -g mouse-select-pane off \;\
set -g mouse-select-window off \;\
display 'Mouse mode OFF'
现在您可以轻松使用Ctrl+B m 将其打开,并使用Ctrl+B M 将其关闭(假设Ctrl+B 是您的前缀)
【讨论】:
有一个 mod 不仅允许别名,还允许在 tmux 中创建新命令:http://ershov.github.io/tmux/
例如:
proc vsp {args} { split-window -h {*}$args }
不涉及外部外壳,不产生新进程。
【讨论】:
是的。在 tmux.conf 中使用 bind-key。例如拆分 tmux 窗口使用:
bind-key v split-window -v #C-b v to split vertically
bind-key h split-window -h #C-b h horizontal
如果您不想使用前缀 (C-b),只需添加 -n 参数:
bind-key -n C-right next # C - → to move to next window.
【讨论】:
command-prompt 执行的命令是否可以别名,not bind-key。 alias vsp="split-window -h" 的功能等价物。所以有人可以像C-b :vsp 这样在 Vim 中做垂直分割。