如何在Emacs中更轻松地切换缓冲区?

sja*_*jac 32 emacs

我最近开始使用emacs,我很享受在大多数情况下使用它.我唯一不喜欢的是在缓冲区之间切换.我经常有几个缓冲区开放,我一直在使用的厌弃C-x bC-x C-b,是否有使缓冲区之间切换更容易的任何包?我已经在切换缓冲区上查看了emacs wiki,我很欣赏有关正在使用/享受的内容的反馈/反馈.谢谢.

Tyl*_*ler 24

更新:iswitchb-mode在Emacs> = 24.4中已过时,替换为ido.

iswitchdb现在提供的所有功能ido.Ross 在他的回答中提供了文档的链接.您可以使用以下内容激活.emacs(或使用Ross建议的自定义界面):

(require 'ido)
(ido-mode 'buffers) ;; only use this line to turn off ido for file names!
(setq ido-ignore-buffers '("^ " "*Completions*" "*Shell Command Output*"
               "*Messages*" "Async Shell Command"))
Run Code Online (Sandbox Code Playgroud)

默认情况下,ido为缓冲区名称和文件名提供完成.如果您只想替换其中的功能iswitchb,则第二行会关闭此功能以获取文件名.ido将忽略与列出的正则表达式匹配的任何缓冲区ido-ignore-buffers.

下面描述的行为iswitchb-mode同样适用ido于切换缓冲区.

iswitchb-mode(Emacs <24.4)

iswitchb-mode使用C-x b非常直观的缓冲区切换完成系统替换默认行为.有更复杂的选择,但我从来没有比这更需要.

点击后C-x b,会显示所有缓冲区的列表.开始键入所需缓冲区的名称(或其名称的一部分),并缩小列表,直到只有一个缓冲区匹配.但是,您不需要完成名称,只要您想要的缓冲区突出显示,按下Enter将移动您.您还可以按顺序使用C-sC-r遍历列表.

您可以在.emacs中默认打开它:

(iswitchb-mode 1)
Run Code Online (Sandbox Code Playgroud)

您还可以告诉它忽略您从未(或很少)需要切换到的某些缓冲区:

(setq iswitchb-buffer-ignore '("^ " "*Completions*" "*Shell Command Output*"
               "*Messages*" "Async Shell Command"))
Run Code Online (Sandbox Code Playgroud)


phi*_*mue 15

您可以使用C-x <right>(next-buffer)和C-x <left>(previous-buffer)在缓冲环中循环.你可以绑定S-<right>S-<left>这些功能.(S是"超级密钥"或Windows密钥).这样您就可以节省一些击键次数.

此外,请注意,它C-x b有一个默认条目,即它显示一个标准值(大多数时候这是以前查看的缓冲区),因此您不必总是显式输入缓冲区名称.

另一个很好的技巧是使用C-x 2和打开单独的窗口C-x 3.这会同时显示几个缓冲区.然后,你可以绑定C-<tab>other-window并得到类似的标签式浏览的东西.


Ros*_*son 8

M-x customize-group ido然后设置Ido ModeTurn on both buffer and file并设置Ido Everywhereon.然后单击Save for future sessions顶部的按钮,享受文件和缓冲区的ido魔力.阅读文档以了解如何使用ido.

另外,看一看smex.


kin*_*ero 5

  1. ido-mode 提供了一种切换缓冲区的有效方法.
  2. ibuffer 最适合管理所有打开的缓冲区.
  3. anything适合从不同来源选择感兴趣的东西.(例如:单个键可用于切换到另一个缓冲区或打开最近关闭的文件或打开驻留在同一目录中的文件或......您想要的任何内容......)