我总是使用Emacs的shell。我创建了2个缓冲区(C-x 2
),并使用其中一个作为终端(M-x shell
)。
有时我会多次使用命令(例如python3
test.py
)。我使用快捷方式<C-up>
重复上一个命令。 Emacs保存重复的命令非常不方便。我必须按<C-up>
多次才能运行任何其他命令。
问题仅出现在Emacs的shell中。我在HISTCONTROL=ignoreboth
中设置了.bashrc
,在通常的终端中,它的效果非常好。
是否可以配置Emacs以便忽略重复项?
答案 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)。