Existe alguma maneira fácil de liberar toda a saída no shell
buffer? Como recentemente (acredito que o Emacs 24.4 já tem isso), os *shell*
buffers não são editáveis, eles se comportam de maneira semelhante ao comportamento típico de um terminal, ou seja, permitindo apenas que você adicione texto no final ou libere a última saída, mas você não pode adicione texto em qualquer lugar ou remova parte dele arbitrariamente. Parece que estou perdendo algo importante sobre essa melhoria (?). Na verdade, torna mais irritante. Procurei nos documentos os buffers *shell*
e *Messages*
, mas não consegui encontrar uma menção à pergunta.
Além da pergunta original: qual é o sentido dessa mudança? Para mim, isso não parece uma melhoria, portanto, a menos que haja um problema, eu gostaria de configurá-lo para leitura e gravação como padrão.
Estou falando do Emacs 24.4 , 25.0.50.1, é claro.
fonte
Messages
ser somente leitura agora, mas não vejo como isso se relaciona aos buffers de shell.shell
buffer @Malabarba também era completamente editável. Ou seja, você pode excluir ou adicionar texto a qualquer momento que desejar, enquanto agora você só pode anexar texto no final e também não pode removê-lo em nenhum outro lugar.*Messages*
se comporta da mesma maneira.Respostas:
(erase-buffer)
não funcionará em buffers de comint e shell se forem somente leitura.Aqui está o desfecho que eu uso com frequência para limpar os buffers de shellish:
Talvez você possa associá-lo a
s-k
seus modos relevantes para imitar o comportamento de limpeza do Terminal.app do OSX.Atualização 11/2016
Em algum lugar do desenvolvimento do Emacs 25 (e também na minha versão mais recente, "26.0.50.1"),
(comint-clear-buffer)
foi adicionadocomint-mode
, o que é uma versão mais concisa do meu desunião personalizado. Aqui está a fonte de referência:Esta solução integrada também funciona se você tiver
(setq comint-prompt-read-only t)
.fonte
M-x shell
então: SM-x erase-buffer
funciona perfeitamente em um buffer do modo Shell no tronco do Emacs, e não vejo razão para que não deva funcionar no 24.4 também.(erase-buffer)
não funciona para mim pessoalmente. Eu tenho(setq comint-prompt-read-only t)
na minha configuração, que acho útil para não atrapalhar o prompt e, portanto,(erase-buffer)
late para mim.Você pode limpar o
*Messages*
buffer da mesma maneira que sempre, com okill-buffer
comando Na próxima vez que uma mensagem for sinalizada, o buffer será recriado novamente.O motivo pelo qual esse buffer é agora somente leitura, é que ele recebeu seu próprio modo principal , que herda de
special-mode
, que é somente leitura. As vantagens por trás disso são diversas.special-mode
foi desenvolvido para leitura, por isso possui várias combinações de teclas muito convenientes para buffers que não devem ser editados.Não sei o que
*shell*
tem a ver com nada. Mas se você quiser apagá-lo,M-x
erase-buffer
deve fazê-lo.fonte