Я хотів би відкрити файл foo.bar
два рази (або більше) в emacs, тому я можу редагувати дві різні частини одночасно. Це можливо? Можливо, краще питання - як це зробити? Чи є спосіб відкрити кожен екземпляр у власному буфері / кадрі?
Я хотів би відкрити файл foo.bar
два рази (або більше) в emacs, тому я можу редагувати дві різні частини одночасно. Це можливо? Можливо, краще питання - як це зробити? Чи є спосіб відкрити кожен екземпляр у власному буфері / кадрі?
Відповіді:
Ви можете відкрити один і той же буфер у декількох вікнах (які можна поширити між різними кадрами), але це не дуже зручно. У кожному вікні є своя точка, але всі вони поділяють позначку, режим файлів, звуження та інші характеристики, тому що крім точки майже всі характеристики пов'язані з буфером. Крім того, якщо вам трапиться інший буфер в одному вікні, ви втратите своє місце у файлі.
Ви можете створити непрямий буфер, який має власну точку, позначку, режими тощо, але той самий вміст, що і вихідний буфер (і збереження будь-якого буфера записується в той самий файл). Щоб створити другий буфер, який є клоном поточного буфера, запустіть M-x clone-indirect-buffer RET
. Щоб відкрити другий буфер у іншому вікні, ви можете ввести C-x 4 c
.
C-x 4 c
запускається clone-indirect-buffer-other-window
, тому це буде використано замість clone-indirect-buffer
, не виконуючи цю команду. Однак у моїй системі обидві ці команди, здається, роблять те саме.
C-x 4
- це префікс для Windows, c
призначений для клонування . Якщо ви хочете, ви можете визначити інші прив'язки. C-x c
не використовується в конфігурації за замовчуванням, ви можете це використовувати, якщо ви не боїтеся випадкового удару C-x C-c
. Я визначаю, C-x 5 c
щоб клонувати в новому кадрі у своєму файлі init.
Режим розділеного екрана: де ctrl+ xозначає натискання та утримування клавіші ctrl та введіть x. Потім введіть наступне число.
ctrl+ x2 (горизонтальний розкол)
або
ctrl+ x3 (вертикальний розкол)
Потім ви можете прокрутити їх самостійно в одному файлі або відкрити інший буфер, якщо бажаєте в одному з них.
Щоб повернутися до одного типу перегляду
ctrl+ x1
За бажанням можна розділити кожен екран (розділ) стільки разів, скільки потрібно. Виберіть спочатку екран, який ви хочете розділити, а потім виконайте на ньому горизонтальне або вертикальне розбиття.
C-x o
пробігає other-window
та проходить через видимі «вікна» у кожному «кадрі». (Використовуючи конфігурацію emacs, де вікна менеджера вікон називаються кадрами, а окремі панелі всередині них називаються вікнами (я знаю, я знаю, але за це я не несу відповідальності).
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)
)
)
)
)