4

У меня большой текстовый проект, который разделен на несколько текстовых файлов. Каждый раз, когда я хочу работать над этим, я открываю emacs и вручную C-x C-f все файлы, с которыми я хочу работать.

Мне было интересно, если есть способ открыть файлы (из командной строки) из файла, содержащего список имен файлов, что-то вроде

filelist.txt:

file1.tex file2.tex file3.tex

тогда делай

cat files | emacs -nw

за исключением того, что emacs не поддерживает используемую команду, так как ему не нравится, что stdin переназначается.

есть идеи?

3 ответа3

4

Вместо этого пропустите через xargs:

cat files | xargs emacs

xargs берет текст из stdin и передает его в качестве аргументов указанной программе. Конвертирование файла files в его вызывает emacs что-то вроде:

emacs file1.tex file2.tex file3.tex
4

Альтернативой предложению Коллина Хоккея является использование подстановки команд в вашей оболочке. Следующий синтаксис работает в Bourne как оболочки (sh , bash , zsh & c.).

emacs $( cat files )

или эквивалентно (но менее читабельно и неоднозначно)

emacs ` cat files `

Тем не менее, это не элегантное решение. Я обычно не пользователь emacs , но я думаю, что некоторые ответы здесь могут быть тем, что вы действительно хотите. Посмотри!

PS
Ни мое, ни решение Коллина не будут работать должным образом, если список имен файлов длиннее байтов getconf ARG_MAX . В моей системе это примерно 2 МиБ.

1

Это действительно не решит вашу проблему, но будет потенциальной альтернативой. Проверьте desktop-save-mode Если у вас есть определенные буферы, открытые при закрытии emacs, при повторном открытии emacs он снова откроет все ваши буферы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .