it-swarm-eu.dev

Emacs, přepněte do předchozího okna

V Emacsu C-x o mě zavede do dalšího okna.

Jaké makro klávesnice mě zavede do předchozího okna v Emacsu?

91

To by bylo C-- C-x o

Jinými slovy, C-x o s argumentem -1. Můžete určit, kolik oken se má přesunout vložením číselného argumentu mezi C-u a příkaz jako v C-u 2 C-x o. (C-- je zkratka pro C-u - 1)

84
JB.

Můžete také zkusit použít větrný mlýn, který vám umožní přejít k oknu podle vašeho výběru na základě geometrie. Mám následující soubor v souboru .emacs ke změně oken pomocí klávesy C-x šipka.

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

Osobně dávám přednost použití window-number.el

Chcete-li vybrat jiné okno, použijte Ctrl-xCtrl-j  n

Kde n je číslo okna, modeline každého okna ukazuje jeho číslo, jak je ukázáno na obrázku.

Stačí stáhnout window-number.el , umístit ho do vaší emacs-load-path a použít následující .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)

Je zde další podobný režim nazvaný switch-window.el který vám dává velká čísla v oknech ... (stisknutím čísla přepnete okno a vrátíte displej.)

http://tapoueh.org/images/emacs-switch-window.png

29
ocodo

Pokud pracujete s více okny emacs (> 3) a budete chtít uložit některé klávesové zkratky, přidejte je do svého souboru init a budete lépe:

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

Nyní stačí rychle projít okny pomocí M-o

12
octi

Tam jsou některé velmi dobré a úplné odpovědi zde, ale odpovědět na otázku v minimalistické módě:

 (defun prev-window ()
   (interactive)
   (other-window -1))

 (define-key global-map (kbd "C-x p") 'prev-window)
11
bnzmnzhnz

M-n a M-p je pro mě nejvýznamnější, protože jsou analogické s C-n (next-line) a C-p (previous-line):

(define-key global-map (kbd "M-p") 'previous-multiframe-window)
(define-key global-map (kbd "M-n") 'other-window)

(inspirováno to a to )

4
Tshepang

Chcete-li přidat odpověď @Nate, @aspirin a @ Troydm, považuji to za velmi užitečný doplněk, pokud se rozhodnete svázat příkazy windmove s libovolnou kombinací kláves, kterou vyberete:

(setq windmove-wrap-around t)

Ve výchozím nastavení obdržíte chybu, když se pokusíte přejít na okno, které neexistuje a které se po čase stane nepříjemným. Když je však nastaven větrný oblouk, pokuste se například přesunout z dolní části rámečku místo toho například vybrat horní okno v rámečku. To může být pro vás intuitivnější chování.

4
Hal

Základem je myšlenka z @Nate, ale mírně upravená pro podporu zpětného cyklování mezi okny

;; 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)
4
Troydm
(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 a altk bude procházet vaše visibles buffery. Přesné dopředu a dozadu.

2
sjas

V souvislosti s odpovědí Nate jsem nahradil arrow keys, abych použil tradiční p pro přechod up, n pro přechod down, f pro přechod right a b pro přechod left. Také jsem nahradil Ctrl s Super klíčem jako C-p, C-n, C-f and C-b jsou výchozí klávesy pohybu. Tato kombinace s M umožňuje přeskakovat znaky a čáry namísto toho, aby po každém stisknutí klávesy procházely jen jeden po druhém. Klíč Super se tak cítil jako nejlepší volba, aby byla jednoduchá klávesová vazba. Také teď už nemusíte brát ruku z domácí řady!

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

Doufám, že to pomůže!

2

Existuje již balíček, který umožňuje přepínat okna pomocí M-. zkontrolovat tuto webovou stránku . Přidat do svého souboru init:

(require 'windmove)
(windmove-default-keybindings 'meta) ;; or use 'super to use windows key instead alt
1
aspirin
(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"
0
user9618991