Pensa: piastrellando la mia finestra di emacs con eshells, a la xmonad. È possibile? Posso usare M-x eshell per aprire la prima istanza di eshell, ma le chiamate future si concentrano solo sulla prima istanza.Creare più di un'istanza eshell in emacs
risposta
Si può fare questo:
`C-u M-x eshell`
Questo creerà *eshell*
, *eshell*<2>
, e così via.
La docstring per eshell afferma che "Un prefisso non numerico arg significa creare una nuova sessione." Ho digitato M-- M-x eshell ripetutamente e ogni volta ha aperto un nuovo buffer eshell.
Il mio approccio preferito è quello di generare le coperture denominate:
(defun make-shell (name)
"Create a shell buffer named NAME."
(interactive "sName: ")
(setq name (concat "$" name))
(eshell)
(rename-buffer name))
è il succo del discorso. Quindi M-x make-shell name
creerà la shell desiderata.
Invocare GNU schermo è un'altra opzione per coloro che utilizzano ANSI-termine
Cu Mx eshell grandi opere, ma preferisco gusci di nome - make-shell approccio, è utile quando si passa buffer
Mybe, la seguente soluzione è meglio. Perché il buffer eshell è determinato dal valore di eshell-buffer-name. Non è necessario rinominare il buffer.
(defun buffer-exists (bufname)
(not (eq nil (get-buffer bufname))))
(defun make-shell (name)
"Create a shell buffer named NAME."
(interactive "sName: ")
(if (buffer-exists "*eshell*")
(setq eshell-buffer-name name)
(message "eshell doesnot exists, use the default name: *eshell*"))
(eshell))
Ampliando make-eshell, questo crea un eshell aggiungendo il contatore successivo, quindi è come eshell1, eshell2, ecc .:
(lexical-let ((count 1))
(defun make-eshell-next-number()
(interactive)
(eshell)
(rename-buffer (concat "*eshell" (number-to-string count) "*"))
(setq count (1+ count))))
C-u M-x eshell funziona troppo. – ataylor
Accidenti. Il tuo commento non è stato scritto quando ho iniziato la mia risposta :) –