reiniciando el proceso de shell en el búfer

reiniciando el proceso de shell en el búfer

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 .emacsarchivo 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 RETmientras está en el My Shellbú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 Shellantes de ejecutar la shellfunción real.

información relacionada