Emacs, switch to previous window

后端 未结 13 1102
你的背包
你的背包 2020-12-04 07:12

In Emacs, C-x o takes me to the next window.

What keyboard macro takes me to the previous window in Emacs?

相关标签:
13条回答
  • 2020-12-04 07:28

    You might also want to try using windmove which lets you navigate to the window of your choice based on geometry. I have the following in my .emacs file to change windows using C-x arrow-key.

    (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)
    
    0 讨论(0)
  • 2020-12-04 07:28

    The fastest method I have found for switching to the previous window is to mash a couple keys together as a "key-chord". The following lets you use your left pinky+ring fingers together to go to previous window:

    (key-chord-define-global "qw" 'prev-window)
    (key-chord-define-global "'y" 'other-window) ; bonus for my colemak, adjust otherwise
    (key-chord-define-global ";'" 'other-window) ; probably normal
    
    

    (This is possible because Emacs key chords are order independent, meaning that qw is the same as wq.)

    0 讨论(0)
  • 2020-12-04 07:30

    If you work with multiple emacs windows (>3) a lot and you will want to save some keystrokes add this to your init file and you'll be better off:

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

    Now just cycle quickly thru the windows with M-o

    0 讨论(0)
  • 2020-12-04 07:39

    Base on idea from @Nate but slightly modified to support backwards cycling between windows

    ;; 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)
    
    0 讨论(0)
  • 2020-12-04 07:45

    Personally I prefer to use window-number.el

    To select a different window, use Ctrl-x, Ctrl-j n

    Where n is the number of the window, the modeline of each window shows it's number, as shown in the screenshot.

    Just download window-number.el, place it in your emacs load-path and use the following in your .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)
    

    There's another similar mode called switch-window.el which gives you big numbers in the windows... (pressing the number switches the window and reverts the display.)


    (source: tapoueh.org)

    0 讨论(0)
  • 2020-12-04 07:45
    (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)))
    

    altj and altk will cycle through your visibles buffers. Forwards and backwards, to be exact.

    0 讨论(0)
提交回复
热议问题