我希望将Vim和Emacs配置保留在版本控制之下,但我不想要我的整个主文件夹(或者更确切地说,我这样做,但应该有3个单独的存储库)。使用Emacs很容易;如果~/.emacs
不存在,则~/.emacs.d/init.el
用作init文件。所以我可以在~/.emacs.d/
中有一个单独的Git仓库。使用Vim,似乎.vimrc
只能 存在于主文件夹中,而不是~/vimfiles
(相当于~/.emacs.d
)。 this是将.vimrc
置于版本控制之下的最佳方式吗?
答案 0 :(得分:7)
只需将一个虚拟的.vimrc放在〜中,只需一行:
source ~/path/to/real/vimrc
像魅力一样工作
答案 1 :(得分:6)
将.vimrc
移至~/.vim/
并将符号链接移至主页可能会有效吗?
其他更模块化的方法是将您的启动脚本移动到~/.vim/plugins/
,也许在那里创建一个子目录,以及单个或多个init脚本:Vim在启动时会执行:runtime! plugin/**/*.vim
。
答案 2 :(得分:3)
正如@Progo在答案中建议的那样,~/.vimrc
设置可以移动到~/.vim/plugin/00rc.vim
等文件中的“插件”脚本中。
沿着这条路走下去时要记住几件事:
用户和插件都希望~/.vimrc
中的设置在:help startup
中所述的插件之前加载。 ~/.vim
通常位于'runtimepath'中,但如果用户在~/.vim/plugin
中有其他插件,.vimrc
替换必须首先按字典顺序排列,以确保首先加载,~/.vim/plugin/00rc.vim
}。
当vim启动过程从步骤3执行'执行Ex命令'(其中.vimrc
将被读取;再次,请参阅:help startup
)到步骤4'加载插件脚本',它运行:runtime! plugin/**/*.vim
。此命令查看“runtimepath”以将文件与源匹配,然后开始获取它们。这意味着如果~/.vim/plugin/00rc.vim
中的某些内容修改了'runtimepath',那么影响哪些插件运行就太晚了。这种情况最常见于pathogen,在这种情况下,可以通过将以下行添加到~/.vim/plugin/00rc.vim
的末尾来解决此问题:
" Since this "vimrc" is really run as a plugin, vim has already compiled the
" list of paths/plugins that it wil execute at startup.
" As a result, the pathogen plugins must be run manually.
runtime! bundle/*/plugin/**/*.vim
runtime! bundle/*/after/plugin/**/*.vim
最后,(再次如:help startup
中所述),如果~/.vimrc
文件不存在,vim将搜索其他文件,例如~/.exrc
,因此可能需要删除它们如果他们的内容是不需要的。
答案 3 :(得分:2)
向流程添加一个步骤,但我的vim设置中只有一个bash脚本deploy.sh。
#!/bin/bash
if [ -f ~/.vimrc ] && [ ! -L ~/.vimrc ]
then
echo "Backing up existing ~/.vimrc to ~/.vimrc.bak"
mv ~/.vimrc ~/.vimrc.bak
fi
if [ -L ~/.vimrc ]
then
echo "Already have ~/.vimrc symlink, we're good"
else
echo "Creating symlink ~/.vimrc, which points to ~/.vim/vimrc"
ln -s ~/.vim/vimrc ~/.vimrc
fi
git submodule init
git submodule update
答案 4 :(得分:1)
您可以在版本控制中保留备份,并在需要时将其部署(即移动)到您的主目录。你可以编写一个简单的脚本来管理所有这些处理,所以至少透明地来回移动它似乎不是很烦人的工作。