我希望能够命名我的 tmux 窗口并使用模糊匹配选择它们(类似于 LustyJuggler 或 vim 中的 Ctrl-P)。
使用 tmux 可以实现这个吗?
答案1
默认的 tmux 几乎完全满足您的要求:
C-b,重命名当前窗口
C-b'(单引号)提示选择窗口索引
请注意,这个“窗口索引”措辞有点误导。这个提示实际上接受了,target-window
它非常强大,包括:
- 窗口名称的开始,例如“mysession:mywin”。
- 作为与窗口名称匹配的 fnmatch(3) 模式。
不是完全模糊匹配,但非常接近。因此,如果您有命名窗口
- 富
- 酒吧
- 布兹
你可以在它们之间快速跳转:
- C-b'fEnter
- C-b'baEnter
- C-b'buEnter
答案2
以下是使用以下脚本的链接fzf
进行模糊搜索并选择pane
:
https://github.com/junegunn/fzf/wiki/Examples-(tmux)#select-pane
https://github.com/junegunn/fzf/wiki/Examples#tmux
我想调整这些以进行模糊搜索并不会太难windows
。
编辑:
更改此行:
panes=$(tmux list-panes -s -F '#I:#P - #{pane_current_path} #{pane_current_command}')
到:
panes=$(tmux list-panes -s -F '#I:#P #W - #{pane_current_path} #{pane_current_command}')
(我添加了#W
其中还打印了window
名称)
答案3
Tmux 默认情况下无法做到这一点。
谷歌没有返回太多结果,这个问题排在第二或第三,具体取决于查询,但是这些 zsh 脚本可能很有趣。
答案4
您可以使用默认键绑定prefix+在 tmux 中命名窗口,,或者通过执行以下命令:
tmux rename-window "<the-name>"
我创建了一个 shell 函数来通过名称模糊查找 tmux 窗口(使用fzf
),然后切换到它:
tmux_fzf_window() {
window_list=$(tmux list-windows -F '#{window_index} #{window_name}')
window_index=$(echo "$window_list" | fzf | awk '{ print $1 }')
tmux select-window -t $window_index
}
我像tmux.conf
这样使用它:
bind-key f run "tmux split-window -l 12 'bash -ci tmux_fzf_window'"
然后,当您按下prefix+F时,底部会出现一个 tmux 窗格,其中包含窗口列表,您可以模糊过滤并选择切换到该窗口。
注意:这将覆盖设置为“查找窗口”的默认prefix+键绑定,其工作方式有些类似,但不太模糊和交互。F