Abra novamente o buffer * scratch *


26

Se fechei acidentalmente o buffer de arranhões no Emacs, como faço para criar um novo buffer de arranhões?


Por favor, não faça perguntas apenas com o objetivo de responder às suas próprias perguntas, especialmente se elas são fáceis de responder.
Edgar Aroutiounian

8
@EdgarAroutiounian Não há problema em fazer e responder sua própria pergunta ! No entanto, perguntas fáceis devem ser evitadas durante o beta privado: o beta privado define o tom do site.
Gilles 'SO- stop being evil'

1
@Gilles É claro que responder suas próprias perguntas é bom, mas é bastante suspeito quando você faz três perguntas consecutivas, cada uma com uma resposta imediatamente após fazer a pergunta.
Edgar Aroutiounian

2
@EdgarAroutiounian, Jon Ericson quer que respondamos às perguntas simples de AZ. Bem
Luke

2
Eu acho que é justo o suficiente - para um usuário novato, muitas vezes não é óbvio que não haja nada de especial no buffer de rascunho , e a resposta da @ Sigma é bastante clara.
Mark Aufflick

Respostas:


29

Apenas recriar o tampão mudando para isso: C-x b *scratch* RET. Desde o Emacs 21.2, se você criar um buffer chamado *scratch*, ele será automaticamente colocado no modo Lisp Interaction .


Por que você precisa de uma função especial? Para mim, se eu matar *scratch*e depois voltar para ele, ele será definido automaticamente para o modo de interação lisp.
Tikhon Jelvis 23/09

@TikhonJelvis Ah, de fato. Eu tenho essa função porque ela não fez isso nas versões mais antigas (a alteração é da 21.2, que não é recente em termos absolutos, mas mais recente que a maior parte da minha .emacs).
Gilles 'SO- stop be evil'

Sim. O Emacs 21.2 foi lançado na época em que eu usei um computador . Essa é uma diferença absoluta bastante grande;).
Tikhon Jelvis 23/09

7

É indiscutivelmente melhor recriar o *scratch*buffer automaticamente sempre que ele for excluído e evitar a necessidade de redigitar seu nome.

(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)

4

Ligações padrão do GNU Emacs:

C-xb*scratch*

ou, mais detalhadamente

  1. M-xswitch-to-buffer
  2. Digitando: *scratch*
  3. E então apertando a RETtecla.

O *scratch*buffer é o buffer selecionado na inicialização e possui o modo principal Lisp Interaction . Nota: o modo para o *scratch*buffer é controlado pela variável initial-major-mode.


Em geral, você pode criar quantos buffers "zero" quiser e nomeá-los como quiser.

C-x bNAME

muda para buffer NAME, criando-o se não existir. Um novo buffer não está associado a um arquivo no disco até você usar C-xC-w(ou M-xwrite-file) para escolher um arquivo onde ele deve ser salvo.


M-xtext-mode altera o modo principal do buffer atual para modo de texto.

Para encontrar todos os modos disponíveis (ou seja, sem exigir novos pacotes), você pode obter uma lista digitando:

  1. M-xapropos-command
  2. Então digite: -mode$
  3. E então pressione RET

2

Eu gosto de usar buffers de arranhão para coisas descartáveis. Ter apenas um é um pouco limitador, portanto, eu tenho scratchcomo um comando interativo para abrir um novo buffer temporário (não importa quantos já existam):

(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

adotado em: http://everything2.com/index.pl?node_id=1038451


Eu uso isso há seis semanas. Está ótimo, obrigado! Mas ... Ontem à noite, meu computador com Windows foi reiniciado. Perdi dados dos meus buffers de rascunho, porque M-x recover-sessionnão os recupera. Alguém modificou isso para usar algo parecido make-temp-file?
Daveloyall 12/04

1

Posso sugerir criar um buffer vazio? O interessante é que você cria o buffer primeiro e o salva depois, se realmente quiser.

(defun my-empty-buffer () 
  "Open a new empty buffer."
  (interactive)
  (let ((buf (generate-new-buffer "untitled")))
    (switch-to-buffer buf)
    (funcall (and initial-major-mode))
    (setq buffer-offer-save t)))

Você precisará definir o modo principal principal como lisp no seu arquivo init e vincular o buffer my-empty-buffer a um atalho como C-n.

Cortesia de ergoemacs

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.