【问题标题】:Is there any way to automatically close filename completetion buffers in Emacs?有没有办法在 Emacs 中自动关闭文件名完成缓冲区?
【发布时间】:2010-01-03 20:45:19
【问题描述】:

例如,当您通过 C-x-C-f 打开一个文件时,您可以使用 TAB 完成文件名,如果有多个可能的完成,它将弹出一个完成缓冲区,其中包含可能的完成列表。问题是,打开文件后,缓冲区所在的窗口会切换回正常状态,但不会关闭。有什么办法可以让这些缓冲区在文件打开后自动关闭?

【问题讨论】:

  • 你的意思是你想在使用后完全“杀死” * Completions * 缓冲区(而不是仅仅“隐藏”它的默认行为)?
  • 窗口配置切换回你尝试完成之前的状态(在 Cx Cf 上,对于普通的 emacs (emacs -q)。你能提供更多细节吗?是 Cx Cf kbd> 可能没有绑定到find-file

标签: emacs elisp


【解决方案1】:

很抱歉我来晚了,但我就是这样做的:

;; Remove completion buffer when done
(add-hook 'minibuffer-exit-hook 
      '(lambda ()
         (let ((buffer "*Completions*"))
           (and (get-buffer buffer)
            (kill-buffer buffer)))))

在 GNU Emacs 22.x 和 23.x 上测试

【讨论】:

    【解决方案2】:

    虽然它不能直接解决您的问题,您是否考虑过ido-mode 作为打开文件的机制?

    ido-modeC-x C-f 绑定到ido-find-file 这允许您以交互方式打开文件(从迷你缓冲区C-s 和其他各种漂亮功能中选择名称冲突)我发现它是一种更容易查找文件的方法它将完全摆脱*Completions* 缓冲区。

    【讨论】:

    • 谢谢。我会检查一下。
    • 除了这里描述的用途之外,它还有许多其他用途,并且默认情况下是 emacs 的一部分(我认为是从版本 22 开始)。您阅读它的功能越多,您可能就越喜欢它。
    猜你喜欢
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 2012-05-17
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多