unix shell – Seguimiento de mi ruta de shell en Emacs

Pregunta:

No hace mucho tiempo, encontré el siguiente fragmento precioso que le permite a Emacs rastrear mi directorio actual en cualquier búfer ansi-term .

Más específicamente, si cd <some/path> desde dentro de una terminal dentro de Emacs, y luego Cx Cf , Emacs ejecutará find-file desde <some/path> directamente, lo cual es muy, muy útil.

if [ -n "$INSIDE_EMACS" ]; then
  chpwd() { print -P "\033AnSiTc %d" }
  print -P "\033AnSiTu %n"
  print -P "\033AnSiTc %d"
fi

Sin embargo, el truco anterior no funciona si ssh a una máquina remota de la cáscara. Idealmente, en este caso, si presiono Cx Cf Emacs debería reconocer que he transferido a alguna máquina y usar tramp para ejecutar find-file en la máquina correspondiente y en la ruta remota.

Esto me lleva a las siguientes dos preguntas:

  1. ¿Cómo y por qué funciona el fragmento anterior?
  2. ¿Cómo puedo extenderlo para que también pueda rastrear mis rutas remotas después de ingresar a otra máquina?

Respuesta:

Primero, como se menciona en el comentario de Robert, su fragmento no es válido. Como mínimo, necesita un punto y coma o una nueva línea antes de } . Las declaraciones impresas probablemente tampoco sean correctas.

Sin embargo, aquí hay suficiente para adivinar lo que está pasando, así que lo explicaré.

Cuando ejecuta ansi-term , invoca un shell con la variable de entorno $INSIDE_EMACS establecida. El código de shell luego hace cosas adicionales, lo principal para redefinir la función chpwd para que imprima cosas adicionales, que sin duda incluyen el directorio de trabajo actual. Puede verificar esto fácilmente notando que en cada comando probablemente vea el directorio actual en algún lugar del área del indicador después de completar el último comando adecuado.

Cuando ansi-term ve algo que parece un directorio al principio de una línea, lo rastrea. Entonces, en este sentido, el código no es especial; el directorio podría haberse mostrado de varias formas, como agregar \w al indicador mediante la configuración de la variable de entorno PS1 .

En cuanto al n. ° 2, consulte " Abrir archivo remoto mientras está en el búfer / ventana ansi-term de emacs: ansi-term + tramp "

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım