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


20

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


どのシェルを使用しますか?
マルコ

私はbashを使用しています。
-liewl

回答:


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
}

詳細については、Screenマニュアルの「Dynamic titles」またはマニュアルページの「Titles(naming windows)」を参照してください。


私は自分の.bashrcに、bashの1をcopypasted、それがこれらのエラーをオフに与えている:bashの:PROMPT_COMMAND:行0:予期しないトークンの近くに構文エラー;' bash: PROMPT_COMMAND: line 0: ; screen_set_window_title」
liewl

@David:申し訳ありませんが、PROMPT_COMMAND既に何かがある場合はコマンドを蓄積することがポイントでしたが、コンポーネントの順序が間違っていました。
ジル 'SO-悪である停止

2
素晴らしいトリック@Gilles。ウィンドウのタイトルを短くしたい場合は、フルパスを削除してベース名のみを保持できます。置き換え$HOME/*) HPWD="~${HPWD#$HOME}";;てください*) HPWD=`basename "$HPWD"`;;

0

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

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

詳細はこちら: リンク

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.