En Emacs, C-x ome lleva a la siguiente ventana.
¿Qué macro de teclado me lleva a la ventana anterior en Emacs?
Eso seria C-- C-x o
En otras palabras, C-x ocon un argumento de -1. Puede especificar cuántas ventanas mover insertando un argumento numérico entre C-uy el comando, como en C-u 2 C-x o. ( C--es un atajo para C-u - 1)
También puede intentar usar windmove, que le permite navegar a la ventana de su elección en función de la geometría. Tengo lo siguiente en mi archivo .emacs para cambiar las ventanas usando la tecla de flecha Cx.
(global-set-key (kbd "C-x <up>") 'windmove-up)
(global-set-key (kbd "C-x <down>") 'windmove-down)
(global-set-key (kbd "C-x <right>") 'windmove-right)
(global-set-key (kbd "C-x <left>") 'windmove-left)
(windmove-default-keybindings)
vincula estas funciones a SHIFT + arriba / abajo / izquierda / derecha, lo que creo que es más conveniente que sus C-x
vinculaciones (que entran en conflicto con las vinculaciones predeterminadas también útiles para previous-buffer
y next-buffer
. Lkahtz: la (kbd)
función le permite especificar claves en notación de cadena en la sintaxis más legible que también usa Emacs cuando usa C-h k
o C-h c
para describir un enlace.
windmove-default-keybindings
para especificar un modificador diferente para usar junto con las teclas de flecha; por lo que esa función aún puede ser útil para las personas que utilizan el modo de selección de turno.
Personalmente prefiero usar window-number.el
Para seleccionar una ventana diferente, use Ctrl- x, Ctrl-j n
Donde n es el número de la ventana, la línea de modelo de cada ventana muestra su número, como se muestra en la captura de pantalla.
Simplemente descargue window-number.el , colóquelo en su ruta de carga de emacs y use lo siguiente en su.emacs
(autoload 'window-number-mode "window-number"
"A global minor mode that enables selection of windows according to
numbers with the C-x C-j prefix. Another mode,
`window-number-meta-mode' enables the use of the M- prefix."
t)
Hay otro modo similar llamado switch-window.el
que le da números grandes en las ventanas ... (al presionar el número se cambia la ventana y se revierte la pantalla).
(fuente: tapoueh.org )
C-x C-j
, ya que ese es el enlace predeterminado para dired-jump
si usted (require 'dired-x)
. (Vea M-x customize-group RET dired-keys RET
si desea anular eso.)
switch-window.el
intentarlo, usa en su C-x o
lugar, y cuando solo hay dos ventanas activas, simplemente selecciona la otra ventana. Creo que es más sabio volver a unirse C-x o
para hacer el window-number
truco, tienes razón dired-jump
. Personalmente, hago menos cambios de ventana y C-x b
me uso , pero tener la mejora C-x o
es bastante agradable.
Si trabaja mucho con varias ventanas emacs (> 3) y querrá guardar algunas pulsaciones de teclas, agregue esto a su archivo de inicio y estará mejor:
(defun frame-bck()
(interactive)
(other-window-or-frame -1)
)
(define-key (current-global-map) (kbd "M-o") 'other-window-or-frame)
(define-key (current-global-map) (kbd "M-O") 'frame-bck)
Ahora solo recorre rápidamente las ventanas con Mo
other-window
que funcione.
Aquí hay algunas respuestas muy buenas y completas, pero para responder la pregunta de manera minimalista:
(defun prev-window ()
(interactive)
(other-window -1))
(define-key global-map (kbd "C-x p") 'prev-window)
previous-window
incorporado.
M-x
lo que debería tener un propósito diferente.
Basado en la idea de @Nate pero ligeramente modificada para admitir el ciclo hacia atrás entre ventanas
;; Windows Cycling
(defun windmove-up-cycle()
(interactive)
(condition-case nil (windmove-up)
(error (condition-case nil (windmove-down)
(error (condition-case nil (windmove-right) (error (condition-case nil (windmove-left) (error (windmove-up))))))))))
(defun windmove-down-cycle()
(interactive)
(condition-case nil (windmove-down)
(error (condition-case nil (windmove-up)
(error (condition-case nil (windmove-left) (error (condition-case nil (windmove-right) (error (windmove-down))))))))))
(defun windmove-right-cycle()
(interactive)
(condition-case nil (windmove-right)
(error (condition-case nil (windmove-left)
(error (condition-case nil (windmove-up) (error (condition-case nil (windmove-down) (error (windmove-right))))))))))
(defun windmove-left-cycle()
(interactive)
(condition-case nil (windmove-left)
(error (condition-case nil (windmove-right)
(error (condition-case nil (windmove-down) (error (condition-case nil (windmove-up) (error (windmove-left))))))))))
(global-set-key (kbd "C-x <up>") 'windmove-up-cycle)
(global-set-key (kbd "C-x <down>") 'windmove-down-cycle)
(global-set-key (kbd "C-x <right>") 'windmove-right-cycle)
(global-set-key (kbd "C-x <left>") 'windmove-left-cycle)
Solo para agregar a la respuesta de @Nate, @aspirin y @ Troydm, encuentro que esta es una adición muy útil si decide vincular los comandos de windmove a cualquier combinación de teclas que elija:
(setq windmove-wrap-around t)
Con la configuración predeterminada, obtendrá un error cuando intente moverse a una ventana que no existe, lo que se vuelve un poco molesto después de un tiempo. Sin embargo, cuando se establece windmove-wrap-around, al intentar moverse fuera de la parte inferior del marco, por ejemplo, se seleccionará la ventana superior del marco. Este puede ser un comportamiento más intuitivo para usted.
M-n
y M-p
tiene más sentido para mí, ya que son análogos a C-n
( next-line ) y C-p
( previous-line ):
(define-key global-map (kbd "M-p") 'previous-multiframe-window)
(define-key global-map (kbd "M-n") 'other-window)
M-n
y M-p
ya se usan en terminales (gdb, python, ielm, etc.) por lo que tendrás que volver a cambiar a otro método para saltar fuera del búfer del terminal.
En referencia a la respuesta de Nate, reemplacé el arrow keys
para usar el tradicional p
para ir up
, n
para ir down
, f
para ir right
y b
para ir left
. También reemplacé la tecla Ctrl
con, Super
ya que C-p, C-n, C-f and C-b
son las teclas de movimiento predeterminadas. Esta combinación con le M
permite saltar caracteres y líneas en lugar de pasar uno por uno después de cada pulsación de tecla. Por lo tanto, Super
key consideró la mejor opción para mantener una combinación de teclas fácil. Además, ¡ahora ya no tienes que quitar la mano de la línea de casa!
(global-set-key (kbd "s-p") `windmove-up)
(global-set-key (kbd "s-n") `windmove-down)
(global-set-key (kbd "s-f") `windmove-right)
(global-set-key (kbd "s-b") `windmove-left)
¡Espero eso ayude!
(global-unset-key (kbd "M-j"))
(global-unset-key (kbd "M-k"))
(global-set-key (kbd "M-j") (lambda () (interactive) (other-window 1)))
(global-set-key (kbd "M-k") (lambda () (interactive) (other-window -1)))
altjy altkrecorrerá los búferes visibles. Hacia adelante y hacia atrás, para ser exactos.
Ya existe un paquete que le permite cambiar de ventana usando M-. consulte este sitio web . Agregue esto a su archivo de inicio:
(require 'windmove)
(windmove-default-keybindings 'meta) ;; or use 'super to use windows key instead alt
(global-set-key (kbd "C-x a") 'ace-swap-window)
(global-set-key (kbd "C-x q") 'ace-select-window)
download ace-window from the melpa repo if you don't know how to do that
put this in your .emacs file if you don't have one create it
(package-initialize)
(require 'package)
(add-to-list 'package-archives '("melpa" , "http://melpa.org/packages/"))
(package-initialize)
then "m-x list-packages"
C-x z
para repetir el último comando para cambiar rápidamente las ventanas.