Как я могу заставить 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
Можно сохранить несколько нажатий клавиш.