在屏幕下运行时,当前目录不会出现在标题栏中

时间:2009-06-29 09:54:50

标签: linux prompt gnu-screen xterm

我的$prompt中的我的xterm .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. 有没有更好的方法在标题栏中显示当前目录?
  3. 我正在使用xterm和tcsh运行linux。

2 个答案:

答案 0 :(得分:3)

我认为没有直接的方式,因为屏幕的工作方式。但是,屏幕可以显示自己的状态栏,您可以在.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}]'

答案 1 :(得分:0)

首先,要使其发挥作用,您必须检查set prompt=blah-blah.tcshrc的确切位置。例如,下面的代码完全适用于普通的xterm 不会在xterm的屏幕下工作:

switch ($TERM)
case "xterm*":
  set prompt="%{\033]0;${HOME:t}@%m:%l:%c08\007%}%{\033[36m%}%l:%c02%#%{\033[0m%} "
  # update xterm title to display current cmd in it
  alias postcmd 'echo -n "\033]0;${HOME:t}@`hostname`:${tty}    \!#:q\007"'
...

因为默认情况下屏幕将$ TERM变量设置为screen而不是xterm!所以你必须添加:

case "screen":
  # lame, but prevents an error in screen after 'su - root'
  if (! $?WINDOW) setenv WINDOW 1
  set prompt="%{\033]0;${HOME:t}@%m:${WINDOW}:%c08\007%}%{\033[36m%}%c02%#%{\033[0m%} "
  alias postcmd 'echo -n "\033]0;${HOME:t}@`hostname`:${WINDOW}    \!#:q\007"'
  ...

其次,请确保你在~/.screenrc中有这一行:

termcapinfo xterm* 'hs:ts=\E]2;:fs=\007:ds=\E]2;\007'