Emacs pencere yönetimine genel bakış
Pencere yönetiminin itibarı ve potansiyeli
- Emacs'in pencere yönetiminin itibarı pek iyi değildir
- Bunun büyük kısmı, son derece esnek ve ayrıntılı bir yerleşim sistemi ile kaba kontrolün birleşmesinden kaynaklanır
- Bu da pencereleri ele almak için daha iyi metaforlar ve affordance'lar sunan araçlar geliştirmek ve kullanmak için alan bırakır
Temel pencere yönetimi seçenekleri
other-window ve "sonraki pencere"
other-window (C-x o), temel bir pencere değiştirme deneyimi sunar
- Bu, Emacs eğitiminde öğretilir ve pencere sayısı az olduğunda iyi çalışır
- Pencere seçimi tüm frame boyunca (kabaca) saat yönünde döner
windmove
windmove, yönlere göre pencereler arasında odağı taşımak ve tamponları pencereler arasında taşımak için yerleşik bir Emacs kütüphanesidir
- Vim kullanıcılarının beklediği türden bir özelliktir ve
evil-mode kullanıcıları zaten Windmove kullanmaktadır
windmove-left, -right, -up, -down, yönlerle ilişkilendirilmiş tuşlara bağlanarak kullanılır
frames-only-mode
frames-only-mode, Emacs pencere işlemesini işletim sistemine bırakmanıza olanak tanır
- Tüm tamponları yeni frame'lerde açarsanız iş pencere yöneticisine kalır
- Bu, Emacs tamponlarını işletim sistemi pencereleriyle eşdeğer hale getirir ve aynı tuşlarla yönetilmesini sağlar
winum-mode
- Winum, n pencere arasında geçiş için gereken çabanın O(n) (
other-window) seviyesinden O(√n) (windmove) ve ardından O(1) seviyesine doğal evrimidir
- Mod satırına pencere numaraları ekler, böylece numarayla pencere seçebilirsiniz
- Minibuffer etkin olduğunda her zaman 0 numarası atanır
ace-window
- ace-window, klavye tabanlı Emacs pencere kontrolünün zirvesidir
- Her pencerenin üst kısmına birer "ipucu" yerleştirir ve ilgili tuşa bastığınızda odak o pencereye geçer
- Pencereyi genel bir yöntemle "seçersiniz" ve o pencereyle ne yapacağınıza kullanıcı karar verir
- Pencere silme, taşıma veya değiştirme, bölme, tampon gösterme gibi yerleşik işlemlerin yanı sıra özel işlemler de eklenebilir
Fare kullanımı
- Pencere yönetiminde fare kullanmanın avantajları anında ve açıktır
- Pencere seçimi temel fare kullanımının doğal bir uzantısıdır ve pencere yeniden boyutlandırma basittir
- Bağlam menüleri ve sürükle-bırak desteği oldukça sezgiseldir
- Dezavantajlarını hafifletmek adına, zaten başka işler için fare kullanıyorsanız Emacs'i fareyle kullanmak pratikte en az dirençli yoldur
transpose-frame (döndürme, çevirme ve yansıtma)
- transpose-frame, bir frame içindeki pencere yerleşimini döndürmek veya yansıtmak için komutlar sunar
rotate-frame, flip-frame, flop-frame uygun tuşlara bağlanarak sık kullanılır
window-prefix-map
window-prefix-map, varsayılan olarak C-x w kısayoluna bağlıdır ve bazı kullanışlı pencere yönetimi komutlarını bir araya toplar
split-root-window-right ve split-root-window-below, frame'in kök penceresini böler
tab-detach ve tear-off-window, pencereyi yeni bir sekmeye veya yeni bir frame'e taşımak için kullanışlı komutlardır
other-window-prefix
other-window-prefix, pencere seçimini tampon gösteriminden ayırmanın bir yolunu sunar ve pencereyle ilgili üç can sıkıcı durumu çözer
- Birçok Emacs komutu varsayılan eylem, tampon ve pencereyi sıkı şekilde birbirine bağlar.
other-window-prefix ile komutun tamponunu başka bir pencerede gösterebilirsiniz
other-window-prefix, bağlantılar gibi nesneleri etkinleştirirken pencere seçmenizi sağlar
other-window-prefix, her paket yazarının çalışma biçimine uyum sağlamaya veya özelleştirme yapmaya gerek kalmadan "bağlantı" türü nesneleri tekdüze biçimde açmanızı sağlar
Pencere yapılandırmasını kaydetme ve geri yükleme
window-configuration-to-register biraz hantal bir araçtır ama büyük kırmızı bir sıfırlama düğmesi olarak mükemmeldir
- İstediğiniz zaman bu komutla geçerli pencere yapılandırmasını bir register'a kaydedip ardından
jump-to-register ile geri yükleyebilirsiniz
winner-mode ile Emacs'in geçmiş pencere düzenlerinin bir yığınını tutmasını sağlayabilirsiniz
Derinlemesine inceleme
İleri geri gitme yöntemleri
- Aynı anda kaç pencere açık olursa olsun, çoğu durumda sadece iki pencere arasında geçiş yapmanız gerekir
other-window-mru komutunu kullanarak pencere çiftleri arasında geçiş yapabilirsiniz
other-window iyileştirmeleri
- Tek bir pencere varsa
other-window komutunu frame'i bölecek şekilde ayarlayabilirsiniz
- Pencereleri mekânsal sıralama yerine son kullanım sırasına göre döndürecek şekilde değiştirebilirsiniz (
switchy-window paketi)
- Her çağrılışta pencere değiştirme yönünü tersine çevirerek iki pencere arasında doğal biçimde sırayla geçiş yapmasını sağlayabilirsiniz
ace-window dispatch ile pencere büyüsü
ace-window, pencereler için completing-read'in dize listeleri için yaptığı işleve benzer bir rol oynar
aw-select, her türlü işlemi her türlü pencerede çağırmak için gereken üç adımın ilk ikisi olan filtreleme ve seçim için idealdir
ace-window-one-command, ace-window ile bir pencere seçmenizi ve ardından o pencerede herhangi bir basit komutu çalıştırmanızı sağlar
ace-window-prefix, other-window-prefix'e benzer ama bir sonraki komutun tamponunu gösterecek pencereyi açıkça seçmenizi sağlar
Gerçekten pencere değiştirmek gerekiyor mu?
- Avy ile pencereden bağımsız gezinme, daha genel bir fikrin özel bir örneğidir
- Metin kapsayıcıları olarak pencereler gereksiz bir soyutlama olabilir
mark-ring ve global-mark-ring, gezindiğiniz yerleri izleyerek gerektiğinde pencereler arasında dolaşmanıza olanak tanır
point-to-register ve jump-to-register ile daha sonra gidilecek konumları elle sabitleyebilirsiniz
- Yer imleri oluşturup onlara gitmek, Emacs'in ya da kullanıcının anlamlı bulduğu konumlar arasında pencereden bağımsız gezinmek için birçok seçenek sunar
Pencerelerle etkileşime girmemek için pencere işleme
display-buffer-alist ve otomatik pencere davranışları kullanılarak köstebek vurma benzeri pencere sorunu çözülebilir
- Her gün Emacs'te gördüğünüz her tür tampon için kurallar tanımlarsanız pencere yönetiminin büyük kısmı çözülür
display-buffer-alist ile ilgili sorun çalışmaması değil, çok fazla emek gerektirmesidir
- Shackle paketi,
display-buffer-alist'in tuhaflıklarını örter ve pencere kurallarını belirtmek için sadeleştirilmiş bir elisp arayüzü sunar
- Emacs dağıtımları genellikle bu tür ayarları tanımlamak için basit arayüzler sağlar
Popper, Popwin, shell-pop ve vterm-toggle
- Popwin ve Popper, tüm tamponların eşit yaratılmadığı gözlemine dayanır
- Bu paketlerle yardımcı pencere kullanan açılır tamponları tanımlayabilir ve gerektiğinde bu pencereleri çağırıp kapatabilirsiniz
Eksik parçalar
window-tree
- Emacs'in pencereleri temsil etme biçimi ile yukarıda tartışılan yaklaşımlarla pencereleri işleme biçimi arasında temel bir fark vardır
- Bir frame içindeki pencereler ağaç yapısında düzenlenir; yaprak düğümler "gerçek" pencereler, diğerleri ise "iç" pencerelerdir
- Pencere ağacı işlemleri için komutlar eklemek birçok yeni olasılığın önünü açar
Döşemeli pencere yöneticisi bütünleştiricisi
- Emacs'in pencere-ağacı modeli, i3 veya bspwm gibi manuel döşemeli pencere yöneticilerinin modeliyle neredeyse aynıdır
- Döşemeli bir pencere yöneticisinin içinde neden başka bir döşemeli pencere yöneticisi kullanıldığı doğal olarak sorgulanır
- Emacs'te tüm pencere yöneticileriyle entegrasyon için daha temiz ve birleşik bir arayüz sunmak işleri çok daha kolaylaştırabilir
Görünüm
- Pencereleri değiştirme, taşıma, atlama, oluşturma, silme ve işleme yöntemleri; komut çağırırken anında pencere gösterimini kontrol etmenin çeşitli yolları; pencerelerde çalışmanın ve pencereleri hiç düşünmemenin yolları vardır
- Pencere yönetimi karmaşıktan ziyade açıktır
- Emacs malzemeleri ve bazı yönlendirmeleri sunar; bu malzemeler kendi başına temel bir öğün olarak kullanılabilir
- Ancak biraz pişirme ile lezzetli bir şey ortaya çıkarabiliriz
GN⁺ görüşü
- Pencere yönetimi, Emacs'in en büyük zayıflıklarından biridir ve kullanıcı dostu değildir. Özellikle yeni başlayanlar için kafa karıştırıcı olabilir.
- Sunulan yöntemler Emacs'in pencere yönetimi sorunlarını hafifletebilir, ancak temel bir çözüm değildir. Daha sezgisel ve kullanımı kolay bir pencere yönetim sistemine ihtiyaç vardır.
- Emacs'in pencere yönetimi çok
1 yorum
Hacker News görüşü
Aşağıda Hacker News yorumlarının özeti yer alıyor:
ace-window,ace-window-display-mode,frames-only-modegibi paketlerin kullanılabileceği öneriliyor.windmove-modeu etkinleştirip(windmove-default-keybindings 'control)ile Ctrl+yön tuşları üzerinden pencere geçişi yapılabilmesini sağlayan bir ipucu paylaşılıyor.zygosporepaketi sayesindeC-x 1ile pencereyi kapattıktan sonra, tekrarC-x 1e basarak önceki pencere düzeninin geri yüklenebileceği anlatılıyor.hledger-balance-sheetfonksiyonu çalıştırıldığında journal dosyasını solda açık tutup, sonucu sağda %30 boyutunda bölerek göstermenin bir yolu soruluyor.