自定义终端命令提示符样式

前言

每天都在使用终端,对终端的命令提示符却知之甚少,今天才知道原来命令提示符自定义这么简单。

什么是命令提示符呢?就是终端上 $ 前面那一串用户名、主机名、当前工作路径之类的信息,类似于 user@host ~ $

起因是这样的,一直在使用 oh-my-zsh,主题设置成了随机,每次进入终端命令提示符的样式都不一样,有时候在很深的目录层级下,主题配置的命令提示符 $ 后又没有换行,就会导致每次输入命令在靠近屏幕中央或者右侧的位置,输出又是换行后左对齐输出,看的时候很不方便,于是就学习了一下设置的方法。

变量

先放几个主要的变量。

  • %n 当前用户名
  • %m 主机名
  • %~ 当前工作路径,如果是 home 则表示为 ~
  • %D 当前日期,格式为 yy-mm-dd
  • %T 24h 格式的当前时间,格式为 hh:mm

详细配置

对应的环境变量是 PROMPT,如果是使用 zsh 的话,就配置在 ~/.zshrc 中。

先来一个基础版本,显示用户名、主机名和工作路径:

1
PROMPT='%n@%m %~'

显示效果如下:
终端截图

适当添加空格、$ 和换行,让它看起来更舒适一些:

1
2
PROMPT='%n@%m %~ 
$ '

效果如下:
终端截图

当然,想把 $ 换成其他符号也是可以的,比如这里我换成一个 ^_^||

1
2
PROMPT='%n@%m %~
^_^|| '

效果如下:
终端截图

汉字也是可以正常显示的:

1
2
PROMPT='%n@%m %~
^_^|| 平安喜乐: '

效果如下:
终端截图

使用 %U 添加下划线,使用 %u 结束下划线内容,样式类的指令都是成对使用,大写字母开始、小写字母结束,和 html 标签一样,比如要给用户名添加下划线:

1
2
PROMPT='%U%n%u@%m %~
^_^|| 平安喜乐: '

效果如下:
终端截图

使用 %S 突出显示,比如要突出显示用户名:

1
2
PROMPT='%S%U%n%u%s@%m %~
^_^|| 平安喜乐: '

效果如下:
终端截图

这里显示的是默认颜色,如果要指定颜色,使用 %F{颜色值} ,这里的颜色值既可以是 213 这种 8 位颜色值,也可以是 #00FF00 这种十六进制的颜色值。

比如自定义一下用户名、主机名和工作路径的颜色,顺便把日期和时间也加上:

1
2
PROMPT='%S%F{#A7BC97}%U%n%u@%m %f%s%S%F{#E1DCA8}%~ %f%s%S%F{#94A9C3}%D %T %f%s
^_^|| 平安喜乐: '

分开看更清楚:
%S%F{#A7BC97}%U%n%u@%m %f%s 这段是 user@host ,后面加了一个空格,%S %s 之间的内容突出显示,颜色取二者之间的 %F 定义的颜色,%f 结束颜色样式。
%S%F{#E1DCA8}%~ %f%s 这段是工作路径,其他类似。
%S%F{#94A9C3}%D %T %f%s 其中 %D 是日期,%T 是 24h hh:mm 格式的时间。

效果如下:
终端截图

至此,配置完成。