Плюсы и минусы для каждого кроссплатформенного решения vimrc? - PullRequest
14 голосов
/ 15 октября 2010

Имея дело с .vimrc файлами конфигурации в Linux и Windows (две системы, которые я использовал до сих пор) и пытаясь сохранить конфигурации кросс-платформенными, я нашел в основном два решения:

  1. Создайте новую папку для файлов vim в /home/user, чтобы обе системы имели одинаковое имя vim (вместо значения по умолчанию .vim в linux и vimfiles в Windows) и используйте set runtimepath для получения эта новая папка;

    set runtimepath = ~ / vim_local, $ VIMRUNTIME источник ~ / vim_local / vimrc

    Источник

  2. При необходимости создайте набор условий os (например, has("32")) в .vimrc, основываясь на возможностях платформы или , но сохраняя исходные имена Unix и создавая символические ссылки в домашней папке Windows. к исходным файлам (от vimfiles до .vim где-нибудь, может быть .vim dir в Windows home или даже к папке dropbox). (Я не проверял этот подход в более старых версиях Windows, таких как XP).

Какое решение вы предпочитаете и почему? Каковы недостатки каждого решения? Какие еще решения у вас есть? (Вы также можете опубликовать свой собственный .vimrc здесь для обсуждения.)

Если вы используете какой-либо контроль исходного кода в ваших .vimrc файлах конфигурации, вы также создаете версии своих файлов плагинов (поэтому, когда вы "развертываете" свою конфигурацию на компьютерах, вы делаете только извлечение / клонирование из своего хранилища)? Многие люди используют pathogen и держат каждый плагин в своей собственной папке (обычно это git-репозиторий из github). Имеет ли смысл управлять версиями плагина, который уже является хранилищем из других источников?

Ответы [ 2 ]

8 голосов
/ 15 октября 2010

Я использую что-то, приближающее вариант 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.
7 голосов
/ 15 октября 2010

Я поместил это в мой .vimrc:

set runtimepath^=~/.vim  "Use instead of "vimfiles" on windows

, чтобы имя каталога .vim оставалось на обеих платформах.Я мог бы использовать условие os только для запуска этого в Windows.

Я обнаружил, что лучше всего быть настолько unixy, насколько это возможно, даже в Windows.По умолчанию я использую окончания строк в Unix (в частности, вы не хотите использовать CR в конфиге vim):

set fileformats=unix,dos,mac

И шрифты для платформы:

set guifont=Consolas:h12,Monaco:h15,Inconsolata:h12

IЯ также использую контроль версий (git / github) для dotfiles / config / etc в моем домашнем каталоге, и это прекрасно работает.Единственная хитрость заключалась в том, чтобы правильно настроить игнорируемые файлы, чтобы мне не постоянно сообщали обо всех файлах, которые я там не хочу создавать (мне пришлось использовать .git/info/exclude, потому что .gitignore в домашней папке имеет особое значение).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...