tmux 链式键盘快捷键,或相当于 screen 的 `bind -c` + `command -c`

tmux 链式键盘快捷键,或相当于 screen 的 `bind -c` + `command -c`

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

我曾是最近获悉switch-client这一方法

绑定join-paneprefix + 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。如果您有特定的任务,我鼓励您将其作为单独的问题发布。

相关内容