将.vim~ / .vimrc添加到github(又名点文件)

时间:2013-08-12 22:28:11

标签: git vim dotfiles

我见过一些人使用他们的点文件进行git repos。我想知道他们是否只是

cd ~/
git init
git add .vimrc
// etc

?那么他们是如何让它保持最新的?或者他们可能会复制并同步它们吗?

你们推荐或使用什么策略?大多数情况下不想承诺并推动我的整个〜/

由于

5 个答案:

答案 0 :(得分:71)

制作一个家庭的git存储库可能是一个坏主意(你将花费更多的时间来创建.gitignore文件而不是做你真正想做的事情。)

我建议为你的dotfiles使用一个单独的git目录(例如。~/git/dotfiles),并为你的家创建符号链接(例如。ln -s ~/git/dotfiles/.vim ~/.vim等)。

如果您不想在每次要在某处安装dotfiles时手动创建符号链接,您可以使用如下所示的脚本:https://github.com/gibfahn/dot/blob/master/link

答案 1 :(得分:50)

我的~/.vim目录位于版本控制之下,而我的“真实”vimrc(包含我所有设置的目录)位于该目录的~/.vim/vimrc处:

~/
---- .vim/
---- ---- (plugins and stuff)
---- ---- vimrc
---- .vimrc

我的常规~/.vimrc只有一行:

runtime vimrc

无需创建符号链接等等。

这就是我在已经安装了Git的新机器上推送配置的方法:

$ cd
$ git clone git@github.com:romainl/dotvim.git .vim
$ echo "runtime vimrc" > .vimrc

以下是整个创作过程。我假设你已经在Github上创建了一个名为“vimconfig”的帐户和一个repo,并且你已经拥有一个精心设计的~/.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知道该做什么,并且不会在无限循环中废弃。

答案 2 :(得分:3)

我已经有一个“捆绑”文件夹,我将所有插件都通过Pathogen加载。所以我把那个文件夹作为我的git文件夹(插件作为子模块)并将我的vimrc放在那里。

在我写的官方.vimrc中:

let $MYVIMRC="<path_to_vimrc_in_bundle_folder>"
source $MYVIMRC
...
call pathogen#infect()

版本吧!

这允许我在家里的Linux机器和我工作的Windows机箱之间共享我的配置。我还可以提供特定于机器的官方.vimrc配置,或者我不想公开提供的配置(例如包含登录名和密码的dbext配置文件...)

答案 3 :(得分:1)

这是一个平台无关和shell无关的解决方案,除了你可用的bourne兼容shell(bash,zsh,ksh等)之外没有其他依赖项。它适用于mac,linux和&amp;窗口:

dotsys

它将使用github和多台计算机自动同步对dotfiles的更改以及许多其他功能。

答案 4 :(得分:0)

Hacker News中查看steakcobra的解决方案:

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

如果您需要进一步解释,Nikola Paolucci提供great explanation