我可以为 tmux 窗口设置默认标题吗?

我可以为 tmux 窗口设置默认标题吗?

目前标题默认为reattach-to-user-namespace(OS X),这很烦人。我是否可以tmux.conf选择其他默认标题?

如果没有,我该如何进行键绑定以创建新窗口然后提示我输入名称?

答案1

没有适用于所有新窗口的全局默认窗口名称;它们默认为命令的第一个“单词”(或如果没有命令,则为默认 shell)。您的窗口可能默认为该名称,reattach-to-user-namespace因为这是值中第一个有趣的部分default-command

虽然有点绕圈子,但您可以将默认命令放在 shell 脚本中,然后指向default-command该脚本。通过该配置,默认窗口名称(对于没有使用明确命令创建的窗口)将是您命名的 shell 脚本。

否则,有几种方法可以手动命名/重命名窗口:

  • 在创建时-n

    new-window -n 'some name'
    

    您可以重新绑定c(用于创建窗口的默认键)以包含您选择的“默认名称”:

    bind-key c new-window -n 'default name'
    
  • 重命名现有窗口:

    rename-window 'new name'
    

    还有一个默认绑定(前缀,),它会提示您输入新名称并重命名窗口。

  • 通过发送到窗格 tty 的“转义序列”重命名窗口:

    # E.g. in a shell:
    printf '\033kWINDOW_NAME\033\\'
    

您可以像这样“提示我输入新窗口的名称”(在创建窗口之前或之后提示):

bind-key C command-prompt -p "Name of new window: " "new-window -n '%%'"

bind-key C new-window \; command-prompt -p "Name for this new window: " "rename-window '%%'"

答案2

tmux 选择第一个命令作为窗口名称。

假设你想让“i”成为默认标题,你可以像这样欺骗它。

set-option -g default-command "i > /dev/null 2>&1; reattach-to-user-namespace -l bash"

这比

set-option -g default-command "tmux rename-window i; reattach-to-user-namespace -l bash"

因为如果您在手动设置窗口标题后创建窗格,则标题将再次重命名为“i”。

答案3

除了 Chris 关于使用 设置窗口标题的回答之外new window -n 'somename',您还可以提供一个空字符串''作为窗口的名称。这样,我可以使用默认快捷方式(前缀 + c),而不需要为临时窗口想出一个名称,但仍可以在必要时重命名它们:

bind-key c new-window -n ''

答案4

这不是一个真正的答案,而是一个黑客攻击:

我创建了一个符号链接

sudo ln -s /usr/local/bin/reattach-to-user-namespace /usr/local/bin/pbash

现在它显示为pbash默认标题。

相关内容