“Diğer pencere” ile gösterilen pencerenin tanımlanması


10

Emacs, benden daha sık, 4 pencere veya daha fazla ile bitiriyorum.

Bu örneği kullanacağım:

+--------|-----------+
|        |           |
|   1    |   2       |
|        |           |
+--------+-----------+
|    3   |     4     |
|        +-----------+
|        |     5     |
+--------+-----------+

Birçok işlev eylemde bulunabilir other-window(genellikle aynı pencere ile işaretlenir C-x o). Özellikle faydalıdır scroll-other-window. Ancak, 4 veya daha fazla pencere açıldığında, other windowistediğim pencere olması pek olası değildir.

Pencere / arabellek düzenini değiştirmeden ayar yapmanın kolay bir yolu var mı other-window? Tabii ki, bir grup kullanarak yapılabilir C-x 4 bve C-bancak düzeni değiştirmek istemiyorum. Örneğin:

  • yukarıdaki resimde 4 numaralı pencerede düzenleme yapıyorsanız C-M-v, pencereyi 1 kaydırmak için kolay bir yol var mı?
  • Ya da basitçe, pencere 3'teki odağı, other-windowpencere 2'yi nasıl ayarlayacağınızı varsayalım ?

Yanıtlar:


7

Sorunuzu doğru okursam, esas olarak diğer pencerelerde görüntülenen arabelleklerde (geçerli pencere düzenini korurken) çalıştırmakla ilgilenirsiniz.

İşaret eden pencereyi değiştirmek bunu other-windowbaşarmanın bir yoludur, ancak alternatif bir iş akışı önermek isterim:

Bunun aksine other-window, ace-windowhızlı bir şekilde belirli bir pencereye atlamanızı sağlar : Aradığınızda ace-window, her pencerede benzersiz bir sayı gösterir. Belirli bir pencereye atlamak için karşılık gelen sayıyı yazmanız yeterlidir. Yalnızca iki pencereniz varsa, sayı girmenizi istemeden diğer pencereye nokta koyar. Bu ekran görüntüsü başka bir pencereye geçmeyi, kaydırmayı ve orijinal pencereye geri dönmeyi gösterir:

Ace-window'un tanıtımı

Eğer bağlamak Eğer ace-windowüzere C-x o, ciltleme ek bir anahtar ezberlemek zorunda değilsiniz ve bir kompresörlü sürümünü kullanıyorsanız gibi hissedeceksiniz other-window.

Ayrıca, dokunursanız ve / veya parmaklarınızı ana satırdan çok uzağa taşımamayı tercih ederseniz, ace-windowsayı yerine harf kullanarak pencereleri "numaralandırmak" talimatını verebilirsiniz (aşağıya bakın).

ace-windowMELPA'da mevcuttur . Yükledikten sonra M-x package-install RET ace-window RET, yukarıda açıklandığı gibi ayarlamak için init dosyanıza aşağıdakileri koyabilirsiniz:

(global-set-key (kbd "C-x o") 'ace-window)
(setq aw-keys '(?a ?b ?c ?d ?e ?f ?g ?h ?i))

Demo için teşekkürler, ben diğer sitelerde bu paketi gördüm ve bağlı gibi aslında kolayca pencere geçiş yapabilirsiniz works.I merak ediyorum M-1 M-2 ..kullanarak pencere sayısını 1, 2 seçmek için window-numberpaket
Lompik

1

Kaynağının hızlı bir incelemesinden, other-windowaslında next-windowc tarafından tanımlanan pencereye bağlı gibi görünüyor . Ne yazık ki scroll-other-windowc de tanımlanır ve muhtemelen sonraki pencereyi oradan çağırır. Bunu geçersiz kılmanın kolay olduğunu sanmıyorum.

Ancak, switch-to-buffer-other-windowkullanım gibi görünüyor pop-to-buffer, bu yüzden orada biraz şans olabilir.


1

Pencere listesini değiştirmenin kolay bir yolu yoktur, bu nedenle döndürülen sonuç other-windowaz çok sabittir. Bu, pencerelerde gezinirken tutarlılığa izin verdiği için kendi başına kötü bir şey değildir. Açıkladığınız iki senaryo ile ilgili olarak, bazı elisp veya makrolarla iş akışınıza uygun olabilirsiniz.

yukarıdaki resimde 4. pencerede düzenleme yapıyorsanız, pencereyi 1 kaydırmak için CMv'yi ayarlamanın kolay bir yolu var mı?

other-windowUygun sayıda kullanmak , aşağı kaydırmak ve orijinal pencereye geri dönmek için aşağıdaki gibi basit bir snippet kullanabilirsiniz .

 (defun my-scroll-down-other-window (&optional arg)
 "Like `scroll-other-window' but takes a prefix argument 
 that indicates which window to scroll."
  (interactive "p")
  (save-selected-window
    (other-window arg)
    (scroll-down)))

Hangi pencerenin kaydırılacağını belirlemek için bir önek bağımsız değişkeni iletebilirsiniz. Çıkarım yapabileceğiniz gibi, kaydırmadan önce pencerelerin sayısını other-windowatlamak için dahili mekanizmayı kullanır arg. save-selected-windowOlmasını sağlar odak orijinal pencereye dönecektir. Dokümantasyonu, other-windowbu pasajı davranışınıza uyacak şekilde değiştirme hakkında daha fazla bilgi sağlayabilir.

Ya da basitçe, pencere 3'teki odağı, other-windowpencere 2'yi nasıl ayarlayacağınızı varsayalım ?

Tekrar arama sırasındaki prefix-arggibi kullanın . Sağlanacak gerçek sayı, onları hangi sırayla bölüştüğünüze bağlı olarak değişir ve yeni pencereler oluşturmadığınız sürece değişmez. Alternatif olarak, seçilen pencereleri hızlı bir şekilde değiştirmek için MELPA gibi veya MELPA gibi kolaylık paketlerini kullanabilirsiniz .C-3 C-x oother-windowwindow-numberace-window


sağ, pencere listesini manipüle etmenin kolay bir yolu yok. Ön ekleri kullanmakta zorlanıyorum. Başka bir ulaşılamaz anahtar eklemek gibi bir şey ve bir şey yavaşlatır
Lompik

Klavye makroları / tuş bağlamaları bunun için. Bu, iş akışınızın normal bir parçasıysa, örneğin <f7> nn. Pencereyi kaydırmak için önek eşleme tabanlı tuş bağlama özelliğini kolayca tanımlayabilirsiniz . Klavye makrolarıyla geçici tek tuş bağlantıları oluşturun.
Vamsi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.