GNU屏幕选项卡标题都只是“ zsh”

时间:2018-07-18 22:27:08

标签: amazon-ec2 putty gnu-screen oh-my-zsh

好的,所以我想首先解释一下我的设置。我在家中有Windows桌面,并且正在通过SSH登录到运行Amazon Linux的Amazon EC2实例(通过PuTTY)。我将zsh作为默认外壳,并且还安装了oh-my-zsh。这种“云开发人员桌面”模型对我来说效果很好,但是我遇到的一个问题是,我投入的时间超过了我不愿承认的时间:GNU屏幕仅显示“ zsh”作为每个选项卡的标题。尽管使用了oh-my-zsh的屏幕插件(我认为它没有做任何事情)。有人可以帮助我吗?我希望标签中的内容更具描述性,也许只是当前目录的最后x个字符(如果在vim中打开了,则为打开的文件名)。

像许多屏幕用户一样,我以前有过我要的东西,但是现在使用的是新设备,并且不完全了解我的.screenrc中的所有内容:

# Many settings from https://gist.github.com/azitabh/7427682 and
# https://gist.github.com/joaopizani/2718397 and
# https://gist.github.com/ChrisWills/1337178

# Allow bold colors - necessary for some reason
attrcolor b ".I"

# Tell screen how to set colors. AB = background, AF=foreground
termcapinfo xterm "Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm"

# Erase background with current bg color
defbce "on"

# Cache 30000 lines for scroll back
defscrollback 30000

# add tabs on bottom
caption always "%{= bb}%{+b w}%n %t %h %=%l %H %c"

# Very nice tabbed colored hardstatus line
#hardstatus string '%{= Kd} %{= Kd}%-w%{= Kr}[%{= KW}%n %t%{= Kr}]%{= Kd}%+w %-= %{KG} %H%{KW}|%{KY}%101`%{KW}|%D %M %d %Y%{= Kc} %C%A%{-}'
hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"

#Remove vim buffer from scrollback history after quitting
altscreen on

# special xterm hardstatus: use the window title.
#termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
#termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]1;screen\007'

# Enable 256 color term
term xterm-256color

# Enables use of shift-PgUp and shift-PgDn
termcapinfo xterm|xterms|xs|rxvt ti@:te@

# tell screen that xterm can switch to dark background and has function keys.
termcapinfo xterm 'VR=\E[?5h:VN=\E[?5l'
termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~'
termcapinfo xterm 'kh=\E[1~:kI=\E[2~:kD=\E[3~:kH=\E[4~:kP=\E[H:kN=\E[6~'

# window numbering starts at 1 not 0
bind c screen 1
bind 0 select 10
screen 1

#allow mouse scrolling in screen
termcapinfo xterm* ti@:te@

# Automatically detach on hangup.
autodetach on

我还尝试将其添加到我的.zshrc中,这很有帮助,但并不是我想要的,就像您运行ls一样,现在标题是ls。即,不是非常有用。但是也许在这里进行编辑实际上是正确的方法:

# So screen tabs receive running process title
# preexec () {
#   echo -ne "\ek${1%% *}\e\\"
# }

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在这里回答我自己的问题:

用以下帮助替换上面preexec ()函数中的行:

echo -ne "\ek$(pwd)\e\\"

尽管仍然最好只抓住从x到最后一个'/'到末尾的字符,用'...'代替初始字符串。