2014-06-22 2 views
2

Emacs를 사용하면서 쉘이 필요할 때가 있습니다. 최근에, 나는 플랫폼에 관계없이 같은 명령을 사용할 수 있도록, eshellshell에서 전환을 시도하고있다. 내가하고 싶은 첫 번째 것들 중eshell 프롬프트에 리턴 코드와 명령 번호를 어떻게 넣을 수 있습니까?

하나는 내 bash 프롬프트에 맞게 내 프롬프트를 사용자 정의하는 것입니다. 이렇게하려면 eshell-prompt-function을 사용자 지정하고 있습니다. 내가 누락 된 유일한 것은 현재 명령 수와 마지막 리턴 코드입니다. bash에서 PS1으로 설정하여이 작업을 수행 할 수 있습니다. \!$?입니다. 나는 후자에 대해 이미 (eshell/echo "$?")을 시도했지만 작동하지 않는다 (eshell에서 수동으로 명령을 실행하면 작동 함).

편집 :
501는 현재 명령 번호를 (I 명령을 입력하고 Enter을 치면 그래서 502 표시됩니다)입니다 [~][501:0],처럼 내 현재 bash 프롬프트 외모의 어떤 부분의 예, 그리고 0이 리턴 코드입니다.

+1

[이] (http://stackoverflow.com/a/12098095/3076724) 난 당신이 뭘 하려는지 너무 조금 혼란, 이맥스를 사용하지 않는하지만, 도움이 될 수 있습니다. PS1이 어떻게 나타나길 원하는지에 대한 예를 포함시킬 수 있습니까? – BroSlow

+0

예를 추가하여 편집했습니다. 내가 기회를 얻을 때 첫눈에이 bash''에 주로 적용 나타납니다하지만 나는 조금 나중에 자세히 링크를 살펴, 그래서 나는 eshell''내 스위치 나에게 도움이 될 것입니다 확실하지 않다 . –

답변

3

이이 eshell 프롬프트로 리턴 코드를 넣습니다 : eshell이 ​​보이기 때문에

(setq eshell-prompt-function 
     (lambda() 
     (format "[%s][%s] " 
       (abbreviate-file-name (eshell/pwd)) 
       eshell-last-command-status))) 

내가으로 최신 명령 번호를 넣어 어떤 간단한 방법을 찾을 수 없습니다 프롬프트를-하며, 유용한 것보다 작을 수 있습니다 명령 기록에 링을 사용하기 때문에 어떤 시점에서 카운터가 128에서 멈추고 모든 이전 프롬프트가 정확하지 않게됩니다.

과 일치하도록 eshell-prompt-regexp을 업데이트해야합니다.

+1

개수 : 변수 my-eshell-command-count 및이를 증가시키는 함수를 정의하십시오. 그 후크를 eshell-after-prompt-hook 목록에 추가하고 프롬프트 기능에 구현하십시오. 여기에 내 프롬프트가 있습니다 : http://i.imgur.com/VSiFDDX.png –

+1

굉장, 그 작품, 고마워! @JordonBiondo, 그런 커맨드 카운터를 만드는 elisp 있나요? 그렇지 않다면, 나는 어느 시점에서 직접 구현하려고 할 수도 있으며, 내가 할 때 여기에 다시 게시 할 것입니다. –

+1

https://gist.github.com/jordonbiondo/c2926d178d1a1d322267 –