GNU屏幕:新窗口名称更改


20

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


您使用哪个外壳?
marco

我正在使用bash。
liewl 2011年

Answers:


21

每次更改目录或每次显示提示时,都使您的外壳更改窗口标题。

为您~/.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

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

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

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


我在.bashrc上复制了bash一个,它发出了这些错误:bash:PROMPT_COMMAND:第0行:意外令牌附近的语法错误 ;' bash: PROMPT_COMMAND: line 0: ; screen_set_window_title”
liewl

@David:对不起,关键是要在PROMPT_COMMAND已有命令的情况下累积命令,但我的组件顺序错误。
吉尔(Gilles)“所以,别再邪恶了”,

2
绝妙的@吉尔斯。对于那些希望使窗口标题简短的人,可以删除完整路径,仅保留基本名称。只需更换$HOME/*) HPWD="~${HPWD#$HOME}";;*) HPWD=`basename "$HPWD"`;;

0

您可以将其放入.bashrc中,以将终端名称(窗口名称)更改为您正在使用的最后一个目录(或文件名)。

case "$TERM" in xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0;${PWD##*/}\007"' ;; *) ;; esac

这里有更多描述: 链接

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.