在 GNU Emacs 中使用 switch-to-buffer 时如何防止打开新缓冲区
How to prevent opening a new buffer when using switch-to-buffer in GNU Emacs
Switch-to-buffer 是绑定到 C-x b 的函数。有时我会错误输入我打算切换到的缓冲区,这会导致我打开一个名称不正确的新缓冲区。首选行为(在我的例子中)是无法打开缓冲区......可能无法完成缓冲区名称。我记得几年前遇到过一种不允许切换到缓冲区以打开新缓冲区的技术。也许 Whosebug 上的某个人可以识别该技术?
谢谢!
设置jmp
我想你想自定义 confirm-nonexistent-file-or-buffer
。例如。像这样的东西:
(setq confirm-nonexistent-file-or-buffer t)
默认情况下,如果您刚刚在 RET 之前完成,则只要求确认。
我认为比防止打开错误的缓冲区更好的解决方案是切换到您想要的缓冲区。
这可以通过 ido.el 完成,这是我最喜欢的软件包之一。安装该软件包并按以下方式配置,然后您可以输入更少(并忽略大小写)以切换到缓冲区。
(ido-mode 'buffer)
(setq ido-enable-flex-matching t)
例如,您有缓冲区 "abcd.el"、"hijk.el" "ABC.c",只需 C-x b 然后键入 "a.c" 和 。现在,您处于 "ABC.c" 缓冲区中。 C-x b 后跟一个字符 "h" 将带您进入 "hijk.el" 缓冲区。
我能够在 Bob Glickstein 的 Writing GNU Emacs Extensions 中找到解决方案。 (我知道我在某个地方见过它,但花了一些时间才弄清楚在哪里)。我有 1997 版,答案在第 2 章的 "Advised Buffer Switching." 部分下给出,Glickstein 演示了自定义切换到缓冲区作为指示 reader 给出 [=18] 的方法=] 到函数。
(defadvice switch-to-buffer (before existing-buffer
activate compile)
"When interactive, switch to existing buffers only, unless given a prefix argument."
(interactive
(list (read-buffer "Switch to buffer: "
(other-buffer)
(null current-prefix-arg)))))
函数 read-buffer 读取缓冲区的名称和 returns 一个字符串。该字符串被传递到 switch-to-buffer。第一个参数是默认值。第二个参数是一个布尔值,确定是否允许不存在的缓冲区。
设置jmp
Switch-to-buffer 是绑定到 C-x b 的函数。有时我会错误输入我打算切换到的缓冲区,这会导致我打开一个名称不正确的新缓冲区。首选行为(在我的例子中)是无法打开缓冲区......可能无法完成缓冲区名称。我记得几年前遇到过一种不允许切换到缓冲区以打开新缓冲区的技术。也许 Whosebug 上的某个人可以识别该技术?
谢谢!
设置jmp
我想你想自定义 confirm-nonexistent-file-or-buffer
。例如。像这样的东西:
(setq confirm-nonexistent-file-or-buffer t)
默认情况下,如果您刚刚在 RET 之前完成,则只要求确认。
我认为比防止打开错误的缓冲区更好的解决方案是切换到您想要的缓冲区。
这可以通过 ido.el 完成,这是我最喜欢的软件包之一。安装该软件包并按以下方式配置,然后您可以输入更少(并忽略大小写)以切换到缓冲区。
(ido-mode 'buffer)
(setq ido-enable-flex-matching t)
例如,您有缓冲区 "abcd.el"、"hijk.el" "ABC.c",只需 C-x b 然后键入 "a.c" 和 。现在,您处于 "ABC.c" 缓冲区中。 C-x b 后跟一个字符 "h" 将带您进入 "hijk.el" 缓冲区。
我能够在 Bob Glickstein 的 Writing GNU Emacs Extensions 中找到解决方案。 (我知道我在某个地方见过它,但花了一些时间才弄清楚在哪里)。我有 1997 版,答案在第 2 章的 "Advised Buffer Switching." 部分下给出,Glickstein 演示了自定义切换到缓冲区作为指示 reader 给出 [=18] 的方法=] 到函数。
(defadvice switch-to-buffer (before existing-buffer
activate compile)
"When interactive, switch to existing buffers only, unless given a prefix argument."
(interactive
(list (read-buffer "Switch to buffer: "
(other-buffer)
(null current-prefix-arg)))))
函数 read-buffer 读取缓冲区的名称和 returns 一个字符串。该字符串被传递到 switch-to-buffer。第一个参数是默认值。第二个参数是一个布尔值,确定是否允许不存在的缓冲区。
设置jmp