Emacs용 eshell-prompt-function을 사용자 정의할 때 기능 손실

Emacs용 eshell-prompt-function을 사용자 정의할 때 기능 손실

화면 공간을 많이 차지하기 때문에 명령줄에서 하는 것처럼 eshell 프롬프트에서 현재 작업 디렉터리를 표시하지 않으려고 했습니다. i를 사용하여 C-h v기본값이 다음과 같은지 확인합니다.

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.

관련 정보