我如何自定义 的提示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
返回的内容,否则您会遇到类似陈宮廷在上面的评论中。