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

我认为没有直接的方法,因为屏幕的工作方式。但是屏幕可以显示自己的状态栏,您可以在 .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中的 screen 下无法运行:

开关($TERM)
案例“xterm *”:
  设置提示="%{\033]0;${HOME:t}@%m:%l:%c08\007%}%{\033[36m%}%l:%c02%#%{\033[ 0m%}"
  # 更新 xterm 标题以在其中显示当前 cmd
  别名 postcmd 'echo -n "\033]0;${HOME:t}@`hostname`:${tty} \!#:q\007"'
...

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

案例“屏幕”:
  # 蹩脚,但在“su - root”之后防止屏幕出现错误
  if (!$?WINDOW) setenv 窗口 1
  设置提示="%{\033]0;${HOME:t}@%m:${WINDOW}:%c08\007%}%{\033[36m%}%c02%#%{\033[0m %} "
  别名 postcmd '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 回答