GNU Screen:新窗口名称更改

lie*_*ewl 21 gnu-screen terminal window-title

我可以使用 Ctrl-a Shift-a 更改窗口的名称。有没有办法让它们自动以当前目录命名,而不是手动编辑多个窗口名称?

Gil*_*il' 23

每次更改目录或每次显示提示时,让您的 shell 更改窗口标题。

对于您的~/.bashrc

if [[ "$TERM" == screen* ]]; then
  screen_set_window_title () {
    local HPWD="$PWD"
    case $HPWD in
      $HOME) HPWD="~";;
      $HOME/*) HPWD="~${HPWD#$HOME}";;
    esac
    printf '\ek%s\e\\' "$HPWD"
  }
  PROMPT_COMMAND="screen_set_window_title; $PROMPT_COMMAND"
fi
Run Code Online (Sandbox Code Playgroud)

或者对于您的~/.zshrc(对于 zsh 用户):

precmd () {
  local tmp='%~'
  local HPWD=${(%)tmp}
  if [[ $TERM == screen* ]]; then
    printf '\ek%s\e\\' $HPWD
  fi
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请在屏幕手册中的动态标题下或手册页中的“标题(命名窗口)”下查找。

  • 很棒的技巧@Gilles。对于那些喜欢保持窗口标题简短的人,您可以删除完整路径并只保留基本名称。只需将 `$HOME/*) HPWD="~${HPWD#$HOME}";;` 替换为 `*) HPWD=\`basename "$HPWD"\`;;` (2认同)