ИДЕЯ
Я адаптировал идею @ holman к символическим ссылкам на файлы, имя файла которых заканчивается на «.symlink», и вместо этого я использую символические ссылки на файлы, имя файла которых соответствует регулярному выражению \.(<os>-)?symlink$
. Делая это, я могу иметь файлы, которые всегда являются символическими ссылками, и файлы, которые являются символическими ссылками только в определенной среде.
Например, в мой ~/.gitconfig
я включаю ~/.gitconfig_include
, который содержит специфичные для ОС конфигурации.
[include]
path = ~/.gitconfig_include
Затем у меня есть два файла .gitconfig_include: один для Linux и другой для Windows.
dotfiles
|-- git
|-- .gitconfig.symlink
|-- .gitconfig_include.linux-symlink
|-- .gitconfig_include.windows-symlink
Это позволяет символической ссылке иметь одинаковое имя, но разные цели, в зависимости от ОС.
К сожалению, этой стратегии было недостаточно для удовлетворения всех требований к моим кроссплатформенным точечным файлам.
Плохое решение Vim на Windows
По какой-то причине Vim ищет свои файлы в ~/vimfiles
вместо ~/.vim
в Windows. Это означает, что, если бы я хотел сохранить ту же стратегию, мне пришлось бы дублировать папку с файлами - что я не хотел делать по понятным причинам.
dotfiles
|-- vim
|-- .vim.linux-symlink
|-- vimfiles.windows-symlink
Вместо того, чтобы дублировать папку с файлами, я создал файл, соответствующий имени папки, с расширением «.symlinks».
dotfiles
|-- vim
|-- .vim
|-- .vim.symlinks
Файл .vim.symlinks содержит имя символической ссылки для каждой среды.
linux: .vim
windows: vimfiles
Это позволяет символической ссылке иметь разные имена, но одну и ту же цель, в зависимости от ОС.
РАБОЧИЙ РЕШЕНИЕ
Если вы хотите проверить, как все закончилось, пожалуйста, посетите мои точечные файлы на GitHub .