2011-04-26 12 views
10

Używam komputera Mac i MacVim 7.3.Jak rozwinąć dowiązanie symboliczne do pełnej ścieżki do pliku w vim?

Mam dowiązanie symboliczne ~/some/dowiązanie symboliczne, które jest linkiem do pliku rzeczywistego ~/some/actual_file.

Kiedy "vim ~/some/symlink" wywołuje plik w vim z linią stanu vima, mówiącą, że nazwa to ~/some/symlink, co ma sens.

Jak uzyskać pełną ścieżkę "prawdziwego" pliku ~/some/actual_file z poziomu vim? Chcę, aby linia stanu vim mówiła ~/some/actual_file zamiast ~/some/symlink.

Spodziewałem się, że funkcja vim function resolve() zadziała, biorąc pod uwagę jego opis pomocy (wklejony poniżej), ale rozwiązuje ("~/some/symlink") zwraca ~/some/symlink, więc to nie pomoże.

Czego mi brakuje? Dzięki!

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

Używając vima, możesz wykonywać polecenia i uzyskiwać dane wyjściowe za pomocą systemu ("cmd"). Dzięki temu będziesz w stanie wywołać "readlink -m", aby uzyskać prawdziwą ścieżkę. – Lynch

Odpowiedz

22

Twoim problemem jest "~", które nie jest częścią nazwy pliku, ale skrótem do katalogu domowego. Możesz użyć expand(), a następnie resolve(). np:

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

expand() będzie również rozszerzyć rzeczy jak zmienne środowiskowe (np $HOME, $VIMRUNTIME).

+0

Doskonała odpowiedź, dzięki Laurence! – svec

+3

@svec Jeśli nie chcesz, aby 'expand()' rozszerzało zmienne środowiskowe i robiło globbing, użyj 'fnamemodify ('~/some/symlink', ': p')'. – ZyX

+0

Aby uzyskać pełną ścieżkę do bieżącego pliku, należy zastąpić '%' dla '~/some/symlink'. Połącz go z kombinacją klawiszy wiodących, aby mieć pod ręką, gdy zapomnisz, który plik edytujesz ... (-_-) –

Powiązane problemy