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

#vim

#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 resolve () будет работать, учитывая ее описание в справке (вставлено ниже), но resolve(«~/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. Используя vim, вы можете выполнить команду и получить вывод с помощью system («cmd»). С помощью этого вы сможете вызвать «readlink -m», чтобы получить реальный путь.

Ответ №1:

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

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

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

Комментарии:

1. @svec Если вы не хотите expand() расширять переменные среды и выполнять глобализацию, используйте fnamemodify('~/some/symlink', ':p') .

2. Чтобы получить полный путь к текущему файлу, замените % на ~/some/symlink . Привяжите ее к комбинации клавиш выноски, чтобы она была удобной, когда вы забудете, какой файл редактируете… (-_-)

3. Или, что еще лучше, используйте %:p , чтобы всегда получать полный путь.