Syncing Vim/Neovim Config Across Machines
Your Neovim config is a living document that evolves over months. Here's how to keep it perfectly in sync across every machine without manually copying files.
What to Sync
A Vim or Neovim setup typically consists of several configuration files and directories. Which ones matter depends on whether you use classic Vim, Neovim, or both:
~/.vimrc— classic Vim configuration~/.config/nvim/init.lua— Neovim entry point (Lua-based configs)~/.config/nvim/init.vim— Neovim entry point (Vimscript-based configs)~/.config/nvim/lua/— Lua modules for plugin configs, keymaps, options
Most modern Neovim setups put everything under ~/.config/nvim/. If you have migrated fully to Lua, your entire configuration lives in that directory.
Adding Vim/Neovim to ConfigSync
ConfigSync detects your editor setup and tracks the right files:
This tracks ~/.vimrc (if it exists) and the entire ~/.config/nvim/ directory. For a typical Neovim setup with lazy.nvim, that includes:
Every file in your Neovim config directory is captured. Push once and all of it is available on every machine:
Plugin Managers: Config Syncs, Plugins Install
A common concern: do you need to sync the actual plugin files? No. Plugin managers like lazy.nvim, packer, and vim-plug are designed to install plugins from a lockfile or spec. You sync the configuration, and the plugin manager handles the rest.
With lazy.nvim, the lazy-lock.json file pins exact plugin versions. ConfigSync tracks this lockfile alongside your config, so every machine gets the same plugin versions — not just the same plugin list.
Handling Platform Differences
Clipboard integration is the most common difference between macOS and Linux Neovim setups. macOS uses pbcopy/pbpaste, while Linux uses xclip or wl-copy. ConfigSync templates handle this:
You can also use templates for font settings in GUI Neovim clients (Neovide, VimR) or for paths to language servers that differ between operating systems.
Syncing .ideavimrc for JetBrains Users
Many Vim users also work in JetBrains IDEs with the IdeaVim plugin. The ~/.ideavimrc file configures Vim keybindings inside IntelliJ, PyCharm, WebStorm, and other JetBrains editors. ConfigSync has a dedicated module for this:
This tracks ~/.ideavimrc so your JetBrains Vim bindings stay in sync with your Neovim keymaps. If you maintain parity between the two, changes on one machine propagate everywhere.
The Complete Vim/Neovim Sync
Here is a typical setup for a developer who uses Neovim as their primary editor and IdeaVim in JetBrains:
From a fresh install to your fully configured editor in about a minute. Your keymaps, plugins, colorscheme, LSP configuration, and every custom option restored exactly as you left them. No copying files from a dotfiles repo and hoping nothing changed since your last manual update.
Ready to try ConfigSync?
Sync your entire dev environment across machines in minutes. Free forever for up to 3 devices.