В Emacs, как я могу держать много файлов открытыми одновременно?

10

На данный момент я использую, C-xC-fчтобы открыть новый файл, но он становится довольно утомительным.

Yazz.com
источник
Какова твоя цель? Открывать сразу несколько файлов? Или управлять множеством уже открытых файлов?
viam0Zah
Или вы просто хотите увидеть несколько файлов одновременно? Поскольку Emacs сохраняет все эти файлы «открытыми» (в некотором смысле они загружены, но не «открыты» в смысле «дескриптор файла открыт»).
Юрген А. Эрхард
Я хочу отредактировать несколько исходных файлов программы
Yazz.com 19.02.10
Пройдите через это перед использованием emacs
overexchange

Ответы:

19

Когда вы загружаете файл в Emacs с помощью find-file ( Ctrl-x Ctrl-fпо умолчанию привязан ), он помещается в «буфер». Пока вы не уничтожите буфер, он останется в памяти, вам не нужно его перезагружать.

Вы получаете доступ к уже загруженным файлам (буферам) через переключатель в буфер (привязанный к Ctrl-x b). Нажмите клавиши, затем введите имя буфера, на который вы хотите переключиться (по умолчанию это базовое имя для любого загруженного файла).

Вы также можете нажать, Ctrl-x Ctrl-bчтобы получить список существующих в настоящее время буферов. И щелкните любой буфер там мышью, чтобы переключиться на него (IIRC, редко используйте мышь с Emacs ;-))

Вы также можете разделить экран на две (или более) части, чтобы увидеть разные файлы (буферы) Ctrl-x 2. Первоначально, это показывает один и тот же буфер дважды. Переключитесь на другой буфер в одном из окон, чтобы увидеть другой файл.

Юрген А. Эрхард
источник
1
Cx 3 также можно использовать для разделения экрана на два, Cx 0 для отображения только одного буфера одновременно.
Реми
3

Cx b и Cx Cb - это то, что вы хотите. Также попробуйте попробовать iswitchb или ido. Поскольку я начал использовать их, я хотел бы, чтобы каждая программа, которую я использовал, могла переключать вкладки / окна / документы так же быстро и удобно, как emacs. Часто в emacs открываются 50 и более файлов, вы можете быстро найти тот, который вам нужен, с помощью iswitchb или ido.

Джастин смит
источник
1

Кроме того, если вы используете графическую версию emacs, вы можете сделать ctrl-x 5 b, чтобы открыть существующий буфер в новом окне (называемом фреймом в emacs-говорить), или ctrl-x 5 f, чтобы загрузить новый файл. в новом окне.

KeithB
источник
1
cx 5 b также работает в tty, но переключение кадров раздражает в tty режиме :)
Джастин Смит
@ Джастин Спасибо. Я никогда не играл с кадрами в tty. Есть ли какая-то польза от использования нескольких буферов?
KeithB
Вы можете использовать фреймы против окон так же, как вы используете рабочие пространства и окна в оконном менеджере Linux - т.е. для работы с elisp code frame 1 имеет два окна, одно с информационным файлом для elisp, другое с ielm для интерактивного тестирования кода, frame 2 имеет только одно окно с любым редактируемым файлом (так что вы можете получить как можно больше строк по возможности это неразделено). Приличное связывание клавиш для другого кадра может быть очень продуктивным, если вы по какой-то причине не захотите использовать X.
Джастин Смит
0

Вы можете легко открыть несколько файлов одновременно (или действовать с ними другими способами).

  1. Используйте C-x dдля посещения каталога (папки), в котором перечислены все его файлы и подкаталоги.

  2. Отметьте файлы, которые хотите открыть (или действуйте каким-либо другим способом). Вы можете пометить файлы по отдельности или в группах на основе различных характеристик, включая шаблоны имен файлов. Смотрите меню строки меню Mark и Regexp - оно показывает некоторые доступные возможности маркировки, а также их сочетания клавиш.

Например:

  • % m отмечает файлы, имена которых соответствуют регулярному выражению.

  • % g отмечает файлы, содержимое которых соответствует регулярному выражению.

  • * * отмечает исполняемые файлы.

Чтобы открыть все отмеченные файлы одновременно, вам нужно загрузить стандартную библиотеку dired-x.el. Сделайте M-x load-library dired-xили положите (require 'dired-x)в свой файл инициализации.

Затем вы можете использовать F( dired-do-find-marked-files) для одновременного посещения всех отмеченных файлов. Используйте C-x C-bдля просмотра списка открытых буферов, где вы можете выбрать один из этих файловых буферов.

Нарисовалась
источник