Dolaylı arabellekleri neden kullanmalıyım?


Yanıtlar:


16

Aynı arabelleğin birden çok konumunu görmek ve düzenlemek için. Bu nedenle, uzun bir arabelleği kaydırmak zorunda değilsiniz, sadece pencereyi görünür bölgeye geçirin. Her klonlanmış tampon ayrıca farklı işaret halkası, daralma ve diğer tampon özelliklerine sahiptir. Dolaylı arabelleği kullanmaz ancak aynı arabelleğin başka bir penceresini oluşturursanız, her şey paylaşılır ve farklı konumları görüntüleme ve düzenlemenin ötesinde başka gelişmiş özellikler gerçekleştiremezsiniz. Örneğin, dolaylı bir tamponla, tüm kod bloğunu katlayabilir, orijinal tamponu etkilemeden etkili bir şekilde bir "etiket ağacı" oluşturabilirsiniz. Bir pencere kullanarak, her iki tampon da aynı olduğundan her iki pencerede de her iki tampon da katlanır.

Özetle, dolaylı arabellek aynı metni ve dosyayı orijinal ara belleğinizde paylaşan tamamen farklı bir arabellektir, bu nedenle klonlanmış arabelleği kaydettiğinizde orijinal dosyanızı da kaydeder.


3
Dolaylı tamponların faydaları olduğunu kabul ediyorum. Ancak ilk noktanızın dolaylı olması için arabelleklere ihtiyacı yoktur. Aynı arabellek iki pencerede açılsa bile, aynı ara belleğin birden çok konumunu görebilir ve düzenleyebilirsiniz. Ama evet, bağımsız daralma, katlama, vb. Bence dolaylı bir tamponun güçlü özellikleridir.
Kaushal Modi

5
Aynı tamponu birden çok modla düzenleyin (dolaylı arabelleği daraltma ile birleştirin). Bir tamponun bazı bölümlerini işaretleme modlarıyla, başka bir bölümünü python modlarıyla, başka bir bölümünü json modlarıyla
düzenleyebilirsiniz

Tek başına birden çok pencere kullanarak birden fazla konum görebilirsiniz, ancak bu durumda yalnızca bir nokta değeri olduğundan, arabellekleri değiştirmek her iki pencerede de konumları korumaz, yalnızca bir noktayı korur.
politza

9

Bir kullanım örneği, bir dosyanın bir bölümünde farklı bir ana mod kullanmaktır.

Örneğin, bir zamanlar belirli öğelerin içinde kod bulunan xml belgeleriyle çalışıyordum. Tüm belgeyi xml gibi düzenlemek istedim, ancak yine de belirli öğelere gömülü programlama dili için tüm büyük mod özelliklerine sahip olmak istedim, bu yüzden çalışmakta olan dolaylı bir arabellekteki bu öğelerin gövdesine daralttım. uygun ana mod.

İşte yapmak için kullandığım benim yapılandırma bir işlev:

(defun indirect-region (start end)
  "Edit the current region in another indirect buffer.
    Prompt for a major mode to activate."
  (interactive "r")
  (let ((buffer-name (generate-new-buffer-name "*indirect*"))
        (mode (intern
               (completing-read
                "Mode: "
                (mapcar (lambda (e)
                          (list (symbol-name e)))
                        (apropos-internal "-mode$" 'commandp))
                nil t))))
    (pop-to-buffer (make-indirect-buffer (current-buffer) buffer-name))
    (funcall mode)
    (narrow-to-region start end)
    (goto-char (point-min))
    (shrink-window-if-larger-than-buffer)))

Not: bu mükemmel değildir, font kilidi gibi şeyler bu senaryoda kullanılmak üzere özel ek çalışmalar gerektirir.


3

Dolaylı tamponlar, aynı tamponun çoklu görüntülerini, özellikle de her biri birçok açıdan ayrı bir tampon gibi davranan çoklu daralmalar sağlar.

Kütüphane Şerhi'nin narrow-indirect.eldediği gibi:

Dolaylı arabellekleri düşündüğünüzden daha fazla için kullanabilirsiniz. Örneğin, bir dizin listesine faydalı (etkin) görünümler vermek için Dired arabelleklerinin bölümlerinden alınan klonları kullanabilirsiniz. gTüm Dired arabellek görünümüne bağlı olduklarından, çalışmayan yalnızca birkaç tuş / komut ( listeyi güncellemek gibi ) vardır. Denemek ve şüphesiz dolaylı tamponlar için ilginç yeni kullanımlar bulacaksınız.

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.