#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
, чтобы всегда получать полный путь.