면책 조항 : 나는 eshell을 사용하지 않으므로 소금 한알과 함께 섭취하십시오.
eshell
eshell-write-history
기록을 작성 하기 위해 호출 하는 것처럼 보이며 , append
기본값 은 선택적인 인수 입니다 nil
. 이 인수는 eshell
현재 사용되지 않는 것처럼 보이지만 작동하는 것으로 보입니다 (에 인수를 전달하여 write-region
제대로 추가합니다).
여기 몇 가지 옵션이 있습니다.
(setq eshell-save-history-on-exit nil)
eshell-write-history
너 자신에게 전화 해
eshell-write-history
요구 사항을 충족하도록 재정의 하십시오.
개인적으로 나는 1과 함께 갈 것입니다.
예로서:
(setq eshell-save-history-on-exit nil)
(defun eshell-append-history ()
"Call `eshell-write-history' with the `append' parameter set to `t'."
(when eshell-history-ring
(let ((newest-cmd-ring (make-ring 1)))
(ring-insert newest-cmd-ring (car (ring-elements eshell-history-ring)))
(let ((eshell-history-ring newest-cmd-ring))
(eshell-write-history eshell-history-file-name t)))))
(add-hook eshell-pre-command-hook #'eshell-append-history)
올바른 작동 eshell-append-history
기능을 위한 @ joseph-garvin 덕분에
이것은 새로운 히스토리 컨텐츠를 쉘에 동적으로로드하는 것을 처리하지 않습니다 (예 : X
쉘 A에서 명령 을 실행 하고 다시로드하지 않고 쉘 B에서 히스토리에 표시하는 것 (zsh의 SHARE_HISTORY 등)). 나는 얼마나 효율적인지 모른다 eshell-read-history
. 그래서 나는 그것을 훅으로 돌리는 것을 주저 할 것이다.
이 eshell-append-history
기능을 사용하면 중복 항목이 생길 수도 있습니다 . 에서 가장 최근 항목을 제외한 모든 shenanigans를 수행 eshell-history-ring
한 다음 기록을 작성한 후 이전 값으로 재설정해야 할 수도 있습니다.
예 :
(let ((old-ring (copy-list eshell-history-ring)))
(setq eshell-history-ring (list (car eshell-history-ring)))
; write
(setq eshell-history-ring old-ring))