web-dev-qa-db-fra.com

Comment changer de focus après la séparation du tampon dans emacs?

Je voudrais qu'après la division de la fenêtre (C-x 3 ou C-x 2), le curseur se trouve automatiquement dans le nouveau tampon ouvert (autre que celui en cours). Comment puis-je obtenir ce comportement?

33
morgan freeman

!!! NE PAS UTILISER CETTE RÉPONSE !!! - comme indiqué dans les commentaires, conseiller split-window peut entraîner des effets secondaires indésirables.

Je recommande la réponse de Bozhidar Batsov .


Mettez ce qui suit dans votre fichier .emacs:

(defadvice split-window (after move-point-to-new-window activate)
  "Moves the point to the newly created window after splitting."
  (other-window 1))
13
Thomas

Vous pouvez basculer entre les tampons avec C-x o. Pour faire cela automatiquement, je ne pense pas qu’il existe une commande pour cela.

51
Giann

Vous pouvez le faire comme ça:

(global-set-key "\C-x2" (lambda () (interactive)(split-window-vertically) (other-window 1)))
(global-set-key "\C-x3" (lambda () (interactive)(split-window-horizontally) (other-window 1)))

Dans Emacs 24.3.1, cela fonctionne si vous modifiez l'argument 1 pour 0.

23
Bozhidar Batsov

Sowie das Aufteilen des Rahmens manuell mitC-x 2une autreC-x 3werden Puffer auch automatisch einige Male "aufgeplatzt". Vous êtes déjà inscrit (e) dans les normes suivantes?.

Il est impossible de changer les choses avant de commencer à jouer dans ce domaine. Veuillez noter que le code _split-window-sensibly eingestellt a été sélectionné pour le moment. Vous avez également le plaisir de vous amuser, le code _split-window-sensibly du code de la route et le code de la poche.

Le chapeau de Leider meurt Nebeneffekt, d Sie Sie den *Completions*- Puffer auswählen, wenn Sie auf drückenTABim Minipuffer. En savoir plus sur ce sujet, à propos du contenu minier actif et in diesem Fall nicht umzuschalten. Merci beaucoup, soyez le premier à donner votre avis sur Szenarien. Merci beaucoup, soyez le premier à donner votre avis sur ce sujet, soyez le premier à donner votre avis.

;; after splitting a frame automatically, switch to the new window (unless we
;; were in the minibuffer)
(setq split-window-preferred-function 'my/split-window-func)
(defun my/split-window-func (&optional window)
  (let ((new-window (split-window-sensibly window)))
    (if (not (active-minibuffer-window))
        (select-window new-window))))

(Funktioniert mit Emacs 24.5.1.)

1
edam

Mon idée de quand vous voudriez suivre la fenêtre après un split-window était quand il y avait le même tampon comme dans le code suivant:

(defun split-window--select-window (orig-func &rest args)
  "Switch to the other window after a `split-window'"
  (let ((cur-window (selected-window))
        (new-window (apply orig-func args)))
    (when (equal (window-buffer cur-window) (window-buffer new-window))
      (select-window new-window))
    new-window))
(advice-add 'split-window :around #'split-window--select-window)

Simple

0
Nothus