Я использую что-то, приближающее вариант 2, но, вероятно, рассматривал вариант 3. Я храню все в одной папке, которая называется ~/.vim
или c:\vim\vimfiles
.Они контролируются версией с помощью Bazaar и хранятся на сервере с доступом sftp.При установке vim на новый компьютер с Windows (с Bazaar) я помещаю его в c:\vim\vim73
и выполняю:
bzr co sftp://<username>@<server>/path/to/vimfiles
copy vimfiles\vimrc_linker.vim _vimrc
На компьютерах с Linux я делаю:
cd
bzr co sftp://<username>@<server>/path/to/vimfiles .vim
ln -s .vim/vimrc_linker.vim .vimrc
vimrc_linker.vim
содержит одну строку:
runtime vimrc
, которая открывает файл с именем vimrc
, который хранится в .vim
(или vimfiles
в Windows).Это позволяет мне поддерживать мой vimrc под тем же контролем версий, что и остальная часть каталога .vim
.Поскольку я обычно использую cygwin Bazaar в Windows, я сохраняю все плагины с окончаниями строк Unix, чтобы избежать проблем с совместимостью (как Windows, так и Linux VIMS справляются с окончаниями Unix-строк в плагинах, но Linux не любит окончания Windows).
Использование контроля версий позволяет мне очень легко синхронизировать все компьютеры, которые я использую, и если я устанавливаю плагин и он мне не нравится, я могу очень легко отменить изменение, не думая окакие файлы были установлены этим плагином (VCS говорит мне).
Что касается условий ОС, я использую has("win32")
и т. д. для дифференциации.Тем не менее, существует очень мало ситуаций, которые требуют такой дифференциации, так что это незначительное неудобство.Мой vimrc имеет длину 1000 строк (в нем довольно много функций, которые мне никогда не удавалось разделить на плагины), и только 10-15 * находятся внутри блоков has
:
- Шрифтконфигурация
- Путь к ctags / cscope, так как у меня есть исполняемый файл Windows в vimfiles для упрощения работы на нескольких ПК без необходимости установки
- Отмена расположения каталога
- Отображение(
,x
) для максимизации окна GVim: в Windows и Linux это делается по-разному - В Windows некоторые отображения для vimtweak.dll переходят в полноэкранный режим (без строки заголовка или чего-либо еще).Не найдено эквивалента для Linux.