Я хочу смочь внести изменения в свой .emacs файл, не имея необходимость перезагружать Emacs.
Я нашел три вопроса, которые вид ответа, что я спрашиваю (можно найти их здесь, здесь и здесь), но проблема состоит в том, что изменение я только что сделал, к переключателю, и как комментарии к двум из ответов (a1, a2) к тем вопросам объясняют, решения, данные там (такие как файл перезагрузки M-x или буфер оценки M-x), не относятся к переключателям.
Я предполагаю, что существует способ переключить переменную снова с командой, но если существует способ перезагрузить целый .emacs и иметь все переключатели, переоцененные, не имея необходимость указывать их, я предпочел бы.
В любом случае я также ценил бы, если бы кто-то сказал мне, как переключить значение переменной так, чтобы, если я просто изменил один переключатель, я мог сделать это с командой, а не перезапустить Emacs только для того (я плохо знаком с Emacs). Я не знаю, насколько полезный эта информация, но изменение, которое я применил, было следующим (который я получил от этого ответа до другого вопроса):
(setq skeleton-pair t)
(setq skeleton-pair-on-word t)
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "{") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "<") 'skeleton-pair-insert-maybe)
Править: Я включал вышеупомянутое в .emacs и перезагрузил Emacs, так, чтобы изменения вступили в силу. Затем я прокомментировал все это и попробовал файл загрузки M-x. Это не работает. Предложение ниже (C-x C-e PP работает, если я использую его для оценки переключателя в первый раз, но не, когда я хочу отменить его). Я хотел бы что-то, что оценит комментарий, если такая вещь будет существовать...
Спасибо :)
Я включил все вышеперечисленное в .emacs и перезагрузил Emacs, чтобы изменения вступили в силу. Затем я закомментировал все это и попробовал M-x load-file. Это не работает.
Он не работает, потому что при запуске Emacs вы установили несколько переменных и ключей. Перезагрузка .emacs
с закомментированными командами не отменяет их. Вам придется перезаписать настройки вручную, чтобы отменить их с помощью
(setq variable-name nil)
и
M-x global-unset-key
enter, за которым следует клавиша, которую вы хотите отменить.
Некоторые вещи, которые вы, возможно, захотите попробовать:
Mx load-file
(затем, когда будет предложено, введите ~ /. emacs
введите ). M-x означает нажатие мета-клавиши (обычно Esc
на рабочих столах Linux и Windows), а затем нажатие обычной символьной клавиши x
.
Или, пока открыт файл .emacs
, поместите запрос сразу после закрывающей скобки для функции, которую вы хотите выполнить, и введите Ctrl-X
, Ctrl -E
. При этом выполняется блок, заключенный в ближайший набор скобок слева от курсора.
Эту последнюю технику я часто использую для сложных операций поиска и замены. Скажем, я редактирую XML-файл и хочу переместить закрывающие теги в строку раньше: я бы ввел в свой текущий XML-буфер (query-replace-regexp "[\ r \ n \ t] * " «»)
, затем поместите курсор сразу после закрывающей скобки и введите Ctrl-X
, Ctrl-E
.
Я так понимаю, вы хотите поэкспериментировать с включением / выключением пары скелетов?
Я бы хотел сделать это имея:
(setq skeleton-pair t) ; turns skeleton-pair on
(setq skeleton-pair nil) ; turns skeleton-pair off
в .emacs и нажав Cx Ce рядом с закрывающей круглой скобкой для конкретной версии, которую я хочу попробовать. Конечно, я должен был не забыть убедиться, что .emacs имеет только последнюю настройку, которую я хочу, чтобы он делал правильные вещи в следующий раз, когда я запускаю.
Вы всегда можете использовать буфер *scratch* для оценки выражений.
Если вы хотите установить переменную:
(setq skeleton-pair t)^J
Снять:
(setq skeleton-pair nil)^J
Вы должны использовать ctrl-J для вызова оценки; return (или ctrl-M) не работает.
Это работает для всех выражений лиспа, BTW. Если вам нужно быстро вычислить:
(+ 51 33)^J 84
Или если вы хотите найти ширину вашего кадра: (ширина кадра)^J 80
Это полезно, если вы возитесь или у вас есть неинтерактивные команды или переменные, которые нужно оценить.
Не уверен, что понял ваш вопрос (немного устал), но как насчет пометить то, что вы изменили (C-spc), а затем M-x eval-region? Если только я не сделал что-то серьезное, это делает то, что мне обычно нужно.
Каждый раз, когда вы оцениваете код elisp, он переходит в глобальную среду emacs этого сеанса emacs; поэтому, если вы установите значение переменной, оно все еще будет присутствовать в среде, даже если вы перезагрузите свой .emacs.
Было бы неплохо, если бы мы могли предварительно загрузить .emacs (или любой lisp) в «песочницу», чтобы протестировать его. Когда я выполняю тяжелую настройку .emacs, я обычно открываю один emacs для редактирования .emacs, а другой - для оценки (который я могу перезапустить, чтобы не повредить среду).