¿Cómo cambio entre ventanas rápidamente?
A menudo tengo varias ventanas abiertas y necesito cambiar entre ellas. En este momento, solía C-x ollegar al que quiero. ¿Hay un flujo de trabajo más eficiente disponible para esto?
window
cycling
navigation
Sibi
fuente
fuente

Respuestas:
Obviamente prefiero ace-window para esto. Puede cambiar entre ventanas y marcos visibles. Está en MELPA, puedes instalarlo rápidamente. Lo único que queda por hacer es atarlo:
O tal vez use un acorde de tecla más corto, ya que cambiar ventanas es una tarea común:
Resumen de
ace-windowEs un reemplazo directo para
other-window. A diferencia de este último, nunca tiene que llamarace-windowdos o más veces para seleccionar una ventana: selecciona la ventana que desea en una llamada (posiblemente en varios marcos).Además de cambiar ventanas,
ace-windowpuede hacer más (eliminar o intercambiar ventanas, etc.), vea README .fuente
ace-windowy luego viswitch-windowque parece hacer más o menos lo mismo, excepto que las letras son más pronunciadas. Parece divertido que tengamos ambos paquetes.switch-windowhasta que meace-windowpresenté a MELPA.ace-window, tiene más personalización que otros paquetes, supongo. Aún así, uno podría ser de ayuda en el futuro es un enlace clave para una función que sería similar a la acción de intercambio inteligente, pero se come esa ventana, lo que da como resultado una ventana más grande en el punto y una ventana elegida de menor tamaño (el comido ventana hacia arriba). La relación debe determinarse en este caso como puede ser la mitad, un cuarto o un tercio.Una forma es usar
windmove. Con sus combinaciones de teclas predeterminadas, permite cambiar a la ventana junto a la actualmente activa.Está construido en Emacs, por lo que no es necesario instalar nada; simplemente actívelo con la siguiente configuración mínima en su archivo init:
A continuación, puede cambiar a ventanas vecinas utilizando las siguientes teclas (donde la flecha se utiliza de forma intuitiva define la dirección en que se mueve):
S-<left>,S-<right>,S-<up>,S-<down>.Si prefiere usar otro modificador en lugar de shift, puede proporcionarlo como argumento para
windmove-default-keybindings. Por ejemplo:o
Más información en Emacs Wiki .
fuente
(windmove-default-keybindings 'meta)como se sugiere en EmacsWiki.Shift-arrow) , pero cuando tienes un monitor grande con muchas divisiones, ese movimiento rápidamente se vuelve difícil de manejar. Sería más interesante enumerar de alguna manera ventanas / divisiones. Me gustaace-window, pero con menos pulsaciones de teclas y un algoritmo obvio para averiguar de inmediato el número que desea.Puede vincularse
other-windowa una secuencia de teclas más fácil de escribir.Por ejemplo, he
C-.unido aother-window, yC-,obligado a ir a la ventana anterior.Esto es especialmente útil para mover múltiples ventanas; una vez que mantienes presionado Control, solo tienes que presionar un solo botón para pasar a la siguiente ventana. Esto es mucho más fácil que tres pulsaciones de teclas por movimiento.
fuente
C-x oparaother-windowes uno de los pocos competidores sólidos por el título de "peor atajo predeterminado de emacs". Mi solución (similar a zck) fue volver a vincularother windowa una secuencia de teclas (mucho más fácil): lo tengo vinculadoC-;(y miCaps-Lockse intercambia conCtrllo que todo lo que se necesita es un toque rápido de los meñiques). Por cierto, soy totalmente dependiente de ciertas características dehelmyicicles(es decir, no soy "anti-paquetes" ni nada); Solo creo que una solución simple funciona mejor aquí.M-oparaother-window. Algunos modos ya tienenM-ode unión, en particulardiff-mode,ggtag-modeyibuffer-mode. Debe desenlazarlo manualmente en cada mapa de modo.unbind-keyproporcionado porbind-key.eles muy útil.M-otambién, y hanM-Oobligado aace-windowpara cuando necesito la energía adicional.numeración de ventanas.
Asigno la tecla de acceso rápido ", 1", ", 2", ", 3" para cambiar la ventana específica (tenga en cuenta que uso el modo malvado)
además, muestro el número de ventana en la línea de modo en color ROSADO, subrayado.
Es una pista visual que nunca puedes ignorar,
Esa es la forma más rápida de cambiar de ventana.
consulte https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-evil.el y https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-modeline .el para mi configuración.
Sylvain Benner adoptó mi idea en los spacemacs, pero las combinaciones de teclas son diferentes . Entonces, si usa spacemacs, obtiene la solución más rápida de la caja.
fuente
window-numberconM-<num>para cambiar rápidamente las ventanas en blanco y negro. Concepto similar a esteSin usar complementos adicionales, puede continuar usándolo
C-x ocon un prefijo opcional para omitir esa cantidad de ventanas. Por ejemplo:C-u 1 C-x oirá a la siguiente ventana en el orden (es decir, lo que obtendría con simpleC-x o),C-u 2 C-x opasa dos ventanas,C-u 3 C-x opasa tres ventanas, y así sucesivamente.Un extracto de la
other-windowcadena de documentación (la función llamada porC-x o:fuente
Algunas personas pueden recordar el editor Brief (curiosamente producido por una compañía llamada Underware).
Tenía una buena forma de cambiar entre ventanas visibles. La flecha M movería el cursor a la ventana directamente en línea con la dirección de la tecla de flecha.
Por lo tanto, Me asignan los
winmove-left,winmove-right,winmove-upywinmove-downfunciones aM-left,M-right,M-upyM-downlas teclas de la siguiente manera en mi archivo .emacs -Ahora puedo moverme con facilidad entre ventanas, independientemente de lo desordenada que tenga la configuración ... Y puede estar bastante abarrotada con el tamaño de las pantallas hoy en día ...
fuente
(windmove-default-keybindings 'meta)!Si usa Icicles, entonces le
C-x opermite seleccionar ventanas por nombre (o en bicicleta).Sin prefijo arg,
C-x oes el mismo de siempre, aother-windowmenos que el marco tenga solo una ventana, en cuyo caso lo esother-frame.Con un prefijo arg,
C-x oes un comando múltiple que le permite navegar entre ventanas o marcos por nombre (o en bicicleta). Navegar entre ventanas usa comandos múltiplesicicle-select-window; navegando entre usos de marcosicicle-select-frame.La navegación que se usa depende del prefijo arg:
Argumento de prefijo cero (p
C-0. Ej. ): Si el marco seleccionado tiene varias ventanas, esto esicicle-select-window, con ventanas en el mismo marco que los candidatos. De lo contrario (marco de ventana única), esto esicicle-select-frame.C-u: Si el marco seleccionado tiene múltiples ventanas, entonces esta esicicle-select-window, con ventanas de todos los marcos visibles como candidatos. De lo contrario, esto esicicle-select-frame.C-u C-u:icicle-select-window, con ventanas de todos los marcos como candidatos (incluidos los marcos iconificados u ocultos).Como siempre en Icicles , puede combinar (a) completar , escribir texto para reducir el conjunto de candidatos coincidentes (nombres de ventana o marco, en este caso), con (b) ciclismo (entre candidatos coincidentes).
fuente
Considere usar un acorde de tecla para saltar rápidamente entre ventanas. Lo encuentro mucho más rápido que alcanzar una tecla modificadora (y menos esfuerzo en mis manos también).
Mi elección de paquete para usar es
ace-window, que le permite navegar por múltiples ventanas más fácil que soloother-window.Obviamente para usar esto necesitas
key-chordyace-window, ambos están disponibles en melpa.fuente
ace-windowestá haciendo el trabajo como en la respuesta de @ abo-abo. Me parece que, en este contexto, la combinación de teclas específica para usar tendría más sentido como un comentario que como una respuesta. Solo mis dos centavos.key-chordpermite enlazar combinaciones de teclas muy accesibles. El enlace de ejemplo dexoes más rápido queC-x o(profundidad de uno frente a dos). Esta respuesta podría reformularse para enfatizar que la respuesta es ortogonal a las otras respuestas sobre la selección de funciones (yace-windowes solo una de las muchas opciones que podrían vincularse de la manera descrita). ¡Mantenga esta respuesta como distinta!Algunas buenas respuestas aquí, también soy fanático de WinMove, pero lo asocio a C- porque org-mode usa M- para manipular encabezados
Donde se pone realmente bueno es si lo combinas con Hydra . Siguiendo los ejemplos en su wiki , creé mi propio monstruo:
Esto me permite cambiar ventanas, redimensionarlas, mover buffers de una ventana a otra, alternar buffers, eliminar buffers e incluso deshacer configuraciones de ventanas a través del modo ganador, y también integra el timón. Para salir de la hidra, simplemente presione la flecha o alguna otra tecla que no esté en la hidra. Puede encontrar las funciones de "movimiento de hidra" en los ejemplos de hidra. Lo mejor de la hidra es que no tengo que recordar todas esas combinaciones de teclas y es "modesta", así que una vez que esté en la hidra, todo estará disponible como una sola tecla. prensa.
fuente
(windmove-default-keybindings 'control).Si lo usa
evil-mode, puede usar un prefijo numérico conC-w C-w(evil-window-next) para elegir la ventana que desee. Entonces:1 C-w C-wselecciona la primera ventana en orden cíclico,3 C-w C-welige la tercera ventana en orden cíclico, y así sucesivamente.fuente
Ace Jump le permite navegar su puntero a todas las palabras en una pantalla, independientemente de en qué ventana o marco se encuentren, por lo que no es tan diferente de usar Ace Window o Switch Window.
Una ventaja podría ser que al saltar ventanas también puede colocar el puntero con cierta precisión.
Todavía lo encuentro un poco engorroso o distractor, y encuentro que estoy usando
windmovemás, porque es muy simple, pero aún así uso Ace Jump cuando he estado leyendo en otra ventana o marco y quiero moverme a un lugar allí.fuente
Como de costumbre, hay cientos de formas diferentes de lograr esto. Mi forma preferida es usar NumberedWindows . Luego configuro la siguiente combinación de teclas usando Super y las teclas 1-9.
Entro en un poco más de detalle sobre este tema exacto con una publicación reciente que puedes leer en Afternoon Coder .
fuente
También puede optar por usar switch-window como un reemplazo visual para
C-x ofuente
switch-windowsobre todos los demás?