如何在其中输入递归编辑模式和中止命令?

时间:2014-08-24 01:20:56

标签: emacs

我曾经有信心只需按 Cg 一次从迷你缓冲区返回缓冲区,直到我了解到Emacs Here中有“递归编辑模式”,这似乎使取消行动不一致。因此,我正在阅读整个部分,希望找到一个更一致/无状态的命令来返回迷你缓冲区。

但是,在关注并尝试复制手册所说的内容时,我遇到了以下问题:

  1. 进入递归编辑模式:在“M-x查询 - 替换RET C-r”之后(在Fundamental-mode中),我无法在模式行中复制“一对方括号”。但是,现在我必须按C-g TWICE返回缓冲区 问题:recursive-edit-mode现在还有方括号吗? (我使用的是ver 24.3)
  2. 退出:手册将我引导至Quitting部分以退出命令。它说使用 C - ] (abort-recursive-edit)中止用于退出递归编辑级别并取消调用它的命令。所以我在“M-x查询 - 替换RET C-r”中试了一下,希望有一个C-]让我从迷你缓冲区到缓冲区,但它仍需要2次射击才能做到这一点。
    问题:这是正常的吗?如果是,那么任何其他命令可以保证命令中止并返回缓冲区,执行1次?
  3. 只想刷常用的命令,例如C-g。如果保持一致,它可能有助于避免迷你缓冲区由于内部递归编辑模式而被吃掉(有时不被注意)。 每次在缓冲区内部视觉确认点使键盘输入成为闭环反馈过程,因此会引起更多关注。

1 个答案:

答案 0 :(得分:2)

  1. 您肯定会在模式行中看到方括号以进行递归编辑 - 但不适用于递归迷你缓冲区。

  2. C-g确实行为一致,但它在不同的上下文中做了不同的事情(但对于给定的上下文,它总是相同的事情)。这可能令人困惑。可能需要一些时间来习惯 - 有点像在Isearch期间习惯C-g的各种行为,具体取决于当前的搜索状态。

  3. 如果您使用递归编辑或递归迷你缓冲区,那么您需要注意当前状态/上下文的线索。再次,这就像学习Isearch一样。 minibuffer-depth-indicate-mode是必须的,以提供有关您所处州的反馈。

  4. FWIW,超过minibuffer-depth-indicate-mode,我使用独立的迷你缓冲框架,并且每次递归编辑或递归迷你缓冲区时,背景色调会稍微改变,以更好地指示级别等。(背景颜色稍有变化)也适用于(a)有效迷你缓冲和(b)Isearch。我使用库oneonone.el来处理这些事情。)

  5. 如果您不使用独立的迷你缓冲框架,那么您可以考虑在模式行中突出显示方括号或其他内容,以帮助您了解自己的位置。

  6. 查询替换期间的
  7. C-r是递归编辑有用的一个很好的例子。还有其他几个。但一般来说,我没有太多使用递归编辑,FWIW。 (但是,我确实使用了递归的迷你缓冲区,因为我使用了迷你缓冲区中的键,这些键会调用自己可能提示输入的命令等。)

  8. 关于query-replaceC-r的问题:这里根本没有涉及迷你缓冲区。 C-]之后的C-r不仅会结束递归编辑,还会结束查询替换(而C-M-c会结束递归编辑并返回查询替换。

  9. FWIW - 在Icicles次互动中,您可能会发现自己处于任意数量的递归迷你缓冲区中。 (例如,您可以使用progressive completion连续缩小完成候选集,并且每个缩小都会打开一个递归的迷你缓冲区。)

  10. C-g总是中止当前命令,如果没有,那么当前的迷你缓冲区,C-]总是中止当前的迷你缓冲区。重复C-g(或C-])会弹出迷你缓冲链,一次一个级别。但是(在冰柱中)您可以使用C-M-S-t(又名C-M-T)直接弹回到顶层(退出所有迷你版)。

  11. 同样,回答一个迷你缓冲提示(例如,在RET中对候选人点击mouse-2或使用*Completions*)退出当前的迷你缓冲区,弹出一个级别(向父级迷你缓冲区或顶级(如果没有))。 (在冰柱 RET中可以选择让您回到顶层。)