Где я могу найти свой файл .emacs для Emacs, работающего в Windows?


115

Я попытался найти файл .emacs для моей установки Windows для Emacs, но не смог его найти. У него то же имя файла в Windows, что и в Unix?

Надо ли самому создавать? Если да, то в какой именно каталог он находится?

Ответы:


108

Скопируйте и вставьте из FAQ по Emacs, http://www.gnu.org/software/emacs/windows/ :

Куда мне поместить свой файл инициализации?

В Windows .emacsфайл может быть вызван _emacsдля обратной совместимости с файловыми системами DOS и FAT, где имена файлов не могут начинаться с точки. Некоторые пользователи предпочитают продолжать использовать такое имя, потому что Проводник Windows не может создать файл с именем, начинающимся с точки, даже если файловая система и большинство других программ могут его обработать. В Emacs 22 и новее также может быть вызван файл инициализации .emacs.d/init.el. Многие другие файлы, созданные пакетами Lisp, теперь также хранятся в .emacs.dкаталоге, так что все ваши файлы, связанные с Emacs, хранятся в одном месте.

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

  1. Если установлена ​​переменная окружения HOME, используйте указанный в ней каталог.
  2. Если в реестре задана запись HKCU \ SOFTWARE \ GNU \ Emacs \ HOME, используйте указанный в ней каталог.
  3. Если установлена ​​запись реестра HKLM \ SOFTWARE \ GNU \ Emacs \ HOME, используйте каталог, который он указывает. Не рекомендуется, так как это приводит к тому, что пользователи используют один и тот же HOME каталог.
  4. Если C:\.emacsсуществует, то используйте C:/. Это сделано для обратной совместимости, поскольку в предыдущих версиях по умолчанию использовалось значение C:/HOME.
  5. Используйте каталог AppData пользователя, обычно каталог с именем Application Data в каталоге профиля пользователя, расположение которого зависит от версии Windows и того, является ли компьютер частью домена.

В Emacs ~имя файла в начале расширяется до вашего HOME каталога, поэтому вы всегда можете найти свой файл .emacs с помощью C-x C-f ~/.emacs.

Дополнительную информацию можно найти в HOME и каталогах автозагрузки в MS-Windows .


1
Или вам может потребоваться найти с помощью Cx Cf ~ / _emacs (вместо точки). Использование подчеркивания для вашего init - обычная (и рекомендуемая) практика как для Vim, так и для Emacs.
лабиринт

