使用屏幕时保留终端窗口标题

时间:2013-05-22 09:41:38

标签: bash gnu-screen

每当我启动屏幕时,它会将终端窗口的标题更改为“屏幕”。如果我没有在屏幕下运行我的命令,我可以阻止它并使窗口标题保持原样吗?

更具体地说,我希望gnome-terminal显示我在vim中编辑的缓冲区的名称。我可以通过将set title添加到我的.vimrc来实现此目的。现在,当我运行vim时,缓冲区名称(以及其他一些信息)显示在gnome-terminal的标题中。当我启动屏幕并运行vim时,标题将变为“屏幕”。

我查看了以下页面:

http://beautifulpixels.blogspot.co.at/2012/01/automatic-screen-window-titles-in-bash.html

但建议的解决方案将窗口标题放在屏幕状态行中。我也尝试添加这个:

case $TERM in
    screen*)
        # http://dtfm.tumblr.com/post/7193076007/the-sweetest-screenrc-hack-ever
        SCREENTITLE='\[\ek\e\\\]\[\ek\W\e\\\]'
        ;;
    *)
        SCREENTITLE=''
        ;;
esac

TITLEBAR='\[\e]0;\a\]'

export PS1="${SCREENTITLE}${TITLEBAR}[\u@\h \W]\$ "

到我的.bashrc,但这只将窗口标题设置为当前目录。即使我运行vim,窗口标题仍然是当前的工作目录。如果我在屏幕外运行它就不是这种情况。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

虽然我没有完全解决它,但是娴静的评论诱使我查看tmux。使用它,我能够把以下一行:

autocmd BufReadPost,FileReadPost,BufNewFile * call system("tmux rename-window '" . expand("%:p:~") . " - VIM'")

在我的.vimrc文件中,我首先得到了我想要的效果(当然,除了我现在使用的是tmux)。

参考文献:

tmux tabs with name of file open in vim

How can I expand the full path of the current file to pass to a command in Vim?