1

私のxterm$prompt変数.tcshrcは次のとおりです。

set prompt="%{\033]0;%m:%~\007%}%{^[[;37;1m%}%B%{^[[;34;1m%}%m%{^[[;34;1m%}:%b%c%# "

上の強調表示された部分 ( %{\033]0;%m:%~\007%}) は、ホスト名 ( %m) と現在のディレクトリ ( %~) をタイトル バーに表示します。(少なくとも、それがタイトルバーに表示されていると思います。このプロンプトをいじってからしばらく経ちました)。

ただし、を実行するscreenと、ディレクトリを変更すると、現在のディレクトリの更新が停止します。

私の質問:

  1. このプロンプトを画面で機能させるにはどうすればよいですか?
  2. タイトル バーに現在のディレクトリを表示するより良い方法はありますか?

xterm と tcsh で Linux を実行しています。

4

2 に答える 2

3

画面の仕組み上、直接的な方法はないと思います。ただし、screen は、.screenrc で定義できる独自のステータス バーを表示できます。たとえば、これが私のものです:

hardstatus alwayslastline
 hardstatus string '%{= kG}[ %{G}%H %{g}][%=%{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]'
于 2009-06-29T10:05:50.103 に答える
0

まず、それを機能させるには、 の行が正確にどこにあるかを確認する必要がありset prompt=blah-blahます.tcshrc。たとえば、プレーンな xterm で完全に機能する以下のコードは、xterm の画面では機能しません。

スイッチ ($TERM)
ケース "xterm*":
  set prompt="%{\033]0;${HOME:t}@%m:%l:%c08\007%}%{\033[36m%}%l:%c02%#%{\033[ 0m%}」
  # 現在のコマンドを表示するように xterm タイトルを更新
  エイリアス pos​​tcmd 'echo -n "\033]0;${HOME:t}@`hostname`:${tty} \!#:q\007"'
...

screen はデフォルトで $TERM 変数を!screenではなくxterm!に設定するためです。したがって、次を追加する必要があります。

ケース「スクリーン」:
  # 不器用ですが、'su - root' の後に画面でエラーが発生するのを防ぎます
  if (! $?WINDOW) setenv WINDOW 1
  set prompt="%{\033]0;${HOME:t}@%m:${WINDOW}:%c08\007%}%{\033[36m%}%c02%#%{\033[0m] %} "
  エイリアス pos​​tcmd 'echo -n "\033]0;${HOME:t}@`hostname`:${WINDOW} \!#:q\007"'
  ...

次に、次の行があることを確認して~/.screenrcください。

termcapinfo xterm* 'hs:ts=\E]2;:fs=\007:ds=\E]2;\007'
于 2011-01-14T22:29:29.787 に答える