如果我理解正确,当在M-x shell
下运行bash时,Emacs会覆盖一些bash键盘绑定,并且可以使一些bash命令和功能不像“native bash”那样工作(例如参见{{ 3}}线程)
我在bash中经常使用的一个命令是this(默认情况下限制为Ctrl-l
)。
是否有一种简单的方法可以让Emacs在shell-mode
中重现相同的行为,以便我可以在Emacs中清除我的bash屏幕?
我知道我总是可以使用M-x term
来获得真正的终端,但我想为M-x shell
找出解决方案
编辑:当我输入C-l C-l
时,Emacs会将当前行移动到窗口顶部,但只要我在bash中输入新命令,窗口就会再次滚动到原来的位置。
由于
答案 0 :(得分:6)
只需输入 M-> 即可转至缓冲区底部(如有必要),然后 Cl Cl 将当前行移至窗口顶部。看起来您已经清除了屏幕,但是所有已经删除的内容仍然存在于窗口顶部之上。
编辑:
为了防止Emacs按照您的描述滚动窗口,请将其放在.emacs
文件中:
(remove-hook 'comint-output-filter-functions
'comint-postoutput-scroll-to-bottom)
我发现这种行为也很刺激。
答案 1 :(得分:1)
您可以在shell模式下重新绑定 C-l ,使其以您想要的方式运行:
(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))))