如何自定义 eshell 提示符?

如何自定义 eshell 提示符?

我如何自定义 的提示eshell?具体来说,如何防止它显示完整的当前路径?

答案1

您可以在以下位置找到许多自定义提示的可能性emacs 维基

在以下示例中,仅显示路径的最后三个目录名,开头的目录将缩短为一个字母:

(setq eshell-prompt-function
      (lambda()
        (concat (getenv "USER") "@" (getenv "HOST") ":"
                ((lambda (p-lst)
                   (if (> (length p-lst) 3)
                       (concat
                        (mapconcat (lambda (elm) (substring elm 0 1))
                                   (butlast p-lst (- (length p-lst) 3))
                                   "/")
                        "/"
                        (mapconcat (lambda (elm) elm)
                                   (last p-lst (- (length p-lst) 3))
                                   "/"))
                     (mapconcat (lambda (elm) elm)
                                p-lst
                                "/")))
                 (split-string (eshell/pwd) "/"))
                (if (= (user-uid) 0) " # " " $ "))))

答案2

您还必须设置eshell-prompt-regexp匹配eshell-prompt-function返回的内容,否则您会遇到类似陈宮廷在上面的评论中。

相关内容