it-swarm-tr.com

Emacs, önceki pencereye geç

Emacs’de C-x o beni bir sonraki pencereye götürür.

Hangi klavye makrosu beni Emacs'taki önceki pencereye götürür?

91

Bu olurdu C-- C-x o

Diğer bir deyişle, C-x o -1 argümanı ile. Arasına sayısal bir argüman ekleyerek kaç pencerenin taşınacağını belirleyebilirsiniz. C-u ve komut, olduğu gibi C-u 2 C-x o. (C-- kısayol C-u - 1)

84
JB.

Ayrıca, geometriye dayanarak seçtiğiniz pencereye gitmenizi sağlayan ön cam kullanmayı da deneyebilirsiniz. C-x ok tuşlarını kullanarak pencereleri değiştirmek için .emacs dosyamda aşağıdakiler var.

(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

Şahsen ben kullanmayı tercih ediyorum window-number.el

Farklı bir pencere seçmek için Ctrl-xCtrl-j  n

Pencerenin sayısı n olduğunda, her pencerenin modelini ekran görüntüsünde gösterildiği gibi bu sayıyı gösterir.

Sadece indirin window-number.el , emacs yük yolunuza koyun ve aşağıdakileri .emacs adresinizde kullanın

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

switch-window.el adında başka bir benzer mod var, bu da pencerelerde size büyük sayılar verir ... (sayıya basmak pencereyi değiştirir ve ekranı geri döndürür.)

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

29
ocodo

Birden fazla emacs penceresiyle (> 3) çok çalışıyorsanız ve bazı tuş vuruşlarını kaydetmek istiyorsanız, bunu init dosyanıza ekleyin ve daha iyi olursunuz:

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

Şimdi sadece M-o ile pencereler arasında hızlıca dolaşın

12
octi

Burada çok iyi ve tam cevaplar var, ancak soruyu minimalist tarzda cevaplamak:

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

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

M-n ve M-p benim için en anlamlı olanı çünkü C-n (sonraki satır) ve C-p (önceki satır) ile aynıdır

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

( this ve that tarafından ilham alınmıştır)

4
Tshepang

Sadece @Nate, @aspirin ve @ Troydm'in cevabını eklemek için: Windmove komutlarını seçtiğiniz tuş kombinasyonuna bağlamaya karar verirseniz, bunu çok yararlı bir ek olarak buluyorum:

(setq windmove-wrap-around t)

Varsayilan konfigürasyonla, bir süre sonra sinir bozucu olan bir pencereye gitmeye çalismaya kaldiinizda hata ile karşılaşacaksiniz. Bununla birlikte, windmove-wrap-around ayarlandığı zaman, örneğin çerçevenin altından çıkmaya çalışmak, bunun yerine çerçevedeki en üstteki pencereyi seçecektir. Bu sizin için daha sezgisel bir davranış olabilir.

4
Hal

@Nate'den gelen fikri temel alın ama pencereler arasında geriye doğru dönmeyi desteklemek için hafifçe değiştirildi

;; 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 ve altk görsel arabellekleriniz arasında geçiş yapacak. İleri ve geri, tam olarak.

2
sjas

Nate'in cevabına bakıldığında, p, up için n, down için f, right için kullanmak üzere arrow keysb ve left _ için gidiyor (_ VARIABLE) _. Ayrıca, Ctrl ile Super tuşunu, C-p, C-n, C-f and C-b ile varsayılan hareket tuşları olarak değiştirdim. M ile bu kombinasyon, her tuşa basıştan sonra sadece birer birer atlamak yerine karakterleri ve satırları atlamanıza izin verir. Böylece Super tuşu, kolay tuş ciltlemeyi korumak için en iyi seçimi hissetti. Ayrıca, artık elinizi artık evden çekmeniz gerekmiyor!

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

Umarım yardımcı olur!

2

M- kullanarak pencereleri değiştirmenizi sağlayan bir paket zaten var. bu web sitesini kontrol edin . Bunu init dosyanıza ekleyin:

(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