Synchronizing vim 8 config and plugins with git submodule
A vim user may change the config or plugins every day, and I was no exception. My current configuration is completely different from the first day I use vim. Because my current config takes me so much time and effort to achieve, it’s wise to keep it safe.
In this post, I’m using git and git submodule to store my vim config.
Assume that we have an empty
.vim folder and a
.vimrc at our home directory.
Prepare for synchronizing
First, move your
.vimrc file to
mv ~/.vimrc ~/.vim/vimrc
Create a symbolic link which points to
ln -s ~/.vim/vimrc ~/.vimrc
.vim folder as a git repository:
cd ~/.vim git init git add . git commit -m "Initial commit"
Vim 8 introduced a native way to load third-party packages. We will use this new method and git submodule to install our plugins.
For example, we’re going to install deoplete, an asynchronous completion plugin. Instead of downloading or cloning the repository, we use git submodule.
cd ~/.vim git submodule add https://github.com/Shougo/deoplete.nvim pack/username/start/deoplete.nvim
You can replace
username to your username of choice.
After installing all the plugins we need, we will commit it to our remote repository to keep everything safe.
Install our Vim 8 config on a new machine
Follow these step to synchronize our vim config to another machine:
cd ~ git clone http://github.com/username/dotvim.git ~/.vim ln -s ~/.vim/vimrc ~/.vimrc cd ~/.vim git submodule update --init
Update all plugins
It’s boring to go to every plugin folder and pull the newest changes. We can update all plugins by a single command:
git submodule foreach git pull origin master git add . git commit -m "update submodules"