2009-08-05 6 views
42

En emacs de GNU, 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, haré que se ejecute un shell en la ventana inferior), la lista de almacenamiento intermedio aparece en la otra ventana.comportamiento de listas de búfers de emacs

Mi comportamiento deseado es para la lista de buffers a aparecer en mi ventana activa para que pueda seleccionar la memoria intermedia que quiero y seguir trabajando en la misma ventana, en lugar de tener que Ctrl-X Ctrl-o a la otro búfer, seleccionando el búfer (con ingrese) y editando ese búfer 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)?

Respuesta

54

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

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

Quiero saber si hay alguna manera de que pueda usar la tecla breve como 1, 2, ... o a, b, c ... para abrir un búfer más rápidamente, sé que ac-jump-buffer podría hacer eso , pero su lista de almacenamiento intermedio es demasiado simple, no hay información adicional, como modo, columna de tamaño en el menú del búfer. Si resuelves este problema, eso sería apreciado. @ zimbu668 – CodyChan

13

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

+1

Me pregunto por qué tienes downvoted ... siempre es bueno saber que tengo opciones! – hatmatrix

+0

En caso de que esté revisando, gracias por la sugerencia. Soy un fan de ido ahora. – hatmatrix

0

Otra solución no-lo-que-pidió: no seleccione el búfer deseado con el mouse, en lugar de terminar escribiendo 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.

+0

Gracias, pero trabajo principalmente en la terminal, así que no hay ningún mouse ahí ... pero a veces me confundo si algunos buffers comienzan con * o no, pero tienes razón, las terminaciones de pestañas incluso me ayudarán. – hatmatrix

+0

Esto no elimina la ventana de lista de búfer para mí? – sandos

1

No está seguro de dónde saqué esto, pero:

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

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

+0

Gracias - Tengo la pestaña Ctrl ya reservada :). Pero el buffer-menu es la clave. – hatmatrix

3

Si te gusta la lista búfer original (en contraposición a la solución 'buffer-menu propuesto por otros), se puede utilizar este :

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

Cuál es la misma función que antes, solamente en la ventana actual.

+0

Estoy usando una variante ahora con switch-to-buffer-other-window y un comportamiento especial si ya estoy en la lista de Buffer. Gracias. – mkiever

11

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.

(Usted tendrá que añadir "[*]Buffer List".)

+0

Esta es la mejor respuesta aquí, ya que se trata del problema real (modificar cómo se comporta el búfer de visualización), en lugar de proporcionar soluciones provisionales. – xyzzyz

2

le recomiendo bs.el de http://www.geekware.de/software/emacs/ instalarlo y:

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

Gestiona tampones y configuración de la ventana de la manera correcta, por lo todo requiere un número mínimo de teclas.

+0

Gracias - la "forma correcta" depende de lo que esperas, ¿verdad? – hatmatrix

4

intenta agregar

(ido-mode 1) 

a su .emacs, y disfrutar el resultado :)

3

Curiosamente, no hay una respuesta aquí sobre ibuffer.

Yo 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 el listado de búfer predeterminado, y no sólo presenta el comportamiento exacto solicitado, pero proporciona una riqueza de otras funcionalidades.

He enumerado algunos fundamentos de agrupamiento y agrupamiento ibuffer en Emacs: help me understand file/buffer management, pero asegúrese de leer la documentación para más detalles.

Cuestiones relacionadas