Відредагуйте один файл у двох різних буферах у emacs


28

Я хотів би відкрити файл foo.barдва рази (або більше) в emacs, тому я можу редагувати дві різні частини одночасно. Це можливо? Можливо, краще питання - як це зробити? Чи є спосіб відкрити кожен екземпляр у власному буфері / кадрі?


Ви можете відображати один і той же буфер у різних вікнах. Хіба це не вирішення цієї проблеми?
Том

Відповіді:


35

Ви можете відкрити один і той же буфер у декількох вікнах (які можна поширити між різними кадрами), але це не дуже зручно. У кожному вікні є своя точка, але всі вони поділяють позначку, режим файлів, звуження та інші характеристики, тому що крім точки майже всі характеристики пов'язані з буфером. Крім того, якщо вам трапиться інший буфер в одному вікні, ви втратите своє місце у файлі.

Ви можете створити непрямий буфер, який має власну точку, позначку, режими тощо, але той самий вміст, що і вихідний буфер (і збереження будь-якого буфера записується в той самий файл). Щоб створити другий буфер, який є клоном поточного буфера, запустіть M-x clone-indirect-buffer RET. Щоб відкрити другий буфер у іншому вікні, ви можете ввести C-x 4 c.


3
Для уточнення: C-x 4 cзапускається clone-indirect-buffer-other-window, тому це буде використано замість clone-indirect-buffer, не виконуючи цю команду. Однак у моїй системі обидві ці команди, здається, роблять те саме.
SabreWolfy

Я б хотів, щоб я міг зрозуміти, як це запам'ятати: - /
pedz

@pedz C-x 4- це префікс для Windows, cпризначений для клонування . Якщо ви хочете, ви можете визначити інші прив'язки. C-x cне використовується в конфігурації за замовчуванням, ви можете це використовувати, якщо ви не боїтеся випадкового удару C-x C-c. Я визначаю, C-x 5 cщоб клонувати в новому кадрі у своєму файлі init.
Жил "ТАК - перестань бути злим"

8

Режим розділеного екрана: де ctrl+ xозначає натискання та утримування клавіші ctrl та введіть x. Потім введіть наступне число.

ctrl+ x2 (горизонтальний розкол)

або

ctrl+ x3 (вертикальний розкол)

Потім ви можете прокрутити їх самостійно в одному файлі або відкрити інший буфер, якщо бажаєте в одному з них.

Щоб повернутися до одного типу перегляду

ctrl+ x1

За бажанням можна розділити кожен екран (розділ) стільки разів, скільки потрібно. Виберіть спочатку екран, який ви хочете розділити, а потім виконайте на ньому горизонтальне або вертикальне розбиття.


Yikes! Чи не слід включати навігацію на клавіатурі між кадрами? C-x oпробігає other-windowта проходить через видимі «вікна» у кожному «кадрі». (Використовуючи конфігурацію emacs, де вікна менеджера вікон називаються кадрами, а окремі панелі всередині них називаються вікнами (я знаю, я знаю, але за це я не несу відповідальності).
dmckee

Я схильний використовувати мишку.
Метт Н

1

Emacs упереджений панелями (windows), а не рамками. Часто бажано відкривати той самий буфер в іншому кадрі, а не просто інше вікно в тому ж кадрі. Але C-x 5 cза замовчуванням не пов'язаний. Цей код визначає відсутність clone-indirect-buffer-other-frameфункції:

(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)
                   )
                 )
               )
            )
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.