如何配置Powerline在本地Shell提示符中显示主机名
你改了only_if_ssh: false仍不生效,是因为默认shell主题的主机名段除了这个参数,还有两层判定逻辑没处理,按下面步骤配就行:
配置步骤
- 不要改系统全局路径下的powerline文件,优先改用户目录下的配置:shell对应的主题文件路径是
~/.config/powerline/themes/shell/default.json,如果你之前启用了自定义主题,就改对应自定义主题的文件就行。 - 先找配置里的
hostname段,很多默认配置会把这个段整个放在仅SSH环境触发的条件块里,这种情况下你改段内的参数根本不会生效,得把这个段移到外层,和用户名、当前工作目录这些常驻显示的段放在同一层级。 - 调整主机名段的参数,删掉多余的条件判定字段,按下面的内容写就可以:
{ "function": "powerline.segments.common.net.hostname", "priority": 10, "args": { "only_if_ssh": false, "show_full": false } }
把priority设成10,是为了避免终端宽度不足的时候主机名被优先隐藏,刚好匹配你要始终显示的需求。
- 保存配置之后执行
powerline-daemon --replace重载powerline的后台服务,新开bash或者fish终端就能看到本地提示符里的主机名了。
踩坑排查
- tmux用的powerline主题和shell主题是两套完全独立的配置,tmux能正常显示主机名,是因为tmux主题默认没加SSH环境的判定限制,和shell的配置互不影响,别搞混。
- 如果改完还是不显示,执行
powerline-config shell listerrors查下配置报错,JSON少写逗号、括号不匹配是最常见的问题。 - 别去改
/usr/share/powerline/下面的全局默认配置,用户目录下的配置优先级比全局高,你改了全局也会被用户配置覆盖,而且后续系统更新包的时候会直接把全局配置重置,白改。
内容的提问来源于stack exchange,提问作者Swarnendu Biswas
相关产品推荐
相关产品推荐

