Как я могу перезагрузить .emacs после его изменения?

Как я могу заставить Emacs перезагрузить все мои определения, которые я обновил в .emacs, не перезагружая Emacs?

Ответ 1

Вы можете использовать команду load-file (M-x load-file), а затем дважды нажмите return, чтобы принять имя файла по умолчанию, которое является текущим редактируемым файлом).

Вы также можете просто переместить точку до конца любого sexp и нажать C-x C-e, чтобы выполнить только этот sexp. Обычно нет необходимости перезагружать весь файл, если вы просто меняете строку или две.

Ответ 2

Очень странно, что очень удобный

M-x eval-buffer

здесь не упоминается.

Он немедленно оценивает весь код в буфере, его самый быстрый метод, если ваш .emacs идемпотент.

Ответ 3

Если у вас открыт файл .emacs в текущем активном буфере:

M-x eval-buffer

Ответ 4

Обычно вы можете просто переоценить измененный регион. Отметьте область ~/.emacs, которую вы изменили, а затем используйте M-x eval-region RET. Это часто безопаснее, чем повторная оценка всего файла, так как легко написать файл .emacs, который не работает сразу после загрузки дважды.

Ответ 5

M-x load-file
~/.emacs

Ответ 6

Следующее должно сделать это...

M-x load-file

Ответ 7

Другие уже ответили на ваш вопрос, как указано, но я считаю, что обычно хочу выполнить строки, которые я только что написал. для этого Ctrl Alt x в lisp работает просто отлично.

Ответ 8

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

Когда вы, наконец, довольны своими изменениями, затем перейдите к использованию и используйте один из других ответов для повторной загрузки. Мое личное предпочтение - это eval только раздел, который вы добавили/изменили, и для этого просто выделите область добавленного/измененного кода и вызовите M-x eval-region. Это минимизирует код, который оценивается, сводя к минимуму любые непреднамеренные побочные эффекты, как указывает luapyad.

Ответ 9

C-x C-e ;; current line
M-x eval-region ;; region
M-x eval-buffer ;; whole buffer
M-x load-file ~/.emacs.d/init.el

Ответ 10

Ярлык клавиатуры:

(defun reload-init-file ()
  (interactive)
  (load-file "~/.emacs"))

(global-set-key (kbd "C-c C-l") 'reload-init-file)    ; Reload .emacs file

Ответ 11

Я сейчас на Ubuntu 15.04; Мне нравится определять ключ для этого.
[M-insert] переводит на alt-insert на моей клавиатуре.
Поместите это в ваш файл .emacs:

(global-set-key [M-insert] '(lambda() (interactive) (load-file "~/.emacs")))

Ответ 12

Хотя M-x eval-buffer будет работать, вы можете столкнуться с проблемами с переключением и другими подобными вещами. Лучшим подходом может быть "отметка" или выделение нового в вашем .emacs(или даже буфера с нуля, если вы просто возитесь), а затем M-x eval-region. Надеюсь, это поможет.

Ответ 13

Определите его в файле инициализации и вызовите M-x reload-user-init-file

(defun reload-user-init-file()
  (interactive)
  (load-file user-init-file))

Ответ 14

Вот быстрый и простой способ быстро проверить ваш конфиг. Вы также можете использовать C-x C-e в конце определенного lisp для выполнения определенной функции по отдельности.

C-x C-e запускает команду eval-last-sexp (находится в глобальной карте), которая это интерактивная скомпилированная функция lisp.

Он связан с C-x C-e.

(eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)

Оценить sexp до точки; напечатать значение в области эха. Интерактивно с аргументом префикса выводите вывод в текущий буфер.

Обычно эта функция усекает длинный выход в соответствии со значением переменных eval-expression-print-length и "Eval-выражение-печать уровня. С аргументом префикса, равным нулю, однако такого усечения нет. Такой аргумент префикса также вызывает печать целых чисел в нескольких дополнительных форматах (восьмеричные, шестнадцатеричный и символ).

Если 'eval-expression-debug-on-error не равно nil, что по умолчанию, эта команда устраивает все ошибки для ввода отладчика.

Ответ 15

Помимо команд, таких как M-x eval-buffer или M-x load-file, вы можете перезапустить свежие emacs из командной строки:

emacs -q --load "init.el"

Пример использования fooobar.com/questions/24483/...

Ответ 16

Вы можете установить привязку клавиш для emacs следующим образом

;; reload emacs configuration
(defun reload-init-file ()
  (interactive)
  (load-file "~/.emacs"))

(global-set-key (kbd "C-c r") 'reload-init-file) 

Надеюсь, это поможет!

Ответ 17

Если у вас есть оболочка, открытая внутри Emacs, вы также можете сделать:

. ~/.emacs

Можно сохранить несколько нажатий клавиш.