Una de mis principales razones para usar Emacs es obtener un entorno potente después ssh
de ingresar a una máquina remota. Lo primero que hago después de iniciar Emacs es correr M-x shell
para obtener una línea de comando. Como Emacs tarda un poco en iniciarse, sería muy conveniente tener una opción para pedirle a Emacs que inicie un shell cuando lo ejecute, después de analizar mi archivo de inicialización (tengo algunos ganchos de shell configurados para hacer una cosa y otra ) Idealmente, me gustaría poder ejecutarlo con una opción adicional para no tener que agregar nada específico a mi archivo de inicialización en las máquinas remotas (podría configurar un bash
alias si quisiera). Algo como esto:
emacs afile1 afile2 -startShell
De hecho, dado que establecer la conexión segura lleva unos 30 segundos, lo que realmente me gustaría hacer es compilar el "inicio de un shell" en el ssh
comando en sí, utilizando ssh
con -t
para iniciar un programa basado en pantalla .
ssh -t me@remote emacs afile1 afile2 -startShell
Eché un vistazo a la documentación de argumentos de la línea de comandos para Emacs, pero todavía estoy comenzando con Emacs y Lisp y la personalización, y no era inmediatamente obvio cómo proceder para tratar los argumentos de la línea de comandos. ¿Cómo haría para hacer esto?
( Pregunta relacionadaeshell
mencionada por el usuario @Name.)
ssh -t me@remote 'emacs -f shell'
Funciona como un sueño.Respuestas:
Puede usar el modificador -f para llamar a una función emacs desde la línea de comandos.
El comentario muestra cómo hacer esto sobre ssh usando -t y esa es una forma. Sin embargo, tiene algunas desventajas. El principal es que ejecuta emacs de forma remota, lo que significa que necesitará tener todas sus cosas de configuración de emacs en el sistema remoto, así como mantener algunas localmente para su versión local. También pierde algo de flexibilidad si desea hacer cosas localmente y remotamente y tal vez moverse entre ellas.
Una alternativa sería ejecutar sus emacs localmente e iniciar un shell desde la línea de comando y luego ssh desde ese shell. Puede usar el vagabundo sobre ssh para editar archivos, etc. y luego usar el shell para ejecutar una sesión ssh interactiva.
Una vez que te sientas cómodo con eso, puedes mirar algunos de los paquetes relacionados con ssh disponibles para emacs. Entonces debería ser posible llamar a una función desde uno de esos paquetes desde la línea de comandos para automatizar la creación de una sesión ssh. Es posible que deba escribir una función de contenedor simple para facilitar esto. Entonces solo tendrá que administrar 1 configuración de configuración de emacs y obtendrá la flexibilidad adicional.
fuente
ssh -t ... 'emacs -f shell'
directamente desde un terminal es que tengo que mantener actualizada una configuración de emacs remota y separada. He jugado con tramp, y ahora he reducido el tiempo de inicio a un nivel aceptable con el uso compartido de conexiones ssh , es útil y extremadamente útil para, por ejemplo,scp
completar nombres de archivos remotos. Sin embargo, todavía no es una solución perfecta para ejecutarse dentro de una sola sesión, y sus desventajas actualmente superan sus ventajas.ssh
el indicador se muestra mal con algunos^
caracteres prefijados. Hoy lo intenté nuevamente y la edición de archivos es perfecta, pero el mensaje aún está en mal estado. También mi sospecha es que no todo será perfecto. Por ejemplo, ejecutarag
un proceso en la máquina remota pero tuve menos suerte haciendo unrgrep
. Ciertamente parece que vale la pena investigar un poco más ( github.com/ieure/ssh-el en melpa parece interesante) cuando tengo tiempo, y volver a publicar cualquier pregunta en este sitio; Gracias por plantearlo.