emacs list-buffers行为
在GNU emacs中,每当我按下Ctrl-x Ctrl-b查看所有缓冲区时,窗口就会被分割以显示缓冲区列表,或者如果我的窗口已经被分割为2(例如,我将有一个shell在下面的窗口中运行),缓冲区列表出现在另一个窗口中。
我希望的行为是让缓冲区列表出现在我的活动窗口中,这样我可以select我想要的缓冲区并继续在同一个窗口中工作,而不必按Ctrl-x Ctrl-o到另一个缓冲区,select缓冲区( 回车 ),并在另一个窗口中编辑该缓冲区…我已经google了,但它似乎并不是一个共同的愿望? 我想知道是否有人有elispy(或其他)解决scheme?
您可能需要重新绑定Cx Cb来调用buffer-menu
而不是list-buffers
:
(global-set-key "\Cx\Cb" 'buffer-menu)
不完全是一个解决scheme,但ido-mode
提供了一个不同的,强大的方式来与缓冲区交互。 然后Cx b
将显示所有打开的缓冲区的列表,您select的缓冲区将在当前窗口中打开。
只需自定义variablessame-window-regexps
。 display-buffer
将在当前select的窗口中显示名称与正则expression式匹配的任何缓冲区。
(你会想添加“ [*]Buffer List
”。)
如果你喜欢原始的缓冲区列表(与其他人提出的'buffer-menu
解决scheme相反),你可以使用这个:
(global-set-key (kbd "Cx Cb") 'my-list-buffers) (defun my-list-buffers (&optional files-only) "Display a list of names of existing buffers. The list is displayed in a buffer named `*Buffer List*'. Note that buffers with names starting with spaces are omitted. Non-null optional arg FILES-ONLY means mention only file buffers. For more information, see the function `buffer-menu'." (interactive "P") (switch-to-buffer (list-buffers-noselect files-only)))
只有在当前窗口中,它和前面的function相同。
尝试添加
(ido-mode 1)
到你的.emacs,并享受结果:)
我强烈build议从http://www.geekware.de/software/emacs/ bs.el安装它和:
(require 'bs) (add-hook 'bs-mode-hook 'turn-on-font-lock) (global-set-key "\Cx\Cb" 'bs-show)
它以正确的方式pipe理缓冲区和窗口configuration,因此所有操作都需要最less的击键次数。
奇怪的是,这里没有关于ibuffer
的答案。
我会推荐这个作为大多数Emacs用户的标准改变:
(global-set-key (kbd "Cx Cb") 'ibuffer)
ibuffer是默认缓冲列表的非常先进的替代品,不仅具有请求的确切行为,还提供了丰富的其他function。
我在Emacs中列出了一些ibuffer过滤和分组基础知识:帮助我理解文件/缓冲区pipe理 ,但请务必阅读文档以获取详细信息。
不知道我在哪里,但是:
;;; Faster buffer switching (global-set-key [(C tab)] 'buffer-menu)
这使得Ctrl-Tab显示当前窗口中的所有缓冲区。 然后,您可以导航到一个缓冲区并按Enter键来访问它。
另一个不是你要求的解决scheme:不要用鼠标select所需的缓冲区,而是完成键入它的名称(使用Tab-completion来减less击键和提高准确性),然后按回车。 缓冲区列表将消失,并且新文件将在先前活动的窗口中打开。