Domanda Come espandere un collegamento simbolico al percorso completo di un nome di file in vim?


Sto usando un Mac e MacVim 7.3.

Ho un link simbolico ~ / some / symlink che è un link a un file reale ~ / some / actual_file.

Quando "vim ~ / some / symlink" richiama il file in vim con la riga di stato di vim dicendo che il nome è ~ / some / symlink, che ha senso.

Come posso ottenere il percorso completo del file "reale" ~ / some / actual_file da dentro vim? Voglio che la riga di stato di vim dica ~ / some / actual_file invece di ~ / some / symlink.

Mi aspettavo che la funzione vim resolve () funzionasse, data la sua descrizione di help (incollata sotto), ma risolve ("~ / some / symlink") restituisce ~ / some / symlink, quindi non è di aiuto.

Cosa mi manca? Grazie!

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}.

10
2018-04-26 18:13


origine


risposte:


Il tuo problema è il "~", che non è realmente parte del nome del file, ma piuttosto una scorciatoia per la tua home directory. Puoi usare expand() e poi resolve(). per esempio:

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

expand() amplierà anche cose come le variabili di ambiente (es: $HOME, $VIMRUNTIME).


23
2018-04-26 18:30