我为在 gnu screen 中创建的新窗口设置了有意义的名称,但当我“cd”或打开 vim 时,该名称会更改为“pwd”。有没有办法阻止 screen 更改标题?我知道 tmux 中有类似的设置,但出于某种原因,在有多个垂直分割的 tmux 中,vim 滚动速度非常慢,所以我不得不放弃它(tmux)。欢迎提出好主意!
答案1
gnu screen 似乎没有办法关闭该功能(无论如何你都会有选择地应用它)。修复它的方法是修改 shell 和 vim 行为:
- bash shell 通常在
PROMPT_COMMAND
特殊变量中执行此操作。XTerm 标题操作方法有关于该主题的一般信息。将终端窗口的标题设置为当前目录问题也有有用的信息。 - vim 使用
title
模式/设置。如果您有,set notitle
那就.vimrc
足够了。
答案2
在 Centos 中,这个问题可以通过创建 /etc/sysconfig/bash-prompt-screen 来修复,它由默认的 /etc/bashrc 执行。如果你
touch /etc/sysconfig/bash-prompt-screen
chmod +x /etc/sysconfig/bash-prompt-screen
exec bash
然后它将执行,但它不执行任何操作(因为它是空的),并且从那时起就保留你的窗口标题。(请注意,执行 bash 以重新启动 bash 以在你当前的 shell 中触发此操作。)
hardstatus alwaysignore 对我来说没用
答案3
您说的“窗口”是什么?
Screen 以及 shell 和 vim 可能会向终端发送这些内容的术语转义代码。一些终端仿真器不太擅长捕捉所有这些代码,并且基本上会出错。但我已经很久没见过这种情况了。
使用 screen,您可以设置窗口的标题title <title>
并以编程方式设置它(通过绑定到键或特殊的 ESC 序列),无论您想要什么。最终,这些程序会向您的终端发出一个序列。您可以使用PROMPT_COMMAND
环境变量来动态更改它,例如,根据您的 cwd。这是我的,它显然是由我的系统的 /etc/bashrc 设置的
printf "\033]0;%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
为了使标题完全消失,你必须(至少)做三件事:
- 关闭除 1 个屏幕之外的所有屏幕,并在命令提示符下以及
~/.profile
之后/etc/bashrc
加载时取消设置 PROMPT_COMMAND。 - 使用屏幕的
title
命令。点击Ctrl-A
然后:
然后。您也title ""<CR>
可以设置它。.screenrc
从 shell 发送一个空序列:
printf "\033]0;\033\\"
如果有其他东西(如vim
)设置它,我们需要做进一步的研究。
在屏幕手册页中,有一节关于标题的部分,其中对此进行了详细讨论。
答案4
相关的是,我发现在设置我的窗口标题后(并确保 PROMPT_COMMAND 未设置并且我的 PS1 中没有任何异常),在某些系统上启动屏幕会导致我的窗口标题发生变化。经过大量的实验和挫折之后,我终于发现,通过从没有此问题的系统中获取屏幕包的安装文件 /etc/screenrc 并使用它来替换有问题的系统上的相同文件,它解决了我的问题。screen 现在不再改变我的窗口标题。现在确切的说,/etc/screenrc 中的哪一行或哪几行在起作用我不知道。两个 screenrc 之间的差异很大,所以我甚至懒得去侦查它。