soft similitudes simbólicos simbolicos qué permiten para listar link hay hard fuertes entre enlaces duros directorios diferencias emacs

emacs - simbolicos - qué diferencias y similitudes hay entre enlaces simbólicos y enlaces duros



Emacs y enlaces simbólicos. (4)

Digamos que tengo un enlace simbólico en /home/.bashrc que apunta a un archivo .bashrc real en otra parte: /some/other/path/.bashrc que está debajo de un repositorio git.

Si abro /home/.bashrc en Emacs, me /home/.bashrc con:

Symbolic link to Git-controlled source file; follow link? (y or n)

Normalmente escribo y , ya que quiero editar el archivo real. Sin embargo, más adelante, si hago buffer-file-name Emacs devuelve /some/other/path/.bashrc , y no /home/.bashrc ).

Me gustaría que Emacs recuerde que la forma en que accedí a este archivo fue a través de un enlace simbólico.

En otras palabras, me gustaría que mis enlaces simbólicos fueran transparentes para Emacs. Parte de la razón es que tengo varias macros de Emacs que dependen de la ruta del archivo actual, y estas macros piensan que estoy trabajando con un archivo ubicado en /some/other/path y no en /home/ .

¿Cómo puedo hacer esto?


Cuando se le indica con

Symbolic link to Git-controlled source file; follow link? (y or n)

escriba n . En lugar de seguir el enlace simbólico y abrir directamente el archivo al que apunta el enlace simbólico, emacs utilizará el enlace simbólico en sí, como desee.

Una advertencia: hacer esto evita que las funciones de control de versión de emacs detecten e interactúen con el repositorio en el destino, si lo hay.

Si desea cambiar el comportamiento predeterminado, consulte la documentación de la variable de personalización vc-follow-symlinks . ( Ch v vc-follow-symlinks )


Sólo para completar, para alguien que tiene una pregunta sobre

Symbolic link to Git-controlled source file; follow link? (y or n)

pero no necesariamente quiere lo que quiere el OP, esta es la documentación de Ch v vc-follow-symlinks (a partir de mi versión de Emacs: busque sus propios Emacs para obtener detalles):

vc-follow-symlinks es una variable definida en vc-hooks.el . Su valor es preguntar.

Documentación: Qué hacer si visita un enlace simbólico a un archivo bajo el control de versiones. La edición de un archivo de este tipo a través del enlace evita el sistema de control de versiones, lo cual es peligroso y probablemente no sea lo que usted desea.

Si esta variable es t, VC sigue el enlace y visita el archivo real, informándole sobre ello en el área de eco. Si es `preguntar '', VC solicita confirmación si debe seguir el enlace. Si es nulo, se visita el enlace y se muestra una advertencia.

Puedes personalizar esta variable.

El resultado es que para evitar que se le solicite cada vez, puede establecer en su .emacs , ya sea

(setq vc-follow-symlinks t)

seguir siempre el enlace simbólico (y editar el archivo "real" directamente), o

(setq vc-follow-symlinks nil)

para editar siempre el archivo como si estuviera en el enlace simbólico (esto parece funcionar bien, no eliminará el enlace simbólico ni nada, pero no le permitirá utilizar elementos relacionados con el control de versiones en el archivo). Yo prefiero el primero (a diferencia del OP).


Si no sabe o no le importa el paquete vc Emacs, solo haga

(setq vc-handled-backends nil)

que deshabilita por completo vc , así como este molesto mensaje sobre los siguientes enlaces simbólicos.

Entonces, probablemente querrá personalizar find-file-visit-truename dependiendo de si desea o no encontrar un archivo para seguir enlaces simbólicos o no.


Si tiene un caso de uso como el que tengo, donde quiero acceder solo a ciertos archivos con teclas de acceso rápido, puede usar la función file-truename que resuelve todos los enlaces simbólicos en el archivo y por lo tanto evita la pregunta molesta sin cambiar el valor predeterminado. para todo lo demás.

(global-set-key (kbd "<f7>") (lambda () (interactive) (find-file (file-truename user-init-file))))