Я знаю, что многие люди хранят свои .vimrc на GitHub, чтобы упростить получение права на работу на новых машинах, и это имеет для меня полное значение. Однако включение плагинов проблематично, поскольку используемые мной плагины уже являются репозиториями git. Как создать репо, который будет отслеживать как их .vimrc, так и любые плагины, которые могут быть установлены?
21
Ответы:
Как работать с репозиториями в репозиториях - постоянный вопрос с git. Подмодули Git - это один из способов решения ситуации за счет добавления немного большей сложности для отслеживания. Сайт git содержит введение в подмодули .
Основная идея состоит в том, чтобы сохранить ссылку на другой репозиторий git, связанный с путем в вашем репозитории. Эти ссылки хранятся в файле
.gitmodules
в корне вашего хранилища (которым управляет git, поэтому оставьте его в покое). Некоторая сложность проявляется при клонировании репо с субмодулями: необходимо явноgit submodule init
создать.gitmodules
файл, а затемgit submodule update
клонировать субмодули.Вот пошаговое руководство о том, как я добавлю новый плагин vim в мой репозиторий dotfiles (я использовал
~/.vim/
псевдоним этого репозитория.vim/
) с помощью подмодуля:После
submodule add
, agit status
будет показывать, что вы изменили (или создали).gitmodules
файл, примерно так:Он также должен отображаться
.vim/bundle/vim-elixir
как новый файл. Теперь Git обрабатывает этот путь специально: это обычный каталог в вашей файловой системе (поэтому vim загружает его нормально), но онgit diff
будет обрабатывать его как определенный коммит из своего репозитория. При просмотре различий или журналов для этого пути (напримерgit log -1 -u .vim/bundle/vim-elixir
), git покажет его в виде однострочной строки, например:Обновление до последней версии плагина соответствует входу в репозиторий подмодуля и проверке новой фиксации, а затем фиксации этого в вашем репозитории:
источник
Вам не нужно хранить плагины в вашей VCS; Вы также можете использовать менеджер пакетов Vim. Со вчерашнего дня я использую vim-plug :
Вы можете определить плагины в вашем vimrc следующим образом:
Затем перезапустите Vim и установите плагины с:
Или вы можете добавить этот фрагмент из FAQ в ваш файл vimrc перед
plug#begin()
вызовом:Это вставит плагины
~/.vim/plugged
. Вам не нужно хранить этот файл в вашей VCS . Если вы хотите использовать этот vimrc на другой машине, просто позвоните:PlugInstall
на эту машину.чтобы удалить плагин, удалите его из файла vimrc и запустите:
Обратите внимание, что vim-plug не поддерживает установку сценариев с веб-сайта сценариев Vim, но эти сценарии отражаются на GitHub , поэтому в этом нет необходимости.
Есть также некоторые дополнительные преимущества, такие как более простое обновление плагина и загрузка по требованию для повышения производительности. Вы также не рискуете нарушить условия лицензии плагинов, которые вы распространяете вместе с вашими файлами vimrc.
Смотрите также:
источник
Я храню свой vimrc в github и плагины как подмодули моего хранилища.
В файле readme.md я поместил один вкладыш, который извлекает хранилище, затем запускает сценарий установки, таким образом я могу скопировать одну строку в редактор, и он все настраивает. Это немного больше, чем просто vim (но не так много).
https://github.com/Loki-Astari/UnixConfig
Чтобы использовать это:
PS. Готов принять любой совет (как я делал это давным-давно и с тех пор не трогал его).
Примечание: моя любимая часть в том, что он также настраивает git и настраивает его на использование vim в качестве инструмента сравнения для git. Vimdiff - лучший инструмент сравнения.
источник
Если вы хотите придерживаться Pathogen, одним из способов может быть использование подмодулей Git . Когда вы добавляете подмодуль, git распознает его как из другого репозитория и оставляет его содержимое в покое (если только он не был изменен, в этом случае он будет отображаться как имеющий неотслеживаемый контент, когда вы это сделаете
git status
). Если вы используете все свои плагины на основе Githubbundle/
, то добавление их в виде подмодулей - довольно простая задача с хорошей оболочкой:Вы можете посмотреть, как субмодули отображаются в моем репозитории vimrc .
Если вы добавляете файл в подмодуль или вносите какие-либо изменения, которые не влияют на репозиторий,
git status
он все равно будет жаловаться на то, что в подмодуле имеются незафиксированные изменения или файлы без отслеживания. Вы можете заставить git игнорировать такие изменения, добавивignore = dirty
конфигурацию субмодуля в.gitmodules
файл. Например:Одно из преимуществ подмодулей заключается в том, что ревизия подмодуля добавляется в репозиторий git, так что
git init
автоматически выполняет проверку этой конкретной ревизии. Вы можете выбросить это и сказать git игнорировать подмодули, как только вы добавите их, добавивignore = all
их в конфигурацию.gitmodules
файла. Например:Наконец, одна команда, чтобы обновить их всех!
Слово предостережения: я новичок в подмодулях. Я не совсем уверен, как они себя ведут.
источник
Вы можете просто добавить эту строку в свой,
.gitignore
чтобы игнорировать все ваши плагины и не фиксировать их:Кроме того, вы сказали, что проблематично, что он будет включать в себя код плагина, потому что это уже репозитории на github. Я предполагаю, что вы имеете в виду, что вы не хотите дублировать код, но я слышал, что вы должны идти вперед и дублировать код, который является зависимостью, чтобы вы всегда могли вернуться к определенной точке в вашем коде и знать, что это будет работать. Вот некоторые статьи Джеймса Шора, в которых об этом говорится: http://www.letscodejavascript.com/v3/blog/2014/12/the_reliable_build , http://www.letscodejavascript.com/v3/blog/2014/03/ the_npm_debacle . Он говорит о программном коде и npm (в отличие от vim), но я думаю, что аргумент все еще применим, вы хотите надежную среду для кодирования или записи.
источник