如何在Bash中通过Oh-My-Posh显示当前命令历史编号
在Oh-My-Posh中显示当前历史编号
Oh-My-Posh没有直接对应Bash \! 的内置变量,但可以通过调用shell原生命令获取历史编号,再嵌入到提示符模板中。
针对Bash环境
在Bash里,当前历史编号可以通过读取HISTCMD变量(注意:HISTCMD表示下一条要执行的命令的历史编号,需减1),或者解析history命令输出来获取。你可以在Oh-My-Posh配置模板中用{{ exec "<命令>" }}语法嵌入:
- 方法1:使用
HISTCMD变量
{{ exec "echo $((HISTCMD - 1))" }}
- 方法2:解析
history命令输出
{{ exec "history 1 | awk '{print $1}'" }}
将该片段加入你的提示符模板即可,示例配置片段:
{ "type": "text", "style": "plain", "foreground": "#ffffff", "background": "#333333", "template": "{{ exec \"echo $((HISTCMD - 1))\" }} > " }
针对Zsh环境
Zsh中HISTCMD直接对应当前命令的历史编号,无需调整,直接调用即可:
{{ exec "echo $HISTCMD" }}
注意事项
- 确保Oh-My-Posh默认允许执行外部命令(默认开启)。
- 不同shell的历史机制有差异,需根据你使用的shell调整对应命令。
内容的提问来源于stack exchange,提问作者Richard Povinelli
相关产品推荐
相关产品推荐

