如何阻止 emacs 在 shell 中突出显示鼠标下方的行

How do I stop emacs from highlighting the line under the mouse in shell

在 emacs shell 中,使用 M-x shell 调用,光标下的输入行被突出显示,因此您可以 "mouse 2: insert after prompt as new input" 重复命令。我不想像在常规终端中那样激活它,只在鼠标下显示 select 文本,然后单击鼠标中键插入(我知道我可以在 emacs 中执行此操作,但我没有得到任何视觉反馈直到我停止鼠标 selection).

有什么办法吗?我已经做了很多搜索,但找不到任何东西。

您没有指定 Emacs 的版本,我在我的 Emacs 中没有看到为什么我键入 M-x shell 的行为。然而,一点谷歌搜索发现了这个:

(setq comint-highlight-input nil)

您可以在 ~/.emacs 中进行设置。

这个变量在 GNU Emacs 25 中不存在,即使在这种情况下有对特定面孔(突出显示)的引用。这要么只是该功能可用时的回忆,要么实际上是通过另一个软件包启用的。您可以通过使用“-Q”选项启动 emacs 并首先启动 shell 进行测试,如果没有出现该行为,则与您的启动配置相关或您在启动 shell.

上面提到变量的post可以看这里:

https://stat.ethz.ch/pipermail/ess-help/2002-August/001134.html

该消息来自 this function in comint.el

comint-use-prompt-regexp 设置为非零值应该可以满足您的要求。

一个好的解决方案可能是这样的(将以下内容放在初始化的某处;正则表达式取自 comint-prompt-regexp 文档字符串):

(add-hook 'shell-mode-hook
          (lambda ()
            (set (make-local-variable 'comint-use-prompt-regexp) t)
            (set (make-local-variable 'comint-prompt-regexp) "^[^#$%>\n]*[#$%>] *")))