tmux——命名窗口并通过模糊匹配选择它们

tmux——命名窗口并通过模糊匹配选择它们

我希望能够命名我的 tmux 窗口并使用模糊匹配选择它们(类似于 LustyJuggler 或 vim 中的 Ctrl-P)。

使用 tmux 可以实现这个吗?

答案1

默认的 tmux 几乎完全满足您的要求:

C-b,重命名当前窗口

C-b'(单引号)提示选择窗口索引

请注意,这个“窗口索引”措辞有点误导。这个提示实际上接受了,target-window它非常强大,包括:

  1. 窗口名称的开始,例如“mysession:mywin”。
  2. 作为与窗口名称匹配的 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

灵感来自https://github.com/junegunn/fzf/wiki/Examples#tmux

相关内容