Пожалуйста, не задавайте вопросы только для того, чтобы отвечать на свои вопросы, особенно если на них легко ответить.
Эдгар Арутюнян
8
@ EdgarAroutiounian Можно задавать вопросы и отвечать на них ! Однако во время приватной бета-версии следует избегать простых вопросов: частная бета-версия задает тон для сайта.
Жиль "ТАК - перестань быть злым"
1
@ Жиль: Конечно, отвечать на свои вопросы - это нормально, но это довольно подозрительно, когда вы задаете 3 вопроса подряд, каждый с ответом сразу после того, как задаете вопрос.
Эдгар Арутюнян
2
@ EdgarAroutiounian, Джон Эриксон хочет, чтобы мы ответили на простые вопросы AZ. Добро пожаловать
Люк
2
Я думаю , что это достаточно справедливо - для нового пользователя иш это часто не очевидно , что нет ничего особенного о царапанию буфера, и @ ответ Сигмы довольно аккуратно.
Марк Ауффлик,
Ответы:
29
Просто заново создать буфер, переключаясь на него: C-x b *scratch* RET. Начиная с Emacs 21.2, если вы создаете буфер с именем *scratch*, он автоматически переводится в режим взаимодействия с Lisp .
Зачем вам нужна специальная функция? Для меня, если я убью, *scratch*а затем переключусь обратно, он автоматически переключится в режим lisp-взаимодействия.
Тихон Джелвис
@TikhonJelvis Ах, действительно. У меня есть эта функция, потому что она не делала этого в более старых версиях (изменение от 21.2, которое не является абсолютным в недавнем выражении, но более поздним, чем основная часть моего .emacs).
Жиль "ТАК - перестань быть злым"
Да. Emacs 21.2 был выпущен примерно в то время, когда я впервые использовал компьютер . Это довольно большая абсолютная разница;).
Тихон Джелвис
7
Возможно, лучше *scratch*автоматически заново создавать буфер всякий раз, когда он удаляется, и избегать повторного ввода его имени.
(defun prepare-scratch-for-kill ()
(save-excursion
(set-buffer (get-buffer-create "*scratch*"))
(add-hook 'kill-buffer-query-functions 'kill-scratch-buffer t)))
(defun kill-scratch-buffer ()
(let (kill-buffer-query-functions)
(kill-buffer (current-buffer)))
;; no way, *scratch* shall live
(prepare-scratch-for-kill)
;; Since we "killed" it, don't let caller try too
nil)
(prepare-scratch-for-kill)
*scratch*Буфер представляет собой буфер , выбранный при запуске, и имеет основной режим лисповского взаимодействия . Примечание: режим для *scratch*буфера управляется переменной initial-major-mode.
В общем, вы можете создать столько «чистых» буферов, сколько захотите, и называть их по своему выбору.
C-x bNAME
переключается в буфер NAME, создавая его, если он не существует. Новый буфер не связан с файлом на диске, пока вы не используете C-xC-w(или M-xwrite-file), чтобы выбрать файл, в котором он должен быть сохранен.
M-xtext-mode изменяет основной режим текущего буфера на текстовый режим.
Чтобы найти все доступные режимы (то есть, не требуя каких-либо новых пакетов), вы можете получить список, набрав:
Мне нравится использовать скретч-буферы для одноразовых вещей. Имея только один, это несколько ограничивает, поэтому у меня есть scratchинтерактивная команда для открытия нового чистого буфера (независимо от того, сколько уже существует):
(defun scratch ()
"create a new scratch buffer to work in. (could be *scratch* - *scratchX*)"
(interactive)
(let ((n 0)
bufname)
(while (progn
(setq bufname (concat "*scratch"
(if (= n 0) "" (int-to-string n))
"*"))
(setq n (1+ n))
(get-buffer bufname)))
(switch-to-buffer (get-buffer-create bufname))
(if (= n 1) initial-major-mode))) ; 1, because n was incremented
Я использую это в течение шести недель. Это здорово, спасибо! Но ... Прошлой ночью мой компьютер с Windows перезагрузился. Я потерял данные из своих чистых буферов, потому M-x recover-sessionчто не восстанавливает их. Кто-нибудь изменил это, чтобы использовать что-то вроде make-temp-file?
Давелоял
1
Могу ли я предложить создать пустой буфер? Интересно то, что вы сначала создаете буфер, а потом сохраняете его, если действительно хотите.
Ответы:
Просто заново создать буфер, переключаясь на него:
C-x b *scratch* RET
. Начиная с Emacs 21.2, если вы создаете буфер с именем*scratch*
, он автоматически переводится в режим взаимодействия с Lisp .источник
*scratch*
а затем переключусь обратно, он автоматически переключится в режим lisp-взаимодействия..emacs
).Возможно, лучше
*scratch*
автоматически заново создавать буфер всякий раз, когда он удаляется, и избегать повторного ввода его имени.источник
Привязки по умолчанию для GNU Emacs:
C-xb
*scratch*
или, более многословно
switch-to-buffer
*scratch*
*scratch*
Буфер представляет собой буфер , выбранный при запуске, и имеет основной режим лисповского взаимодействия . Примечание: режим для*scratch*
буфера управляется переменнойinitial-major-mode
.В общем, вы можете создать столько «чистых» буферов, сколько захотите, и называть их по своему выбору.
C-x b
NAME
переключается в буфер
NAME
, создавая его, если он не существует. Новый буфер не связан с файлом на диске, пока вы не используете C-xC-w(или M-xwrite-file
), чтобы выбрать файл, в котором он должен быть сохранен.M-x
text-mode
изменяет основной режим текущего буфера на текстовый режим.Чтобы найти все доступные режимы (то есть, не требуя каких-либо новых пакетов), вы можете получить список, набрав:
apropos-command
-mode$
источник
Мне нравится использовать скретч-буферы для одноразовых вещей. Имея только один, это несколько ограничивает, поэтому у меня есть
scratch
интерактивная команда для открытия нового чистого буфера (независимо от того, сколько уже существует):принято с: http://everything2.com/index.pl?node_id=1038451
источник
M-x recover-session
что не восстанавливает их. Кто-нибудь изменил это, чтобы использовать что-то вродеmake-temp-file
?Могу ли я предложить создать пустой буфер? Интересно то, что вы сначала создаете буфер, а потом сохраняете его, если действительно хотите.
Вам нужно будет установить initial-major-mode на lisp в вашем файле инициализации, и вы должны привязать my-empty-buffer к ярлыку, подобному
C-n
.Предоставлено ergoemacs
источник