emacs 쉘을 사용하는 동안 쉘을 지우는 명령
emacs에서 쉘을 사용하는 동안 쉘을 지우는 내장 명령이 있습니까?
그렇지 않은 경우 동일한 작업을 수행하는 elisp 함수가 있습니까?
2015 년 2 월 업데이트
이제 Emacs (버전 25+)에는 기본적으로 comint-clear-buffer
바인딩 된 명령이 있으며 C-c M-o
여기에서 필요한 작업을 수행하며 아마도 원래 아래에 게시 한 답변보다 낫습니다.
고려할 옵션 :
C-l
버퍼를 최근에 넣습니다. 반복적으로 누르면 버퍼가 순환하므로 해당 포인트가 버퍼의 상단, 중간 또는 하단에 나타납니다. 상단에서 멈 추면 버퍼가 지워진 것처럼 보이지만 모든 텍스트는 여전히 표시되지 않습니다.C-x h
전체 버퍼를 표시 한 후이를C-w
죽입니다. 이것은 마지막 프롬프트도 죽이지 만 다음 명령을 입력하면 프롬프트가 다시 표시됩니다.erase-buffer
기본적으로 키에 바인딩되지 않은을 사용할 수도 있지만 쉽게 수행 할 수 있습니다 (사용할 수도 있습니다M-x erase-buffer
:
(defun my-shell-hook ()
(local-set-key "\C-cl" 'erase-buffer))
(add-hook 'shell-mode-hook 'my-shell-hook)
그것은 그것을 묶는다 C-c l
; 원하는 것을 선택할 수 있습니다.
- 지운 후 프롬프트를 다시 만드는 빠른 수정이 가능합니다.
(defun my-clear ()
(interactive)
(erase-buffer)
(comint-send-input))
(defun my-shell-hook ()
(local-set-key "\C-cl" 'my-clear))
(add-hook 'shell-mode-hook 'my-shell-hook)
한동안 emacs를 사용한 후에는 영역을 표시하고 죽이는 것이 자연스러워 지므로 첫 번째 옵션으로 충분할 것입니다. 그렇지 않은 경우 마지막 옵션이 원하는 항목에 가장 가깝습니다.
편집 : 방금 emacs wiki에서 이것을 찾았습니다. 내 옵션 4보다 낫습니다.
(defun my-clear ()
(interactive)
(let ((comint-buffer-maximum-size 0))
(comint-truncate-buffer)))
여기에 제안 된 대부분의 솔루션은 EShell 모드 에서 작동하지 않습니다 !
EShell 모드 버퍼는 읽기 전용이므로 kill 및 erase 명령이 작동하지 않습니다.
당신이 보통 사용하려면 Ctrl- Leshell 터미널 취소, 당신이 추가 .init
파일 :
(defun eshell-clear-buffer ()
"Clear terminal"
(interactive)
(let ((inhibit-read-only t))
(erase-buffer)
(eshell-send-input)))
(add-hook 'eshell-mode-hook
'(lambda()
(local-set-key (kbd "C-l") 'eshell-clear-buffer)))
Note: To better emulate the standard Ctrl-L, after clearing the buffer, the command will restore the initial prompt.
With your point in the *shell*
buffer, run:
C-c M-o
or
M-x comint-clear-buffer
NOTE: This also works in *Python*
shell, but doesn't seem to work in *eshell*
.
AFAIK you can't clear when you start as M-x shell but if you do M-x term you get a fully functional terminal where clear works as intended. I may be wrong on this though but personally I use M-x term now since it is fully functioning.
If you find, you can't use erase-buffer and shows text is read only. You can use following replace function.
(defun eshell/clear ()
"Hi, you will clear the eshell buffer."
(interactive)
(let ((inhibit-read-only t))
(erase-buffer)
(message "erase eshell buffer")))
Or... you can truncate the buffer.
(let ((eshell-buffer-maximum-lines 0)) (eshell-truncate-buffer))
참고URL : https://stackoverflow.com/questions/7733668/command-to-clear-shell-while-using-emacs-shell
'program tip' 카테고리의 다른 글
Python unittest.TestCase 실행 순서 (0) | 2020.11.14 |
---|---|
기본 URL은 어떻게 얻습니까? (0) | 2020.11.14 |
배열 이름없이 JSONArray를 가져 오시겠습니까? (0) | 2020.11.14 |
jquery 입력 기본값 지우기 (0) | 2020.11.14 |
WebApi 컨트롤러에서 HttpContent 읽기 (0) | 2020.11.14 |