
這是一個後續這個問題。我工作於tcsh在 GNU 內部螢幕在一個xterm。
我的 .cshrc 中有以下內容:
alias res_t 'xtset -t %h:%d "(%u:%g)" %e' # reset titlebar
res_t # reset title right now
alias precmd res_t
這很好用!
但是,當我運行 screen 時,我發現標題沒有隨當前目錄更新。如何讓畫面更新 xterm 標題?
答案1
.tcshrc
您可以透過將其新增至您的或來設定 xterm 視窗標題.cshrc
(取代您目前的precmd
別名):
alias precmd 'echo -n "\033]0;${PWD}\a"'
使用此命令時,請確保這是您的.cshrc
和檔案中唯一的 precmd 別名。.tcshrc
無論 GNU 螢幕會話是否打開,此方法都會在 xterm 和 gnome 終端機中將目前目錄顯示為視窗標題。
我的回答是基於這。
答案2
這應該可以在任何 shell 中工作,但這是一個骯髒的 .screenrc hack。它會接管你的hardstatus線來工作,這對某些用戶來說可能是不可接受的。但它適用於gnome 終端在最新的 Ubuntu 上,即使沒有術語訊息下面的線。有些情況可能需要更深入的調整(例如,我還沒有在 PuTTY 上進行測試)。
# enable xterm title setting; may not be necessary on some platforms
termcapinfo xterm*|rxvt* 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
# dirty hack: put xterm title escapes in the hardstatus
# this example will yield "user@host || screen Win#:(windowtitle)
defhstatus "$USER@^EH || screen ^E:(^Et)"
# now turn it off so it doesn't print in the hardstatus line
hardstatus off
# and finally, use caption as a replacement hardstatus
caption always '%{= kG}[%{G}%H%{G}][%= %{= kw}%?%-Lw%?%{R}(%{W}%n*%f%t%?(%u)%?%{R})%{w}%?%+Lw%?%?%= %{G}][%{B}%C%a %M.%d%{G}]'
發現於這個連結。
答案3
我知道您正在使用 tcsh,所以這可能行不通...以防萬一有人正在尋找 bash 方法來執行此操作。
如果您的系統(本地/遠端)正在運行 bash,那麼您可以使用「PROMPT_COMMAND」環境變數來設定視窗標題。在顯示提示之前對 PROMPT_COMMAND 進行評估。
(在你的 .bashrc 中):
export PROMPT_COMMAND='history -a && echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007"'
解釋:
'history -a'
這會將 shell 設定為在每次命令完成時(而不是整個 shell 完成時)追加到歷史檔案。 (這與本例無關)。
'echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007"'
這與轉義碼“\033]0;”相呼應。它使用“user”@“host”變數設定視窗標題(刪除從右到第一個“.”的最長匹配),然後設定工作目錄(用“~”取代“$HOME”)。
上述技巧適用於任何支援動態變更視窗標題的終端應用程式(iTerm、Terminal.app、urxvt、aterm、eTerm.xterm 等都這樣做)。您也可以查看 bash 文件中的 shell 變數“TITLEBAR”,它是類似的。
答案4
這一頁(上面已連結)是解決方案,但是您需要確保條目的終端字串與終端的 id 字串對齊(即變數 TERM 設定為什麼)否則它不會有任何效果。
這是我所做的總結,多年來我沒有投入足夠的時間來解決這個問題,這對我有用:
透過執行以下命令找出您的終端機的 ID 字串:
echo $TERM
它可能會說“xterm”或“linux”或“rxvt”之類的內容。
現在將以下行新增至您的 homedir (~/.screenrc) 中的 .screenrc 檔案(如果不存在則建立一個):
termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
關鍵是要確保“xterm”是上面獲得的 TERM 的 ID 字串。您可以為您使用的每個不同術語類型執行多行操作。
例如,我將其作為我的 .screenrc 文件,因為當 SSing 到一個盒子中時,我使用 xterms 和 'linux' 術語類型:
termcapinfo linux 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
希望這有幫助,完全與 shell 無關。請記住,如果您以 root 身分執行 screen,除了您自己的 ~/.screenrc 檔案之外,您還需要修改 ~root/.screenrc ,如下所示。