Emacs M-x shell和重写bash键盘绑定

时间:2011-07-21 17:54:53

标签: bash emacs

如果我理解正确,当在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中输入新命令,窗口就会再次滚动到原来的位置。

由于

2 个答案:

答案 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))))