我有一些命令,我不想为其创建按键绑定,而是更愿意为它们使用命令模式。例如,我想要类似的东西:
<C-a>:restart-guard
我可以运行一个脚本来在我的防护窗口中运行一些命令
这可能吗?
不能直接定义用户定义的命令 但是您始终可以使用 so(source-file的最短别名)调用 tmux 脚本,或者使用 ru(run-shell的最短别名)
调用程序对于 so,您需要提供命令的路径或让 tmux 服务器在自定义命令所在的文件夹中启动
这是一个简单的示例,您将 restart-guard 脚本放在 ~/.tmux/commands 中 你使用 scipt 启动 tmux :
#!/bin/bash
cd ~/.tmux/commands
tmux
然后在 tmux 中,执行
<C-a>:so restart-guard
我目前正在寻找一种方法,在启动时拥有启动 tmux 的目录,而不是 ~/.tmux/commands 目录
不幸的是,目前 tmux 还无法做到这一点。
tmux 有一个相对较新的功能,可以提供您在这里寻找的功能:命令别名。 命令别名与每个命令的短别名不同(例如列表窗口的 lsw)。命令别名是使用 command-alias 服务器选项定义的。这是一个数组选项,其中每个条目都有一个数字。
默认有一些设置是为了方便起见,还有一些设置是为了向后兼容:
$ tmux show -s command-alias
command-alias[0] split-pane=split-window
command-alias[1] splitp=split-window
command-alias[2] "server-info=show-messages -JT"
command-alias[3] "info=show-messages -JT"
command-alias[4] "choose-window=choose-tree -w"
command-alias[5] "choose-session=choose-tree -s"
以 command-alias[4] 为例,这意味着 choose-window 命令扩展为 choose-tree -w。
通过向数组添加新索引来添加自定义命令别名。因为默认值从索引 0 开始,所以最好对其他命令别名使用更大的数字:
:set -s command-alias[100] 'sv=splitw -v'
此选项使 sv 与 splitw -v:
相同:sv
为输入的命令提供的任何后续标志或参数都将附加到替换的命令中。这与 splitw -v -d:
相同:sv -d