我希望能够将我的 tmux 窗口标题自动重命名为 prompt_command、ps1 或只是我ssh想要的机器的主机名。打开 9 个标有“ssh”的窗口真的没用。做系统管理员工作时,我打开新屏幕并通过 ssh 来手动重命名它们。
我注意到的一件事是tmux更新xterm窗口标题,所以我觉得它必须知道。
有什么帮助吗?screen如果我能得到这个功能,我什至愿意回去。
Uta*_*ead 40
tmux rename-window -t${TMUX_PANE} "Title Text"
这是在窗口中设置 tmux 标题的正确方法。$TMUX_PANE 变量由 tmux 设置,用于区分不同的窗格。
rub*_*o77 20
仅适用于通过搜索如何更改 tmux 会话的标题来到这里的人:
Ctrl+ B,$
这会给您一个提示,您可以在其中重命名活动会话。
要更改活动窗口,请改用 komma:
Ctrl+ B,,
请参阅:如何在 tmux 中重命名会话?
Mik*_*kel 16
我不知道有什么方法可以让它PS1直接看你。
但是,tmux理解与设置窗口名称相同的命令screen。
所以你可以在你的~/.bashrcor 中定义这样的函数~/.zshrc:
settitle() {
printf "\033k$1\033\\"
}
Run Code Online (Sandbox Code Playgroud)
然后settitle从任何地方调用。
例如,您可以将它包含在您的PS1变量中,例如
PS1='$HOST:$PWD$(settitle $HOST:$PWD)$ '
Run Code Online (Sandbox Code Playgroud)
或通过PROMPT_COMMAND:
PROMPT_COMMAND='$(settitle $HOST:$PWD)'
# and don't change PS1
Run Code Online (Sandbox Code Playgroud)
现在我知道您tmux在桌面上运行,并且您希望ssh命令具有主机名而不是ssh,这要容易得多。
鉴于您已添加settitle到 local ~/.bashrc,您要做的就是添加以下内容:
ssh() {
settitle "$*"
command ssh "$@"
settitle "bash"
}
Run Code Online (Sandbox Code Playgroud)
如有必要,将 bash 替换为 zsh 或其他更合适的内容。
结合 Mikel 和 UtahJarhead 的答案,我使用以下.zshrc方法解决了这个问题:
ssh() {
tmux rename-window "$*"
command ssh "$@"
exit
}
Run Code Online (Sandbox Code Playgroud)
我默认启用了自动窗口重命名,并且在退出远程主机后找不到重新启用它的方法。因此,我只是完全退出窗口——这对我的工作流程来说不是问题。如果您希望将其重命名为“bash”,则可以将该exit行替换为tmux rename-window "bash".
小智 7
而不是exit或者tmux rename-window "bash"你可以使用
ssh() {
if [ "$(ps -p $(ps -p $$ -o ppid=) -o comm=)" = "tmux" ]; then
tmux rename-window "$*"
command ssh "$@"
tmux set-window-option automatic-rename "on" 1>/dev/null
else
command ssh "$@"
fi
}
Run Code Online (Sandbox Code Playgroud)
这将重新激活为下一个命令自动重命名窗口的正常功能。
该if块防止(没有它)tmux从ssh其他 shell 上使用的命令(out of tmux)重命名当前窗口。
| 归档时间: |
|
| 查看次数: |
40973 次 |
| 最近记录: |