Как расширить символическую ссылку на полный путь имени файла в vim?

Я использую Mac и MacVim 7.3.

У меня есть символическая ссылка ~/some/symlink, которая является ссылкой на реальный файл ~/some/actual_file.

Когда я "vim ~/some/symlink", он выводит файл в vim с помощью строки состояния vim, говорящей, что это имя ~/some/symlink, что имеет смысл.

Как мне получить полный путь к "реальному" файлу ~/some/actual_file из vim? Я хочу, чтобы строка состояния vim говорила ~/some/actual_file вместо ~/some/symlink.

Я ожидал, что функция vim function() будет работать, учитывая ее описание справки (вставляемое ниже), но разрешение ( "~/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}.

Ответ 1

Ваша проблема - "~", которая на самом деле не является частью имени файла, а вместо этого сокращает ваш домашний каталог. Вы можете использовать expand(), а затем resolve(). например:

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

expand() также будет расширять такие объекты, как переменные среды (например: $HOME, $VIMRUNTIME).