2011-04-26 16 views
10

私はMacとMacVim 7.3を使用しています。vimでファイル名のフルパスへのシンボリックリンクを拡張するには?

私は実際のファイル〜/ some/actual_fileへのリンクであるシンボリックリンク〜/ some/symlinkを持っています。

私が "vim〜/ some/symlink"を実行すると、vimのステータス行に〜/ some/symlinkというファイルが表示されます。

vimの中から「実」ファイル〜/ some/actual_fileの完全なパスを取得するにはどうすればよいですか? vimのステータス行に〜/ some/symlinkの代わりに〜/ some/actual_fileと言って欲しい。

解決策(〜/ some/symlink)は〜/ some/symlinkを返すので、ヘルプは表示されません。

私には何が欠けていますか?ありがとう!

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

vimを使用すると、コマンドを実行してsystem( "cmd")を使用して出力を取得できます。これでmigrは "readlink -m"を呼び出して実際のパスを得ることができます。 – Lynch

答えて

22

あなたの問題は実際にはファイル名の一部ではなく、ホームディレクトリの省略形である「〜」です。 expand()、次にresolve()を使用できます。例えば:

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

expand()も環境変数のようなものを拡大していきます(例:$HOME$VIMRUNTIME)。

+0

完璧な答え、ありがとうLaurence! – svec

+3

@svec 'expand()'が環境変数を展開してグロブしないようにするには、 'fnamemodify( '〜/ some/symlink'、 ':p')'を使います。 – ZyX

+0

現在のファイルの絶対パスを取得するには、 '〜/ some/symlink'に'% 'を置き換えてください。あなたが編集しているファイルを忘れてしまったときに、リーダーのキーの組み合わせにバインドしてください。(-_-) –

関連する問題