1

my .emacs以下をファイルに入れてみました。

(defun clear-shell ()
   (interactive)
   (let ((old-max comint-buffer-maximum-size))
     (setq comint-buffer-maximum-size 0)
     (comint-truncate-buffer)
     (setq comint-buffer-maximum-size old-max))) 
(global-set-key (kbd "\C-x c") 'clear-shell)

それは機能しましたが、以前に入力したすべてのコマンドも削除されました。だから、それは私が望むものではありません。現在のプロンプト > をバッファーの先頭に置き、以前に入力したコマンドを削除したくないだけです。

誰か知っていますか?

4

3 に答える 3

2

私にとってはうまくいくEsc-0 Ctr-lようです。

`Ctrl-h k' の出力は次のとおりです。

C-l runs the command recenter-top-bottom,
which is an interactive compiled Lisp function in window.el'.

Emacsマニュアルのこのページによると:

Scroll the selected window so the current line is the 
center-most text line; on subsequent consecutive invocations,
make the current line the top line, the bottom line, and so on in
cyclic order. Possibly redisplay the screen too (recenter-top-bottom). 
于 2013-01-13T08:45:58.957 に答える
0

これは仕事を成し遂げたようです(これがあなたが求めているものであるかどうかは実際にはわかりませんが):

(defun clean-shell ()
 (interactive)

 ; if you call this from your .r script, it will switch to the next window
 (when (eq major-mode 'ess-mode) (other-window 1))   

 (mark-whole-buffer)
 (exchange-point-and-mark)
 (move-beginning-of-line 1)
 (delete-region (region-beginning) (region-end))
 (end-of-line)
)

編集:または多分これ?

(defun clean-shell ()
 (interactive)
 (when (eq major-mode 'ess-mode) (other-window 1))
 (mark-whole-buffer)
 (exchange-point-and-mark)
 (move-beginning-of-line 0)
 (delete-region (region-beginning) (region-end))
 (end-of-line)
)
于 2013-01-13T10:43:05.990 に答える
0

何が問題になっていC-l C-lますか?どのバッファでも機能します。

于 2013-01-14T10:53:10.593 に答える