tutorial español emacs elisp

emacs tutorial español



comportamiento de los búfers de lista de emacs (9)

En GNU emacs, cada vez que presiono Ctrl-x Ctrl-b para ver todos mis búferes, la ventana se divide para mostrar la lista de búferes, o si ya tengo mi ventana dividida en 2 (por ejemplo, tendré un shell ejecutándose en la ventana inferior), la lista de búfer aparece en la otra ventana.

Mi comportamiento deseado es que la lista de búfer aparezca en mi ventana activa para poder seleccionar el búfer que quiero y continuar trabajando en la misma ventana, en lugar de tener que Ctrl-x Ctrl-o al otro búfer, seleccionando el búfer (con enter ) y editando ese buffer en la otra ventana ... He buscado en Google pero ¿no parece ser un deseo común? Me pregunto si alguien tiene una solución elispy (u otra)?


Extrañamente, aquí no hay una respuesta sobre ibuffer .

Recomendaría esto como un cambio estándar para la mayoría de los usuarios de Emacs:

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

ibuffer es un reemplazo muy avanzado para la lista del buffer por defecto, y no solo presenta el comportamiento exacto solicitado, sino que también proporciona una gran cantidad de otras funcionalidades.

Enumeré algunos conceptos básicos de agrupamiento y filtrado de ibuffer en Emacs: ayúdame a entender la administración de archivos / búferes , pero asegúrate de leer la documentación para obtener más información.


Intenta agregar

(ido-mode 1)

a tus .emacs, y disfruta del resultado :)


No estoy seguro de dónde conseguí esto, pero:

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

Esto hace que Ctrl-Tab muestre todos los buffers en la ventana actual. Luego puede navegar a un búfer y presionar Enter para visitarlo.


Otra solución no-lo-que-pidió: no seleccione el búfer deseado con el mouse, en lugar de terminar de escribir su nombre (use tab-completion para reducir las pulsaciones de teclas y aumentar la precisión), luego pulse return. La lista de almacenamiento intermedio desaparecerá y el nuevo archivo se abrirá en la ventana previamente activa.


Recomiendo mucho bs.el desde http://www.geekware.de/software/emacs/ Instálelo y:

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

Gestiona los búferes y la configuración de la ventana de la manera correcta, por lo que todo requiere un número mínimo de pulsaciones de teclas.


Si le gusta la lista de búferes original (a diferencia de la ''buffer-menu propuesta por otros), puede usar esto:

(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)))

Que es la misma función que antes, solo en la ventana actual.


Simplemente personalice la variable same-window-regexps . display-buffer mostrará cualquier búfer cuyo nombre coincida con una expresión regular allí en la ventana actualmente seleccionada.

(Deberá agregar " [*]Buffer List ").


no es exactamente una solución, pero ido-mode proporciona una manera diferente y poderosa de interactuar con los buffers. Cx b mostrará una lista de todos los búferes abiertos, y el que seleccione se abrirá en la ventana actual.


Es posible que desee volver a enlazar Cx Cb para invocar buffer-menu lugar de list-buffers de la list-buffers :

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