En Emacs, C-x ome lleva a la siguiente ventana.
¿Qué macro de teclado me lleva a la ventana anterior en Emacs?
En Emacs, C-x ome lleva a la siguiente ventana.
¿Qué macro de teclado me lleva a la ventana anterior en Emacs?
Respuestas:
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-xvinculaciones (que entran en conflicto con las vinculaciones predeterminadas también útiles para previous-buffery 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 ko C-h cpara describir un enlace.
windmove-default-keybindingspara 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.elque 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-jumpsi usted (require 'dired-x). (Vea M-x customize-group RET dired-keys RETsi desea anular eso.)
switch-window.elintentarlo, usa en su C-x olugar, y cuando solo hay dos ventanas activas, simplemente selecciona la otra ventana. Creo que es más sabio volver a unirse C-x opara hacer el window-numbertruco, tienes razón dired-jump. Personalmente, hago menos cambios de ventana y C-x bme uso , pero tener la mejora C-x oes 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-windowque 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-windowincorporado.
M-xlo 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-ny M-ptiene 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-ny M-pya 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 keyspara usar el tradicional ppara ir up, npara ir down, fpara ir righty bpara ir left. También reemplacé la tecla Ctrlcon, Superya que C-p, C-n, C-f and C-bson las teclas de movimiento predeterminadas. Esta combinación con le Mpermite saltar caracteres y líneas en lugar de pasar uno por uno después de cada pulsación de tecla. Por lo tanto, Superkey 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 zpara repetir el último comando para cambiar rápidamente las ventanas.