Bir dosyayı emacs'deki iki farklı tamponda düzenleyin


28

Dosyayı foo.baremacs'de iki kez (veya daha fazla) açmak istiyorum , böylece aynı anda iki farklı bölümünü düzenleyebilirim. Mümkün mü? Muhtemelen daha iyi soru, nasıl yapılır? Her örneği kendi arabelleğinde / çerçevesinde açmanın bir yolu var mı?


Aynı tamponu farklı pencerelerde görüntüleyebilirsiniz. Bu problem için bir çözüm değil mi?
Tom

Yanıtlar:


35

Aynı tamponu birden fazla pencerede açabilirsiniz (farklı çerçeveler arasında yayılabilir), ancak bu pek uygun değildir. Her pencerenin kendi noktası vardır, ancak hepsi işareti, dosya modunu, daralmayı ve diğer özellikleri paylaşır, çünkü noktadan ayrı olarak tüm özellikler ara belleğe bağlanır. Ayrıca, bir pencerede başka bir tamponu ziyaret ederseniz, dosyadaki yerinizi kaybedersiniz.

Bir yapabilirsiniz dolaylı tampon böylece kendi nokta, işareti, modu vardır ve, ancak orijinal tampon aynı içeriğe (ve aynı dosyaya yazma her iki tampon tasarruf). Geçerli arabellek klonu olan ikinci bir arabellek oluşturmak için çalıştırın M-x clone-indirect-buffer RET. İkinci tamponu farklı bir pencerede açmak için yazabilirsiniz C-x 4 c.


3
Açıklığa kavuşturmak için: C-x 4 cçalışır clone-indirect-buffer-other-window, bu yüzden bu clone-indirect-bufferkomutu yerine, yerine, bu kullanılacak . Ancak, sistemimde, bu komutların her ikisi de aynı şeyi yapıyor gibi görünüyor.
SabreWolfy,

Keşke bunu nasıl hatırlayacağımı
çözebilseydim

@pedz C-x 4, pencereler ön ekidir ciçindir klon . İsterseniz diğer ciltleri tanımlayabilirsiniz. C-x cvarsayılan yapılandırmada kullanılmazsa, yanlışlıkla vurmaktan C-x C-ckorkmazsanız kullanabilirsiniz. C-x 5 cİnit dosyamda yeni bir çerçevede klonlamayı tanımlarım .
Gilles 'SO- kötülükten vazgeç'

8

Bölünmüş ekran modu: ctrl+ burada xctrl tuşunu basılı tutun ve bir x yazın. Ardından aşağıdaki numarayı yazın.

ctrl+ x2 (yatay bölme)

veya

ctrl+ x3 (dikey bölme)

Ardından, onları aynı dosyada bağımsız olarak kaydırabilir veya bir tanesinde isterseniz başka bir arabellek açabilirsiniz.

Tek bir görünüm türüne dönmek için

ctrl+ x1

İsterseniz her ekranı (bölüm) istediğiniz kadar bölebilirsiniz. Önce bölmek istediğiniz ekranı seçin, sonra üzerine yatay veya dikey bir bölme uygulayın.


Olmadı! Çerçeveler arasında klavye gezinmesini dahil etmemelisiniz Her "karede" görünür "pencereler" boyunca C-x okoşar other-windowve çevrilir. (Pencere yöneticisi pencerelerinin çerçeveler ve içlerindeki ayrı panellerin pencereler olarak adlandırıldığı emacs yapılandırmasını kullanma (biliyorum, biliyorum ama bundan sorumlu değilim).)
dmckee

Fareyi kullanma eğilimindeyim.
Matt H

1

Emacs, çerçevelere değil bölmelere (pencerelere) eğilimlidir. Aynı tamponu, sadece aynı çerçevedeki başka bir pencerede değil, başka bir çerçevede açmak istenir. Ancak C-x 5 c, varsayılan olarak sınırsızdır. Bu kod eksik clone-indirect-buffer-other-framefonksiyonu tanımlar :

(global-set-key [?\C-x ?5 ?c]
             '(lambda(newname display-flag)
               "Like `clone-indirect-buffer-other-window' but display in another frame."
               (interactive
                (progn
                  (if (get major-mode 'no-clone-indirect)
                      (error "Cannot indirectly clone a buffer in %s mode" mode-name))
                  (list (if current-prefix-arg
                            (read-buffer "Name of indirect buffer: " (current-buffer))) t)))
               (save-window-excursion
                 (let ((newbuf (clone-indirect-buffer newname display-flag)))
                   (switch-to-buffer-other-frame newbuf)
                   )
                 )
               )
            )
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.