I have no shell configs of any kind because it seemed like everytime I used another computer, I would not have them and I would end up having the re-learn everything.
What I do is store my dotfiles in a git repository, and leave symlinks to the files in that repository. Then, when I move to another computer, pulling over all my configuration consists of doing a git pull to pull the git repo over and then running a command to set up the symlinks on that new computer. I can also make changes and selectively push things in. Some things need to be specific to a computer, and those don't go in.
I use a homebrew script to set up the symlinks. A number of people use GNU stow for this.
kagis for an example of someone using stow
https://brandon.invergo.net/news/2012-05-26-using-gnu-stow-to-manage-your-dotfiles.html?round=two
If you edit the symlinks in emacs (and I imagine vim), it picks up on the fact that they're symlinks into a git repository and that they're version-controlled.
So, like:
-
Have a bare git repository on home machine, the "master" copy.
-
Every machine with an account has a non-bare dotfiles git repository checked out and symlinks pointing into that repo.
-
Make any changes on a given machine like you normally would, then git commit them to the local non-bare dotfiles git repo and push them to the master repository.
-
If setting up on a new machine, pull the git repository, and then run the command to set up the symlinks.___