网络上有很多关于这个的问题,但我能找到的有两个共同点之一:
- 他们给出了手动解决方案,它只打印当前正在运行的程序(没有参数)
- 使用 zsh preexec 功能(虽然我不确定它如何与屏幕交互)。我正在寻找 Bash 解决方案。
如何让我的屏幕标题显示整个命令运行,例如,如果我运行 3 个长时间运行的 Python 脚本,我也可以在标题中看到脚本名称?对于奖励积分,如果我能让它继续显示最后一次运行的命令,那就更好了。
我目前的设置:
- 出口
PROMPT_COMMAND='/bin/echo -ne "\033k\033\0134"'
PS1
以。。结束>
shelltitle ">|bash"
我试过了:
\033k
在和之间添加东西\033
- 用${BASH_COMMAND}
- 使用陷阱调试设置外部附加标题,因为对于没有屏幕的 XTERM,我知道解决方案。这与
PS1
.
以及上述的变体。我想要一个通过屏幕的解决方案,所以窗口标题和屏幕窗口列表都显示完整的命令。
作为奖励,如果 Screen 可以与 Vim 很好地交互,我会非常喜欢它,因此可以更改缓冲区/打开新文件/等。将在屏幕标题中动态更新。
一年后,这是我的解决方案,使用陷阱。这将显示主机名、正确
PWD
和命令(如果在屏幕上,还会显示屏幕内容)。set_screen_window
这很容易在下面定制。一切都应该放在你的.bashrc
.首先是一些辅助函数来检查我是否打开
screen
:建设指挥的肉,靠的就是有用的
BASH_COMMAND
。我为fg
(例如显示原始命令)和cd
(获取真实目录)做了一些自定义的东西:现在用我的字符串初始化终端头
ready
,并捕获错误和调试以更新终端窗口:最后,在
.vimrc
我们有vim
特定的东西:在这里
Filename
可以定制以获得自己的标题风格。autocmd
确保在缓冲区、窗口等之间移动时重新加载内容。在我的示例中,是一个可用于在存储库中编辑文件时生成(如您所料)分支名称gitbranch
的插件。git
PROMPT_COMMAND='/bin/echo -ne "\033k\033\0134"'
与in.bashrc
一起使用shelltitle '$ |bash'
对.screenrc
我来说很好。使用这个特定PROMPT_COMMAND
的东西会破坏我的 PS1,所以我还添加了以下内容.bashrc
:附上示例图片 - 在窗口 0 中运行睡眠,在窗口 1 中查找,在窗口 2 中观看,在窗口 3 中执行 ping,在窗口 4 中执行 bash。