Як я можу змусити Emacs перезавантажити всі свої визначення, які я оновив, .emacs
не перезавантажуючи Emacs?
Як я можу змусити Emacs перезавантажити всі свої визначення, які я оновив, .emacs
не перезавантажуючи Emacs?
Відповіді:
Ви можете використовувати команду load-file ( M-x load-file
, а потім двічі натиснути return, щоб прийняти ім'я файлу за замовчуванням, який є поточним файлом, який редагується).
Ви також можете просто перемістити крапку в кінці будь-якого сексопа і натиснути, C-xC-eщоб виконати саме цей секпс. Зазвичай не потрібно перезавантажувати весь файл, якщо ви просто змінюєте рядок чи два.
defun
або defvar
, ви також можете залишити її всередині тіла декларації та ввести C-M-x
. Дуже зручно.
Дуже дивно, що дуже зручно
M-x eval-buffer
тут не згадується.
Він негайно оцінює весь код у буфері, його найшвидший метод, якщо ваш .emacs
idempotent.
.emacs
це (або має бути) безсильним?
.emacs
не бути ідентичним?
Зазвичай ви можете просто переоцінити змінений регіон. Позначте область ~ / .emacs, яку ви змінили, а потім використовуйте M-x eval-region RET
. Це часто безпечніше, ніж повторна оцінка всього файлу, оскільки легко написати файл .emacs, який працює не дуже правильно після завантаження двічі.
Якщо ваш файл .emacs відкритий у поточному активному буфері:
Mx eval-буфер
M-x load-file
~/.emacs
M-: (load user-init-file)
Eval:
підказці (включаючи дужки)user-init-file
є змінною, що містить ~/.emacs
значення (вказує на шлях конфігураційного файлу) за замовчуванням(load)
коротша, старша та неінтерактивна версія (load-file)
; це не команда emacs (вводиться M-x), а проста функція elispM-:
> M-x
Інші вже відповіли на ваше запитання, як сказано, але я вважаю, що зазвичай хочу виконати рядки, які я тільки що написав. для цього, CtrlAltxу lisp працює просто чудово.
eval-lastsexp
, за адресоюC-x C-e
C-M-x
вами, вам не потрібно бути "в кінці лісу" - ви думаєте, C-x C-e
можливо? Приємно в тому C-M-x
, що ви можете викликати його навіть тоді, коли точка знаходиться в середині оголошення / функції змінної.
Я пропоную вам не робити цього спочатку. Натомість запускайте новий сеанс emacs і перевіряйте внесені вами зміни, щоб перевірити, чи працюють вони правильно. Причина зробити це таким чином - уникнути того, що ви не перебуваєте в стані, коли у вас є непрацездатний файл .emacs, який не може завантажуватися або не завантажується. Якщо ви виконаєте все своє редагування в початковому сеансі, а все тестування в новому сеансі, у вас завжди буде щось надійне, щоб прокоментувати код, який порушує вас.
Коли ви нарешті задоволені своїми змінами, тоді продовжуйте і використовуйте одну з інших відповідей для повторного завантаження. Мої особисті переваги - це eval
лише розділ, який ви додали / змінили, і зробити це просто виділити область доданого / зміненого коду та виклику M-x eval-region
. Це мінімізує оцінений код, мінімізуючи будь-які ненавмисні побічні ефекти, як вказує луапяд.
Комбінація клавіш:
(defun reload-init-file ()
(interactive)
(load-file user-init-file))
(global-set-key (kbd "C-c C-l") 'reload-init-file) ; Reload .emacs file
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
Зараз я перебуваю на Ubuntu 15.04; Мені подобається визначити ключ для цього.
[M-insert] перекладається на alt-insert на моїй клавіатурі.
Помістіть це у свій файл .emacs:
(global-set-key [M-insert] '(lambda() (interactive) (load-file "~/.emacs")))
Визначте його у своєму файлі init та зателефонуйте Mx reload-user-init-file
(defun reload-user-init-file()
(interactive)
(load-file user-init-file))
Хоча це M-x eval-buffer
буде працювати, у вас можуть виникнути проблеми з перемикачами та іншими подібними речами. Кращим підходом може бути "маркування" або виділення того, що є новим у ваших .emacs (або навіть буфер подряпин, якщо ваш просто занепокоєний), а потім M-x eval-region
. Сподіваюсь, це допомагає.
Ось швидкий і простий спосіб швидкої перевірки конфігурації. Ви також можете використовувати C-x C-e
в кінці певного lisp для виконання певної функції окремо.
Cx Ce запускає команду eval-last-sexp (знайдена на глобальній карті), яка є інтерактивно складеною функцією Lisp.
Він пов'язаний з Cx Ce.
(eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)
Оцініть сексоп перед точкою; значення друку в області відлуння. Інтерактивно, з аргументом префіксу, друкуйте вихід у поточний буфер.
Зазвичай ця функція скорочує довгий вихід відповідно до значень змінних 'eval-express-print-length' та 'eval-express-print-level'. Однак при аргументі префікса нуля такого відсікання немає. Такий аргумент префікса також призводить до друку цілих чисел у кількох додаткових форматах (восьмеричний, шістнадцятковий та символьний).
Якщо 'eval -pression-debug-on-error' не має нульових значень, що є типовим, ця команда організовує всі помилки для введення налагоджувача.
Окрім таких команд, як Mx eval-buffer або Mx load-file, ви можете перезапустити свіжий emacs з командного рядка:
emacs -q --load "init.el"
Приклад використання stackoverflow.com/questions/44959535/company-backends-in-gnu-emacs/
Якщо у вас відкривається оболонка всередині Emacs, ви також можете зробити:
. ~/.emacs
Може врятувати кілька ключових ударів.