En Vanilla Emacs, tengo que hacer C-x b
y luego escribir manualmente el nombre del búfer para cambiar. Si olvido el nombre del búfer, tengo que presionar TAB
para enumerar las posibles terminaciones. ¿Hay algo que pueda hacer para acelerar este proceso?
key-bindings
buffers
cycling
nixeagle
fuente
fuente
C-x C-<left/right>
para cambiar los búferes rápidamente. Cuando necesito cambiar al búfer "más alejado", lo usoIBuffer
.Respuestas:
Hay modo ido que debería ayudar.
EDITAR:
pon esto en tu archivo init, para activar el modo ido por defecto:
(ido-mode 1)
Ahora,
C-x b
le mostraremos una lista de candidatos.Ponga esto en su archivo de inicio, si prefiere que los elementos se muestren verticalmente:
(setq ido-separator "\n")
Cortesía de ergoemacs.
Permítanme sugerir también esta publicación hablando sobre cambiar al búfer anterior / siguiente.
fuente
Recientemente comencé a usar
C-x <left>
yC-x <right>
. Ambos son enlaces estándar de Emacs, nada que configurar. Izquierda lo lleva de regreso al búfer anterior (inicialmente igual queC-x b RET
) pero al hacerlo nuevamente lo lleva al tercer búfer visitado más recientemente. Si está apareciendo mucho entre 3 o 4 buffers, me resulta mucho más fácil que tratar de recordar los nombres de los buffers.También acabo de descubrir
C-x C-<left>
y estoyC-x C-<right>
obligado a las mismas funciones para que pueda mantener presionada la tecla de control y alternar entre xy las flechas para hojear los buffers. ¡Bastante agradable!fuente
Podrías usar Helm .
En mi configuración, he cambiado
C-x b
porM-l
. Esto aliadohelm-buffers-list
hace que el proceso sea bastante rápido, al menos para mí.fuente
ido
oiswitchb
oicicles
cosas así, pero Helm básicamente las ha dejado obsoletas. Sí,ace-jump-buffer
es genial, pero no es tan rápido como Helm, porque antes de saber qué tecla presionar, debe encontrar el búfer en la lista. Helm le permite reducir la lista con unas pocas teclas que ya conoce (como el nombre del búfer). UtilizoC-TAB
para cambiar buffers, cargar archivos recientes, marcadores, etc. Nada es más rápido.helm
. Pero yo prefiero usarhelm-mini
, que muestra también queRecentf
ahelm-buffers-list
.ivy-switch-buffer
.Solo para agregar ajustes que uso con Ido ya mencionado :
También estoy usando
ace-window
para cambiar entre buffers junto conace-jump-mode
para saltar entre ventanas visibles. Viene con algo de acostumbrarse pero vale la pena intentarlo.Lo combiné
key-chord-mode
y golpeéso
para un salto rápido:Todos los paquetes mencionados anteriormente están disponibles a través del administrador de paquetes de Melpa.
fuente
use-package
conrequire
para evitar confusiones. En el ejemplo dado, no hay una necesidad específica de que un usuario instale un paquete adicional para implementar esa solución.Como @kuanyui dice en un comentario,
next-buffer
yprevious-buffer
son muy rápidos, si solo tiene unos pocos buffers para alternar. (Para más de unos pocos, y para más características de elección de búfer, usoicicle-buffer
).Sin embargo, de forma predeterminada,
next-buffer
yprevious-buffer
están en una tecla prefijo,C-x
.Eso significa que no son repetibles : no puedes simplemente golpear
C-x <right> <right> <right>...
. En su lugar, debe vincular estos comandos a teclas diferentes y repetibles, o debe usarC-x <right> C-x <right> C-x <right>...
, lo que no es muy rápido.Para las versiones repetibles de estos comandos, cargue la biblioteca
misc-cmds.el
y vuelva a correlacionar las versiones vainilla irrepetibles a las repetibles definidas allí:(Del mismo modo, en la misma biblioteca encontrará una versión
undo
que se puede repetir incluso cuando se utiliza una tecla de prefijo:.undo-repeat
)Por cierto, puede hacer que casi cualquier comando sea repetible (incluso en una tecla de prefijo), utilizando la función
repeat-command
(frommisc-cmds.el
). Esto es todo lo que se necesitaba para definir la versión repetible denext-buffer
:fuente
C-,
yC-.
para ganar repetibilidad, y mientras estás en ello de todos modos, estableceC-x.
yC-x,
aother-window
y(lambda()(interactive)(other-window -1))
. Las ventanas de ciclismo probablemente necesiten menos repetibilidad, y usted se escapa en un minuto, sin paquetes adicionales.next-buffer
yprevious-buffer
la mejor solución, independientemente de cualquier enlace de teclas específico. Por eso mi comentario.Me sorprende que nadie lo haya mencionado
iswitchb
todavía. Puede que no sea tan poderoso comoido
, pero mucho antes de queido-mode
nacieraiswitchb-mode
ya era estándar para emacs, y todavía es útil hoy en día. Para probarlo solo ponen sus .emacs o actívelos mediante
M-x iswitchb-mode
.fuente
iswitchb
está obsoleto a partir de Emacs 24.4. Toda su funcionalidad está disponible a través deido
ahora.Use helm-buffer-list o helm-mini para seleccionar visualmente la entrada del búfer y la coincidencia difusa. Puede hacer muchas cosas fuera del cambio de buffers. Debería ver la demostración en el enlace.
fuente
Otros han discutido paquetes que son útiles para facilitar la vida con respecto al cambio de búfer / ventana / marco. (Yo personalmente uso lo
helm
que es fenomenal). Quiero discutir cambios más simples que pueden hacer que la experiencia de Emacs sea más agradable.Para mí, la solución a mis problemas de buffer / frame (porque creo que
C-x o
es lo peor) no era un paquete; fue simplemente:C-;
aother-window
(ciclismo a través de ventanas)C-'
aother-frame
(ciclismo a través de cuadros). De hecho, comencé a usar marcos mucho más después de agregar este acceso directo).help
ventana que aparece (al leer páginas de manual, a propósito, etc.) con cualquier ventana que fuera visible anteriormente).También pensé en compartir algunas ideas sobre las combinaciones de teclas que los novatos podrían encontrar útiles. (Lo siento si este es el lugar equivocado). No tengo sugerencias específicas, sino una "filosofía" que me permite mantener un conjunto efectivo de combinaciones de teclas.
Los comandos utilizados con poca frecuencia no merecen una combinación de teclas fácil.
keyfreq.el
y vea lo que realmente usa mucho. Utilizo un método de supervivencia del más apto para decidir qué comandos reciben los bienes inmuebles más valiosos en mi teclado.C-\
es un gran atajo (por las razones expuestas en el # 2) ... y sería un crimen dejarlo asigna a su comando por defecto:change-input-method
. (Tal vez algunos de ustedes lo usan mucho, ciertamente yo no).Los siguientes factores determinan la facilidad y la velocidad de un atajo de teclado (comenzando por el más importante):
Ctrl
,Meta
, etc.). Por ejemplo, es mucho más rápido para mí golpearC-c C-l C-p
que golpearC-x o
. Personalmente, me parece muy inconveniente tener que levantar laCtrl
tecla entre pulsaciones sucesivas de una secuencia de teclas determinada; es mucho más fácil seguir presionando el botón modificador (en este casoCtrl
). (Este ejemplo específico podría estar influenciado por el hecho de que he reasignado miCtrl
clave y miCaps-Lock
clave).C-c C-l C-p
que golpearC-p C-' C-;
. (Pruébelo y debería ser obvio.) En términos generales, es mucho más fácil usar secuencias de teclas que usan manos alternas (o, al menos, dedos alternas en la misma mano).Solo un par de pensamientos que pensé que podrían ser útiles para los novatos. Puedo agregar algo más más tarde.
fuente
Utilizo
windmove.el
ybs.el
para cambiar de búfer rápidamente. Ambos modos están incluidos con Emacs.windmove.el
- cambia a una ventana (un búfer que se muestra actualmente) en una dirección específica, por ejemplo, izquierda, derecha, arriba, abajo.bs.el
- Usobs-cycle-next
ybs-cycle-previous
para cambiar al siguiente búfer que no se muestra actualmente en una ventana.Puede windmove configuración con
(windmove-default-keybindings)
la cual se unirá a los comandos apropiadosShift-Left Arrow
,Shift-Right Arrow
etc.Para configurar
bs.el
, algo como esto funcionará:fuente
windmove.el
está bajo la página de EmacsWiki "Switching Buffers", ademásbs.el
opera en buffers, no en ventanas.La forma más rápida de cambiar buffers que conozco es con
ace-jump-buffer
. Una pulsación de tecla abre el menú del búfer y luego selecciona la letra junto al búfer que deseasace-jump-line-mode
. Esto funciona mejor para los 26 buffers más recientes. Para cambiar a buffers más atrás en su historial de uso,ido-switch-buffer
siempre es una buena opción.fuente
Prefiero la navegación con pestañas estilo navegador. He vinculado Ctrl + Tab y Ctrl + Shift + Tab al búfer siguiente y anterior respectivamente:
fuente
En términos generales, hay 2 formas de cambiar los buffers y la mayoría de las soluciones se incluirán en una de ellas.
Esto es lo que
C-x b
hace por defecto. Ido le brinda una buena finalización automática para que no necesite TAB TAB TAB tanto. Proyectos como timón, proyectil, etc., lo hacen más fácil al darle habilidades para trabajar con archivos en un proyecto, etc., y junto con ido, pueden ser bastante útiles.Esto es útil cuando tiene tantos buffers y desea una lista de todos ellos. Puede subir y bajar el búfer y presionar enter para visitar un archivo en particular. Ibuffer es bastante bueno para eso.
Yo uso ambos y así es como puedes configurarlo.
fuente
Además de ido, tengo la siguiente configuración.
En el caso del modo malvado, use las siguientes combinaciones de teclas para cambiar los buffers
Establecer el nombre del búfer como título de la ventana. Esto lo ayudará cuando navegue con las combinaciones de teclas anteriores
Si está utilizando el modo malvado, puede intentarlo
evil-leader
. Ate las llaves de uso frecuente al líder. Por ejemplo, puede unirseC-x b
a<leader>-b
.Vincular el modo directo a
C-<f8>
. Ahora, cuando desee abrir el archivo en el directorio, presioneC-<f8>
, navegue hasta el nombre del archivo y presione ena
lugar deRET
. Por lo tanto, el amortiguador directo se eliminará inmediatamente.Use el
recentf
modo para navegar por los archivos recientes.C-x C-r
Un último punto importante es: use un teclado mecánico ergonómico. Por lo tanto, puede presionar la tecla 'Ctrl' fácil y rápidamente con la muñeca en lugar de dañar el meñique.
Espero que esto pueda ayudar a alguien.
fuente
Como puede ver en las otras respuestas, hay muchas maneras de simplificar esta tarea en particular. Personalmente uso Lusty Emacs como mi aparato de conmutación de búfer, ya que maneja bastante bien la finalización difusa. Esto minimiza el número de pulsaciones de teclas necesarias para seleccionar el nuevo búfer, por ejemplo, solo necesito escribir oxr para cambiar a ox-revelar.el , o incluso solo la segunda vez, ya que también rastrea el historial de interruptores.
fuente
Si desea seguir pasando sus buffers, agregue esto a su archivo init:
Necesita el paquete de teclas de enlace y puede cambiar las combinaciones de teclas a su gusto, pero encontré que estas combinaciones de teclas son las más cómodas. Antes de agregar este fragmento, debe requerir la clave de enlace,
fuente
Utilizo C-Tab y CS-Tab como aplicaciones generales.
fuente
Esta no es una solución muy elegante (ya que usa macros en lugar de funciones) y no responde cómo saltar a cualquier búfer rápidamente, sino solo cómo saltar a los búferes usados recientemente. Pero me funciona muy bien:
Tengo una serie de macros que usan
ido-switch-buffer
para saltar al búfer anterior, el búfer anterior, el búfer anterior, etc. Y vinculé esas macros a las combinaciones de teclas que considero convenientes.Para saltar al último búfer:
Para saltar al penúltimo buffer:
Para saltar al búfer antepenúltimo:
Etc. (puede agregar tantos anuncios como
?\C-n
desee ir tan atrás en el historial de buffers visitados como desee).Hay una función incorporada para saltar al búfer anterior, pero la ventaja de usar macros
ido-switch-buffer
es que puede personalizar la variableido-ignore-buffers
para eliminar búferes especiales como*Messages*
o*scratch*
y cualquier otro búfer no deseado de la lista. De esa manera, los únicos amortiguadores a los que saltas son aquellos a los que realmente estás interesado en saltar.fuente
En mi VM, Cx ALT-RIGHT / LEFT es demasiado lento. Tengo que esperar a que Cx se registre en la barra de estado antes de poder hacer otra cosa. Además, son demasiadas teclas. Así que asigné C-TAB y CM-TAB al búfer siguiente y anterior, ya que eso es lo que hago en la mayoría de los programas de Windows de todos modos. Es fácil de hacer desde emacs:
M-x
te lleva a la barra de estado. Luego escribaglobal-set-key
que le pedirá la secuencia de teclas que desea vincular (C-TAB
) y luego el comando al que desea vincular (next-buffer
). ¡Eso es!fuente