Добавление вашего .vim ~/.vimrc в github (aka dot files)
Я видел несколько человек, у которых есть git repos с их точечными файлами. Мне интересно, просто ли они
cd ~/
git init
git add .vimrc
// etc
? А потом, как они постоянно обновляются? Или они, вероятно, делают копии и синхронизируют их?
Какую стратегию вы рекомендуете или используете? В основном не хочу совершать и нажимать весь мой ~/
Спасибо
Ответы
Ответ 1
Создание git-репозитория для вашего дома, вероятно, плохая идея (вы бы потратили больше времени на создание файла .gitignore, чем на то, что вы действительно хотите сделать).
Я предлагаю использовать отдельный каталог git для ваших точечных файлов (например, ~/git/dotfiles
) и делать из них символические ссылки на ваш дом (например, ln -s ~/git/dotfiles/.vim ~/.vim
и т.д.).
Если вас не беспокоит создание символических ссылок вручную каждый раз, когда вы хотите где-то установить свои файлы точек, вы можете использовать скрипт, подобный следующему: https://github.com/gibfahn/dot/blob/master/link.
Ответ 2
У меня есть каталог ~/.vim
под управлением версии и мой "реальный" vimrc
(тот, у кого все мои настройки) внутри этого каталога, ~/.vim/vimrc
:
~/
---- .vim/
---- ---- (plugins and stuff)
---- ---- vimrc
---- .vimrc
У моего регулярного ~/.vimrc
есть только одна строка:
runtime vimrc
Не нужно создавать символические ссылки или что-то еще.
Вот как я бы нажал мою конфигурацию на новом компьютере, где Git уже установлен:
$ cd
$ git clone [email protected]:romainl/dotvim.git .vim
$ echo "runtime vimrc" > .vimrc
Далее следует весь процесс создания. Я предполагаю, что вы создали учетную запись и репо с именем vimconfig на Github и что у вас уже есть любовно созданный ~/.vimrc
и хорошо организованный ~/.vim/
.
$ cd
$ mv .vimrc .vim/vimrc
$ echo "runtime vimrc" > .vimrc
$ cd .vim
$ git init
$ echo "This is my Vim config." > README
$ git add *
$ git commit -m "My Vim config is versioned."
$ git remote add origin https://github.com/username/vimconfig.git
$ git push origin master
В этот момент у вас должен быть тот же контент в Github и в вашем локальном репозитории.
Обычно вы управляете этим репозиторием и нажимаете свои фиксации, когда будете готовы. Простой.
Обратите внимание, что вся работа Github полезна только тогда, когда вам нужно/нужно синхронизировать вашу конфигурацию на нескольких компьютерах или как-то нужно/хотеть поделиться ею с другими. Если вы этого не сделаете, в GitHub нет реальной точки.
(редактировать)
Vim 7.4 представил новую, очень полезную схему: он ищет обычный ~/.vimrc
, а также для ~/.vim/vimrc
, чтобы еще меньше работать для вас:
$ cd .vim
$ git init
$ echo "This is my Vim config." > README
$ git add *
$ git commit -m "My Vim config is versioned."
$ git remote add origin https://github.com/username/vimconfig.git
$ git push origin master
Конечно, предложенная мной стратегия по-прежнему остается в силе, если вам приходится иметь дело со смешанными версиями Vim: Vim знает, что делать и не будет дерьмовать в бесконечном цикле.
Ответ 3
У меня уже есть папка "bundle", в которую я загружаю все мои плагины через Pathogen. Поэтому я создал эту папку в моей папке git (с плагинами как подмодули) и разместил там vimrc.
В официальном .vimrc
пишу:
let $MYVIMRC="<path_to_vimrc_in_bundle_folder>"
source $MYVIMRC
...
call pathogen#infect()
и я не версия it!
Это позволяет мне делиться моей конфигурацией между моей машиной Linux дома и моей операционной системой Windows. Я также могу указать официальные конфигурации .vimrc
, специфичные для машины, или те, которые я не хочу публиковать (например, dbext профили, содержащие логины и пароли...)
Ответ 4
Вот агностическое и агностическое решение платформы без каких-либо зависимостей, кроме того, у вас есть совместимая с bourne оболочка (bash, zsh, ksh и т.д.). Он работает на mac, linux и windows:
dotsys
Он автоматически синхронизирует изменения ваших dotfiles с github и несколькими машинами вместе со многими другими функциями.
Ответ 5
Ознакомьтесь с решением StreakyCobra в Hacker News:
git init --bare $HOME/.myconf
alias config='/usr/bin/git --git-dir=$HOME/.myconf/ --work-tree=$HOME'
config config status.showUntrackedFiles no
где ~/.myconf
- это местоположение пустого хранилища git. Тогда любые файлы в $HOME
могут быть версионированы следующим образом:
config status
config add .vimrc
config commit -m "Add vimrc"
config add .config/redshift.conf
config commit -m "Add redshift config"
config push
Если вам нужны дальнейшие объяснения, Никола Паолуччи предоставил отличное объяснение.