2011-04-26 14 views
10

Estoy usando Mac y MacVim 7.3.¿Cómo expandir un enlace simbólico a la ruta completa de un nombre de archivo en vim?

Tengo un enlace simbólico ~/some/symlink que es un enlace a un archivo real ~/some/actual_file.

Cuando "vim ~/some/symlink" aparece el archivo en vim con la línea de estado de vim diciendo que el nombre es ~/some/symlink, lo cual tiene sentido.

¿Cómo obtengo la ruta completa del archivo "real" ~/some/actual_file desde vim? Quiero que la línea de estado vim diga ~/some/actual_file en lugar de ~/some/symlink.

Esperaba que la función vim resolve() funcionaría, dada su descripción de ayuda (pegado debajo), pero resolver ("~/some/symlink") devuelve ~/some/symlink, por lo que no sirve de nada.

¿Qué me estoy perdiendo? ¡Gracias!

resolve({filename})     *resolve()* *E655* 
     On MS-Windows, when {filename} is a shortcut (a .lnk file), 
     returns the path the shortcut points to in a simplified form. 
     On Unix, repeat resolving symbolic links in all path 
     components of {filename} and return the simplified result. 
     To cope with link cycles, resolving of symbolic links is 
     stopped after 100 iterations. 
     On other systems, return the simplified {filename}. 
+0

Usando vim puede ejecutar el comando y obtener la salida usando el sistema ("cmd"). Con esto puedes migrar a "readlink -m" para obtener la ruta real. – Lynch

Respuesta

22

Su problema es la "~", que no es realmente parte del nombre de archivo, pero en lugar de una forma abreviada de su directorio personal. Puede usar expand() y luego resolve(). por ejemplo:

:echo resolve(expand("~/some/symlink")) 

expand() también ampliará cosas como variables de entorno (por ejemplo: $HOME, $VIMRUNTIME).

+0

Respuesta perfecta, gracias Laurence! – svec

+3

@svec Si no desea 'expand()' expandir las variables del entorno y hacer globbing, use 'fnamemodify ('~/some/symlink', ': p')'. – ZyX

+0

Para obtener la ruta completa del archivo actual, sustituya '%' por '~/some/symlink'. Enlace a una combinación de teclas líder para tenerlo a mano cuando se le olvida qué archivo está editando ... (-_-) –

Cuestiones relacionadas