当使用交互式会话菜单 ( <prefix>-s
) 在 tmux 会话之间切换时,你可以通过输入会话的数字或字母索引跳转到特定会话,例如
(0) + first_session: 1 windows (1) + second_session: 2 windows (2) + third_session: 1 windows (3) + secret_session: 1 windows
按下1
即可打开second_session
会话。
我经常打开 20 多个 tmux 会话,我想有一种无需查看整个列表即可进行搜索的方法。有没有办法改变行为以进行交互式搜索?也就是说,我想输入sec
并将列表缩小到
(1) + second_session: 2 windows (3) + secret_session: 1 windows
我已经在 Google 上搜索了很多次,但什么也没找到;这种行为可能吗?
答案1
是的,但据我所知,你需要一个额外的工具来进行搜索。我正在使用陣陣用于(模糊)搜索。安装 fzf 后,您可以使用以下配置来设置搜索的会话切换:
bind C-j split-window -v "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^$(tmux display-message -p '#S')\$\" | fzf --reverse | xargs tmux switch-client -t"
我自己没有弄清楚这一点,但从 Chris Toomey 的公共 tmux 配置。
答案2
@bartj3:谢谢。这太酷了!
这是一个稍微增强的版本(没有 sed 和 grep),用于切换会话和窗口:
bind j split-window -v "tmux list-sessions -F '#S' | fzf --reverse | xargs tmux switch-client -t"
bind k split-window -v "tmux list-window -F '#W' | fzf --reverse | xargs tmux select-window -t"
问题:
如果在同步窗格打开的情况下使用上述操作,您的搜索按键也将在其他窗格中输入。
问题:
有人知道如何限制搜索窗格的按键吗?