使用Emacs时我经常需要shell。最近,我一直在尝试从shell
切换到eshell
,这样无论平台如何,我都可以使用相同的命令。
我想要做的第一件事就是自定义我的提示以匹配我的bash
提示符。为此,我正在自定义eshell-prompt-function
。我唯一缺少的是当前命令计数和最后一个返回码。我可以通过将bash
设置为PS1
来\!
执行此操作。分别为$?
和(eshell/echo "$?")
。我已经为后者尝试了bash
,但它不起作用(尽管如果我在eshell中手动执行命令它可以工作)。
修改
我当前[~][501:0]
提示的哪一部分的示例是501
,其中Enter
是当前命令编号(因此,如果我键入命令并点击502
,它将会显示0
),{{1}}是返回码。
答案 0 :(得分:3)
这会将返回代码放入eshell提示符中:
(setq eshell-prompt-function
(lambda ()
(format "[%s][%s] "
(abbreviate-file-name (eshell/pwd))
eshell-last-command-status)))
我无法找到任何简单的方法将最新的命令编号放入提示中 - 它可能不太有用,因为eshell似乎使用环来命令历史记录,因此在某些时候计数器将是卡在128,之前的所有提示都是不准确的。
请注意,您还应该更新eshell-prompt-regexp
以匹配eshell-prompt-function
可能出现的任何内容。