screen 的一个不错的功能是它能够将键盘快捷键分配给称为“类”的组。使用bind -c
,您可以将快捷键分配给特定的类,并且绑定command -c <class>
到键允许您选择该类。这允许多层键盘快捷键。例如,我使用 键x
选择专用于常用命令的类。通过将这些启动器快捷键放在自己的类中,可以使用助记键而不必担心与正常的键绑定集冲突。有没有办法在 中复制此功能tmux
?
例子
# from my .screenrc
bind -c execute o screen -t imap 10 offlineimap.sh -o
bind -c execute m screen -t mpd ncmpcpp
bind -c execute w screen -t vw vimwiki
# ... more application launchers
bind x command -c execute
用法:prefixx进入启动器键类,我将所有应用程序的键盘快捷键都放在这里。
答案1
在更好地理解了您要做什么之后,我认为一个简短的 bash 脚本是最好的方法(抱歉,我认为不存在tmux
类似于screen
命令类的 -only 解决方案):
在.tmux.conf
:
bind-key x command-prompt -p "launch what?" " "run-shell \"tmux-launcher %%\""
tmux-launcher
应该是路径中某处的可执行 shell 脚本:
#!/bin/bash
case $1 in
o) tmux new-window -n imap -t 10 offlineimap.sh -o ;;
m) tmux new-window -n mod ncmpcpp ;;
w) tmux new-window -n vw vimwiki ;;
esac
一个缺点是您必须在选择要创建的窗口的字母后键入回车键。
答案2
绑定join-pane
到prefix + t*
tmux bind-key t switch-client -Ttable1
tmux bind-key -Ttable1 '*' join-pane
答案3
据我所知,tmux
不支持这样的命令类。但是,在 中可能可以screen
以不同的方式完成适合命令类的任务tmux
。
这是screen
手册页中的一个示例,其中可以选择索引高于 9 的窗口:
bind -c demo1 0 select 10
bind -c demo1 1 select 11
bind -c demo1 2 select 12
bindkey "^B" command -c demo1
命令类“demo1”允许您使用“Ctrl-a Ctrl-B 2”选择窗口 12(或者只是“Ctrl-B 2”?我对screen
配置不太熟悉)。
在 中tmux
,您可以使用“Ctrl-b w c”选择窗口 12,其中“Ctrl-b w”是调用该choose-window
命令的默认键绑定,而“c”是从 Windows 交互菜单中选择窗口 12 的快捷键。
因此,我的一般建议是探索tmux
命令集,看看是否有tmux
可用的习语来完成使用命令类完成的任务screen
。如果您有特定的任务,我鼓励您将其作为单独的问题发布。