Открытие нескольких файлов одновременно в Emacs

В Emacs использование ido-mode позволяет мне открыть файл из минибуфера с помощью C-xC-f. Этот метод открывает только один файл за раз.

Как открыть все файлы в каталоге или указать более одного файла для открытия?


person hekevintran    schedule 10.03.2010    source источник
comment
Я не знаю, применимо ли это решение (отсюда и комментарий), но в сочетании с emacsclient (см. stackoverflow.com/questions/4458245/), вы можете также используйте find в командной строке. Чтобы открыть все файлы Clojure в emacs, я делаю это: emacsclient `find . -type f -name "*.clj"`   -  person Christophe De Troyer    schedule 18.05.2015


Ответы (2)


Вы можете просто указать * в качестве имени файла и нажать Enter; вас попросят подтвердить, и если вы нажмете Enter второй раз, все файлы в каталоге будут открыты.

Обратите внимание, что «открытие всех файлов в каталоге» подразумевает открытие буферов каталога для всех его подкаталогов.

Когда не используется ido-mode — в основном приглашении Emacs найти файл — вы можете использовать тот же самый *, чтобы открыть все файлы в каталоге. Когда вы используете ido-mode для поиска файлов, вы всегда можете нажать C-f, чтобы вернуться к обычному приглашению Emacs найти файл. (Вы можете использовать ido, чтобы ускорить доступ к интересующему вас каталогу и перейти к основному файлу поиска там.) Это один из способов создания нового файла с помощью ido (другой способ — Cj< /kbd> привязка); Кроме того, это дает вам еще один способ использования вышеупомянутого трюка *.

person Michał Marczyk    schedule 10.03.2010
comment
@~unutbu: Какую версию Emacs вы используете? Я на 23.1.50.1 (использую ido.el в комплекте с Emacs) и только что проверил, работает ли он даже без моего конфига, с ido или без него. - person Michał Marczyk; 10.03.2010
comment
@~unutbu: На самом деле, есть переменная с именем find-file-wildcards, для которой необходимо установить значение, отличное от nil, чтобы расширение подстановочных знаков работало. См. /usr/share/emacs/<version>/lisp/files.el.gz (пожалуйста, скорректируйте этот путь для вашей платформы; или скажите C-h f find-file <RET>, затем снова нажмите <RET>, указав на files.el), строку 1314 (в моей версии) в определении функции find-file. Дайте мне знать, если это поможет, и я отредактирую ответ, чтобы учесть это. - person Michał Marczyk; 10.03.2010
comment
@Michal: Спасибо за помощь! У меня было (require 'ffap) в моем .emacs. Когда я удаляю (require 'ffap), я получаю описанное вами поведение. - person unutbu; 10.03.2010
comment
@~unutbu: Конечно! Рад, что это работает для вас сейчас. :-) Насколько я могу судить, ffap должен корректировать свое поведение в зависимости от значения find-file-wildcards -- никаких гарантий, но, возможно, вы захотите попробовать это с (setq find-file-wildcards t) в своем ~/.emacs. - person Michał Marczyk; 10.03.2010
comment
Emacs 23.2.1 с ido-mode с настройкой по умолчанию для find-file-wildcards, которая равна t. Ввод *.txt после C-x C-f открывает файл с именем *.txt. - person SabreWolfy; 01.02.2012

Поиск по имени файла далеко не так полезен, как сопоставление с более общим шаблоном.

В Icicles завершение имени файла можно открыть любое количество файлов, соответствующих любому количеству шаблонов, из одного и того же минибуфера. Сопоставление с шаблоном может быть подстрочным, регулярным выражением, нечетким или префиксным, и вы можете комбинировать шаблоны, используя пересечение и дополнение.

Так же, как и в Ido, в Icicles ввод вашего минибуфера динамически фильтрует кандидаты в имена файлов. Вы можете выбрать отдельных кандидатов или выбрать все, которые в настоящее время соответствуют (используя C-!).

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

person Drew    schedule 21.08.2011