emacs list-buffers behavior

EmacsElisp

Emacs Problem Overview


In GNU emacs, every time I hit Ctrl-x Ctrl-b to see all of my buffers, the window is split to show the buffer list, or if I have my window already split in 2 (for instance, I will have a shell running in the lower window), the buffer list appears in the other window.

My desired behavior is for the buffer list to appear in my active window so that I can select the buffer I want and continue to working in the same window, rather than having to Ctrl-x Ctrl-o to the other buffer, selecting the buffer (with enter) and editing that buffer in the other window... I've googled for it but it doesn't seem to be a common desire? I wonder if anyone has an elispy (or other) solution?

Emacs Solutions


Solution 1 - Emacs

You might want to rebind C-x C-b to invoke buffer-menu rather than list-buffers:

(global-set-key "\C-x\C-b" 'buffer-menu)

Solution 2 - Emacs

Just customize the variable same-window-regexps. display-buffer will display any buffer whose name matches a regexp there in the currently-selected window.

(You will want to add "[*]Buffer List".)

Solution 3 - Emacs

not exactly a solution, but ido-mode provides a different and powerful way to interact with buffers. C-x b will then show a list of all the open buffers, and the one you select will open in the current window.

Solution 4 - Emacs

Strangely, there isn't an answer here about ibuffer.

I would recommend this as a standard change for the majority of Emacs users:

(global-set-key (kbd "C-x C-b") 'ibuffer)

ibuffer is a very advanced replacement for the default buffer listing, and not only features the exact behaviour requested, but provides a wealth of other functionality.

I listed a few ibuffer filtering and grouping basics in https://stackoverflow.com/questions/3145332/emacs-help-me-understand-file-buffer-management/3145824#3145824, but be sure to read the documentation for details.

Solution 5 - Emacs

Try to add

(ido-mode 1)

to your .emacs, and enjoy the result :)

Solution 6 - Emacs

If you like the original buffer list (as opposed to the 'buffer-menu solution proposed by others), you can use this:

(global-set-key (kbd "C-x C-b") '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)))

Which is the same function as before, only in the current window.

Solution 7 - Emacs

I highly recommend bs.el from http://www.geekware.de/software/emacs/ Install it and:

(require 'bs)
(add-hook 'bs-mode-hook 'turn-on-font-lock)
(global-set-key "\C-x\C-b" 'bs-show)

It manages buffers and window configuration in the right way, so everything requires minimum number of keystrokes.

Solution 8 - Emacs

Not sure where I got this but:

;;; Faster buffer switching
(global-set-key [(C tab)] 'buffer-menu) 

This makes Ctrl-Tab display all buffers in the current window. You can then navigate to a buffer and hit Enter to visit it.

Solution 9 - Emacs

Another not-what-you-asked-for solution: don't select the desired buffer with the mouse, rather finish typing its name (use tab-completion to reduce keystrokes and increase accuracy), then hit return. The buffer list will disappear, and the new file will be open in the previously active window.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionhatmatrixView Question on Stackoverflow
Solution 1 - Emacszimbu668View Answer on Stackoverflow
Solution 2 - EmacsjrockwayView Answer on Stackoverflow
Solution 3 - EmacsmrwView Answer on Stackoverflow
Solution 4 - EmacsphilsView Answer on Stackoverflow
Solution 5 - EmacsŁukasz LewView Answer on Stackoverflow
Solution 6 - EmacsTrey JacksonView Answer on Stackoverflow
Solution 7 - EmacsGlebView Answer on Stackoverflow
Solution 8 - EmacsTim StewartView Answer on Stackoverflow
Solution 9 - Emacsdmckee --- ex-moderator kittenView Answer on Stackoverflow