web-dev-qa-db-ja.com

GNU画面:新しいウィンドウ名の変更

Ctrl-a Shift-aでウィンドウの名前を変更できます。複数のウィンドウ名を手動で編集する代わりに、現在のディレクトリに基づいて自動的に名前を付ける方法はありますか?

21
liewl

シェルがディレクトリを変更するたび、またはプロンプトを表示するたびに、ウィンドウタイトルをシェルに変更させます。

あなたのための ~/.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
}

詳細については、Screenマニュアルの Dynamic titles 、またはマニュアルページの「タイトル(ウィンドウに名前を付ける)」を参照してください。

これを.bashrcに入れて、端末名(ウィンドウ名)を現在作業中の最後のディレクトリ(またはファイル名)に変更できます。

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

詳細はこちら: link

0
B.Kocis