2

我在使用 Emacs 时经常需要一个 shell。最近,我一直在尝试从 切换shelleshell,这样无论平台如何,我都可以使用相同的命令。

我想做的第一件事就是自定义我的提示以匹配我的bash提示。为此,我正在自定义eshell-prompt-function. 我唯一仍然缺少的是当前命令计数和最后一个返回码。我可以bash通过分别设置PS1为例如\!和来做到这一点$?。我已经尝试(eshell/echo "$?")过后者,但它不起作用(尽管如果我在 eshell 中手动执行命令它会起作用)。

编辑:我当前提示
的一部分的示例是 ,当前命令号在哪里(因此,如果我键入命令并点击它将显示),并且是返回码。bash[~][501:0]501Enter5020

4

1 回答 1

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

于 2014-06-23T09:52:19.257 回答