为 emacs 定制 eshell-prompt-function 时丢失功能

为 emacs 定制 eshell-prompt-function 时丢失功能

我想像在命令行中一样在 eshell 提示符中隐藏当前工作目录,因为它占用了大量的屏幕空间。使用C-h vi 检查默认值是否为:

Value:
(lambda nil
  (concat
   (eshell/pwd)
   (if
       (=
        (user-uid)
        0)
       " # " " $ ")))

我尝试在我的中将其更改为.emacs

(setq eshell-prompt-function
      (lambda () "> "))

但是当我执行上述操作时,某些键会失效。例如,我无法再使用它们M-p来浏览以前的命令,并且C-c C-a不会像默认提示符那样将指针设置为我输入的命令的开头。我想知道为什么会发生这种情况,是否有解决方法?

谢谢

答案1

eshell-bol 使用 eshell-skip-prompt 函数绕过提示。由于您已将提示更改为以 > 而不是 $ 结尾,因此您需要更改 eshell-prompt-regexp 的值。将其更改为^>应该可以使其正常工作。

eshell-prompt-regexp is a variable defined in `em-prompt.el'.
Its value is "^[^#$
]* [#$] "

Documentation:
A regexp which fully matches your eshell prompt.
This setting is important, since it affects how eshell will interpret
the lines that are passed to it.
If this variable is changed, all Eshell buffers must be exited and
re-entered for it to take effect.

You can customize this variable.

相关内容