Emacs жалуется, что "_emacs" устарел :(
Брайан Зи

Спасибо. Это объяснение действительно помогло мне правильно настроить emacs после учебника по закрытию, где об этом даже не упоминалось. Создал переменную HOME в окнах, и теперь она работает.
Siniyas

Что касается вашего пункта 5 выше, то каталог, который ищет меня emacs, - это C: \ Users \ userid \ AppData \ Roaming в Windows 7, но, конечно, мой компьютер находится в домене.
user8128167

В Windows 10 я установил для переменной HOME значение% USERPROFILE%, чтобы избежать суффикса AppData.
Bae

80

Его нужно хранить в переменной user-init-file. Используйте C-H v user-init-file RETдля проверки. Вы также можете открыть его напрямую, используяM-x eval-expression RET (find-file user-init-file) RET


8
Это настолько полезно, что я удивлен, что это не упоминается в разделе руководства, посвященном файлам инициализации.
Brian Z

Интересно, почему, когда я пытаюсь это сделать, я получаю trailing garbage following expression?
Marko Grdinic

Вы использовали круглые скобки?
Хосе Ромеро

29

Откройте файл в Emacs для Windows следующим образом:

C-x C-f ~/.emacs

Дополнительная информация в Emacs Wiki


11
Затем щелкните Файл> Открыть файл ... или Сохранить как ..., чтобы увидеть, где находится ~ / в знакомом диалоговом окне открытия Windows.
Yoo

21

В моей коробке с Vista это C:\Users\<USER>\AppData\Roaming\


1
То же самое для Windows 8.1 (Emacs 24), за исключением. Когда Emacs открывается из проводника Windows, ссылки или консоли cmd, он использует файл профиля C: \ Users \ <USER> \ AppData \ Roaming \ .emacs, но если вы откроете Emacs из консоли PowerShell, Emacs будет искать файл .emacs в C : Папка \ Users \ <USER>.
кри

Это сработало для меня. Я создал файл .emacs в каталоге Roaming в AppData и работает как шарм! Windows 10.
Retro Gamer

Работал в Windows 10
Alex Kaszynski

6

Обратите внимание, что может быть НЕ достаточно просто ввести Ctrl-x Ctrl-f ~/.emacsи создать файл.

Возможно, ваше приложение Emacs использует другое место для хранения вашего файла инициализации, и если это так, то создание файла ~ / .emacs просто создает бесполезный файл, который ваше приложение Emacs игнорирует.

Кроме того, вы можете захотеть сделать больше, чем просто получить доступ к файлу инициализации .emacs, но вы можете захотеть узнать, где он находится, т. Е. Его путь.

Для этого есть два метода:

Простой способ: введите Ctrl+ H Vuser-init-fileReturn

Немного сложнее: узнать, где ваша система хранит собственный файл .emacs, можно:

  1. Щелкните параметры и прокрутите вниз до «Установить шрифт по умолчанию ...»
  2. Измените настройку шрифта и нажмите ОК
  3. В меню параметров перейдите к "Параметры сохранения".
  4. Когда параметры сохранены, система сохраняет свой файл .emacs, и вы можете прочитать путь к файлу в минибуфере внизу экрана Emacs.

Пожалуйста, обратитесь к документации по форматированию вашего ответа. Это довольно просто и принесет вам больше репутации.
Bhavik Shah

Когда я сохранил файл с именем ~ / .emacs.el, он был создан в формате c:/Users/user1/AppData/Roaming/.emacs.el. Этот сайт emacswiki.org/emacs/DotEmacsDotD помог мне понять, что мне нужно назвать файл, ~/.emacs.d/init.elчто означает, что файл в файловой системе находится в c:\Users\user1\AppData\Roaming\.emacs.d\init.el(совсем не то, что я ожидал). Я предпочитаю устанавливать переменную среды HOME и помещать файл в свой %USERPROFILE%каталог, который является логическим каталогом HOME в Windows (по крайней мере, насколько мне известно).
PatS

4

В Windows 7 поместите свой init.elфайл C:\Users\user-name\AppData\Roaming\.emacs.d\, где имя пользователя - это ваша папка пользователя / входа.

Позаботьтесь о том, чтобы ваш init.elфайл не был назван init.el.txt. Это то, что делает Windows, если вы создаете файл с помощью какого-нибудь редактора, например Блокнота.


4

В версиях Emacs для Windows выше 22 кажется, что он переместился на

~/.emacs.d/init.el

, ~являясь значением переменной среды HOME (см. Панель управления → СистемаДополнительноПеременные среды ).

Сам файл может не существовать. В таком случае просто создайте его.


3

Вы должны создать файл инициализации emacs. Один не создается автоматически. У меня была аналогичная проблема, и этот ответ отслеживает, что я сделал.

Моя проблема заключалась в том, что мой ~/.emacs.elфайл не загружался. Странно, потому что у меня это всегда срабатывало.

Этот вопрос / ответ помог мне, но мне пришлось поместить свой файл инициализации в папку, %USERPROFILE%\AppData\Roaming\.emacs.d\init.elпотому что это, по-видимому, поведение по умолчанию в Windows.

Чтобы устранить эту проблему, я выполнил следующее в буфере emacs * scratch * .

user-emacs-directory
"~/.emacs.d/"

Когда я увидел user-emacs-directoryэто ~/.emacs.d, я просто переместил свой файл .emacs.el в %USERPROFILE%\.emacs.d\init.el. Но это все равно не сработало. Я продолжил, expand-file-nameкак показано ниже:

(expand-file-name user-emacs-directory)
"c:/Users/pats/AppData/Roaming/.emacs.d/"

Мне нравится, как работает Windows. (нет) Я переместил свой emacs.elфайл в папку, %USERPROFILE%\AppData\Roaming\.emacs.d\init.elи это сработало. Теперь файл читался. Но у меня возникли другие ошибки, потому что мой файл инициализации загружал другие (личные emacs) файлы (в формате ~/myenv/emacs/*.el.

Warning (initialization): An error occurred while loading c:/Users/pats/AppData/Roaming/.emacs.d/init.el’:

Хм ... Похоже, все мои файлы ~/myenv/emacs/*.elнужно переместить, чтобы это работало, но я не хотел этого делать. Затем я понял, что, поскольку переменная среды HOME не была установлена, emacs выполнял свое поведение по умолчанию .

РЕШЕНИЕ

Как только я установил для своей HOMEпеременной среды Windows значение, %USERPROFILE%все стало работать так же, как и последние 25 лет. :-)

Чтобы установить переменную среды HOME, я набрал WindowsKey + «изменить переменные среды для вашей учетной записи», чтобы открыть диалоговое окно « Переменные среды », и вошел HOME=%USERPROFILE%.

Теперь мой файл инициализации emacs .emacs.el вернулся на свое законное место, $HOME/.emacs.elа не в%USERPROFILE%\AppData\Roaming\.emacs.d\init.el

Честно говоря, если бы в Windows было только одно место для размещения файлов для установленных пользователем пакетов, решение сделать HOME = %USERPROFILE\AppData\Roamingмогло бы быть приемлемым, но поскольку некоторые приложения используют %USERPROFILE%, некоторые используют, %USERPROFILE\AppData\Roamingа другие используют %USERPROFILE\AppData\Localего, просто трудно узнать, где найти вашу конфигурацию. файлы.

Я предпочитаю иметь все в моем каталоге% USERPROFILE% или $ HOME.

Другой похожий вопрос был здесь:


«Должен любить, как работает Windows. (Не)» - эта проблема не имеет ничего общего с Windows, кроме того, что разработчики Emacs сделали с людьми, которые запускают Emacs в Windows.
Крис Чарабарук 01

2

Как ответил канья, путь к этому файлу хранится в user-init-fileпеременной (или, если файл инициализации не существует, переменная содержит значение по умолчанию для того, где его создать).

Итак, независимо от того, какое из возможных имен файлов инициализации вы используете и в каком каталоге он находится, вы должны иметь возможность посетить свой файл инициализации с помощью:

M-: (find-file user-init-file) RET

Или отобразите его полный путь в эхо-области с помощью:

M-: (expand-file-name user-init-file) RET


2

В Emacs 23 и Windows 7 это работает, только если вы установите:

HKCU\SOFTWARE\GNU\Emacs\HOME

Наконец я нашел это! Спасибо!
Крис

Наконец я нашел это! Я тоже!
lowerkey

Под "набором" вы имеете в виду создание этого ключа (без содержания)?
Питер Мортенсен

1

Я обнаружил, что Emacs 22 иногда открывает либо «C: \ Documents and Settings \ username \ Application Data \ .emacs», либо просто «C: \ Documents and Settings \ username \ .emacs» на моей машине XP. Я не нашел объяснения, почему он иногда меняет свое мнение.

~ всегда будет указывать на то, что текущий экземпляр emacs считает HOME, но подсказка kanja (Ch v user-init-file) всегда сообщит вам, чему на самом деле соответствует ~ / .emacs.


2
Теперь я заметил, что Windows будет устанавливать HOMEпеременную среды по-разному, в зависимости от того, как я начинаю runemacs.exe. Если я запустил его из проводника, HOMEбудет установлено значение C:\Documents and Settings\username, но если я запустил его из меню «Пуск», HOMEбудет C:\Documents and Settings\username\Application Data. Странный.
remcycles 07



0

В Windows 8.1, если Emacs запускается из проводника Windows , ярлыка или из консоли cmd, он использует файл инициализации C: \ Users \ <USER> \ AppData \ Roaming.emacs . Когда я запускаю Emacs из PowerShell, Emacs ищет свой файл инициализации в папке C: \ Users \ <USER> . Исправление этой проблемы заключалось в установке переменной среды пользователя HOME (Панель управления \ Система и безопасность \ Система-> Дополнительные параметры системы-> Дополнительно-> Переменные среды) на C: \ Users \ <USER> . После этого изменения, независимо от того, как я запускаю Emacs, он использует один и тот же файл инициализации (см. Принятый ответ на этот вопрос )


0

Для WIndows7 и Emacs26.3 :


если HOMEзадана среда, то .emacsфайл должен находиться в этой папке.

в противном случае он должен быть в c:\.


В обоих случаях, если .emacsего нет, _emacsследует использовать.

Это связано с тем, что мы не можем создать .emacsфайл в соответствии с правилами именования файлов Windows (но мы можем загрузить или скопировать его из другого места).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.