开发者

Emacs M-x shell and the overriding of bash keyboard bindings

开发者 https://www.devze.com 2023-03-22 05:15 出处:网络
If I understand correctly, when running bash under M-x shell, Emacs overrides some of the bash keyboard bindings, and can make some bash commands and features not work as in \"native bash\" (for an ex

If I understand correctly, when running bash under M-x shell, Emacs overrides some of the bash keyboard bindings, and can make some bash commands and features not work as in "native bash" (for an example see this thread)

One of the commands that I use frequently in bash is clear-screen (bounded to Ctrl-l by default ).

Is there an easy way of ask开发者_JAVA技巧ing Emacs to reproduce the same behavior in shell-mode so that I can clear my bash screen within Emacs?

I know I can always use M-x term to get a real terminal, but I would like to work out a solution for M-x shell

EDIT: When I type C-l C-l, Emacs moves the current line to the top of the window, but as soon as I enter a new command in bash, the window is scrolled again to the original position.

Thanks


Just type M-> to go to the bottom of the buffer (if necessary), then C-l C-l to move the current line to the top of the window. It looks as if you've cleared your screen, but all of the content that would have been erased is still present above the top of the window.

EDIT:

To keep Emacs from scrolling the window as you described, put this in your .emacs file:

(remove-hook 'comint-output-filter-functions
             'comint-postoutput-scroll-to-bottom)

I found that behavior irritating as well.


You could re-bind C-l in shell mode to make it function in the manner you want:

(define-key shell-mode-map (kbd "C-l")
  (lambda ()
    (interactive)
    (previous-line)
    (end-of-line)
    (let ((start (point))
          (end (goto-char (point-min))))
      (delete-region start end)
      (kill-line)
      (end-of-buffer))))
0

精彩评论

暂无评论...
验证码 换一张
取 消