【问题标题】:How to prevent Emacs from duplicating shell commands?如何防止 Emacs 重复 shell 命令?
【发布时间】:2018-02-17 10:58:51
【问题描述】:

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

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

问题只出在 Emacs 的 shell 中。我在.bashrc 中设置了HISTCONTROL=ignoreboth,在通常的终端中它工作得很好。

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

【问题讨论】:

  • 签出 M-r (ALT+r) 以通过搜索快速查找上一条命令

标签: bash shell emacs


【解决方案1】:

它是可定制的

(setq comint-input-ignoredups t)

【讨论】:

  • 非常感谢!
【解决方案2】:

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

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

另一种可能性是,如果您想重复运行某些内容,则使用“编译”命令。这可以运行任何 shell 命令,它不必是编译器。此处的优点是您可以将测试的运行排除在 shell 命令历史记录之外(无论您如何运行 shell),并且您可以在单独的缓冲区中获得输出。如果输出组织得当和/或编译缓冲区配置得当,您还可以使用“next-error”命令跳回到源代码的适当部分。

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

【讨论】:

  • 也很有趣。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
相关资源
最近更新 更多