En emacs, a menudo tengo varios buffers de shell abiertos y uso rename-buffer para realizar un seguimiento de ellos. A veces, sin darme cuenta, cierro el shell presionando demasiados ^D, o estoy en un sistema que automáticamente agota el tiempo de espera de los shells inactivos. ¿Hay alguna manera de iniciar un nuevo shell en el mismo búfer? Porque he cambiado el nombre del buffer decaparazónAl escribir Mx shell se iniciará un shell en un nuevocaparazónbuffer, no el buffer actual.
Respuesta1
En lugar de Mx Shell, ejecute el siguiente código lisp de emacs usando M-:
(shell (current-buffer))
Respuesta2
Esto no es perfecto, pero te brinda la mayor parte de lo que deseas. Coloque este código en su .emacs
archivo de inicio:
(defun my-shell-mode-hook ()
"Added to shell-mode-hook. This function runs every time function shell
starts a shell."
(rename-buffer "My Shell" 'unique))
(add-hook 'shell-mode-hook 'my-shell-mode-hook)
Siéntase libre de cambiar la cadena "My Shell"
por otro nombre. Si lo hace M-x shell RET
mientras está en el My Shell
búfer, entonces el nuevo shell comienza en el mismo búfer. Desafortunadamente, si lo haces en otro buffer, obtendrás un nuevo buffer llamado My Shell<2>
, que no es tan bonito. Creo que este último efecto puede eliminarse medianteasesorandofunction shell
, para que cambie al búfer My Shell
antes de ejecutar la shell
función real.