如何防止Emacs复制shell命令?

时间:2018-02-17 10:58:51

标签: bash shell emacs

我总是使用Emacs的shell。我创建了2个缓冲区(C-x 2),并使用其中一个作为终端(M-x shell)。

有时我会多次使用命令(例如python3 test.py)。我使用快捷方式<C-up>重复上一个命令。 Emacs保存重复的命令非常不方便。我必须按<C-up>多次才能运行任何其他命令。

问题仅出现在Emacs的shell中。我在HISTCONTROL=ignoreboth中设置了.bashrc,在通常的终端中,它的效果非常好。

是否可以配置Emacs以便忽略重复项?

2 个答案:

答案 0 :(得分:4)

可自定义

(setq comint-input-ignoredups t)

答案 1 :(得分:2)

按照JürgenHötzel的建议设置'comint-input-ignoredups'当然会立即解决,但这里有一些替代方案。

您可以选择使用命令'ansi-term'而不是'shell',这将运行bash(或您选择的任何内容),因此您可以获得与(例如)xterm相同的控制。作为额外的奖励,您还可以获得一个相当强大的终端,因此依赖于此的应用程序将起作用。

另一种可能性,如果你有想要重复运行的东西,就是使用'compile'命令。这可以运行任何shell命令,它不必是编译器。这里的优点是您可以将测试的运行保持在shell命令历史记录之外(无论您如何运行shell),并将输出放在单独的缓冲区中。如果输出适当组织和/或编译缓冲区已适当配置,您还可以使用'next-error'命令跳回源的相应部分。

最后,我想提一下'shell'命令支持搜索命令历史记录。它默认绑定到M-r(comint-history-isearch-backward-regexp)。