GuideFebruary 10, 20266 min read

How to Sync VS Code Settings, Extensions, and Keybindings Across Machines

VS Code's built-in Settings Sync handles the editor. But what about SSH config, terminal settings, git config, and everything else? Here's the complete solution.

The Problem: VS Code Is Synced, Everything Else Isn't

VS Code has had built-in Settings Sync since 2020. Sign in with your Microsoft or GitHub account, and your settings follow you across machines. It works well for what it does.

But here is the frustration: you sit down at a new machine, open VS Code, and everything looks perfect. Your theme, your extensions, your keybindings are all there. Then you open the integrated terminal and nothing is right. Your shell aliases are gone. Your git is unconfigured. Your SSH keys do not exist. Your .env files for local projects are missing.

VS Code Settings Sync solves one piece of the puzzle. Your development environment is the entire puzzle.

What VS Code Settings Sync Covers

To its credit, VS Code Settings Sync handles the editor side well. It syncs:

  • settings.json — your editor preferences, theme, font size, formatting rules
  • keybindings.json — custom keyboard shortcuts
  • Installed extensions and their enabled/disabled state
  • Code snippets
  • UI state like panel positions and open editors

For developers who only use VS Code and nothing else, this might be enough. But most developers live in the terminal as much as the editor.

What It Doesn't Cover

Here is everything VS Code Settings Sync leaves out:

SSH configuration. Your ~/.ssh/config with host aliases, jump hosts, and custom ports. Your SSH keys themselves. There is an open VS Code feature request (#249438) asking for SSH config sync, and it is still unresolved.

Terminal emulator configuration. iTerm2 profiles, Alacritty config, Windows Terminal settings, Warp themes. The integrated terminal in VS Code inherits from your system shell, but none of that shell configuration is synced by VS Code.

Git configuration. Your ~/.gitconfig with aliases, default branch names, signing keys, diff tools, and merge strategies.

Shell configuration. Your ~/.zshrc or ~/.bashrcwith aliases, functions, PATH modifications, prompt customization, and plugin manager setup (oh-my-zsh, zinit, etc.).

Other IDE settings. If you use JetBrains IDEs, Neovim, Cursor, or Zed alongside VS Code, their configurations are completely separate.

Environment variables. Project-specific .env and .env.local files that are gitignored but essential for running your applications locally.

The ConfigSync Approach: Sync Everything Together

ConfigSync treats your entire development environment as a single unit. VS Code settings are one module alongside SSH, git, shell, and everything else.

Add VS Code as a module
configsync add module vscode

This single command detects and tracks your VS Code configuration files. Depending on your platform, it picks up:

Tracked VS Code paths
# macOS ~/Library/Application Support/Code/User/settings.json ~/Library/Application Support/Code/User/keybindings.json ~/Library/Application Support/Code/User/snippets/ # Linux ~/.config/Code/User/settings.json ~/.config/Code/User/keybindings.json ~/.config/Code/User/snippets/ # Windows %APPDATA%/Code/User/settings.json %APPDATA%/Code/User/keybindings.json %APPDATA%/Code/User/snippets/

ConfigSync also captures your installed extension list. On restore, extensions are reinstalled automatically:

Extension restore
# Extensions captured during push code --list-extensions > extensions.txt # Restored during pull code --install-extension esbenp.prettier-vscode code --install-extension ms-python.python code --install-extension bradlc.vscode-tailwindcss # ... all extensions restored automatically

Now add everything else that VS Code Settings Sync misses:

Add the rest of your environment
# SSH keys and config configsync add module ssh # Git configuration configsync add module git # Shell (zsh, bash, or fish) configsync add module zsh # Project .env files configsync add project ~/git/webapp configsync add project ~/git/api

Push once, and your entire environment, VS Code included, is encrypted and stored:

Push everything
configsync push -m "complete env backup"

On a new machine, one pull restores it all:

Restore on new machine
configsync pull --install
Key difference: VS Code Settings Sync gives you your editor. ConfigSync gives you your entire development environment, including your editor.

Using Both Together

You do not have to choose one or the other. Many developers use both:

VS Code Settings Sync for real-time, automatic syncing of editor settings as you change them. It is seamless and requires zero thought once enabled. It also handles Microsoft account-specific features like profile sync.

ConfigSync for everything outside VS Code: SSH, git, shell, env files, packages, and as a backup layer for VS Code settings themselves. If you ever need to restore to a specific point in time, ConfigSync’s snapshot history has you covered.

The two tools do not conflict. VS Code Settings Sync operates through Microsoft’s cloud service. ConfigSync reads your local files. They can coexist without any configuration.

Bonus: Cursor IDE

If you use Cursor (the AI-powered fork of VS Code), it does not have built-in settings sync at all. ConfigSync fills that gap completely:

Sync Cursor IDE
# Track Cursor settings (same structure as VS Code) configsync add module cursor # Cursor paths tracked automatically: # macOS: ~/Library/Application Support/Cursor/User/ # Linux: ~/.config/Cursor/User/ # Windows: %APPDATA%/Cursor/User/

The same approach works for any editor or tool that stores configuration in files. ConfigSync is not limited to a predefined list of applications; you can add any directory or file as a custom module.

Getting Started

Setting up VS Code sync with ConfigSync takes under two minutes:

Quick setup
# Install ConfigSync npm install -g @configsync/cli # Initialize configsync init # Add VS Code and your other tools configsync add module vscode configsync add module ssh configsync add module git configsync add module zsh # Push to cloud configsync push -m "initial setup" # Optional: auto-sync on changes configsync watch

From now on, every change to your VS Code settings, shell config, git aliases, and SSH setup is captured and available on any machine with a single configsync pull.

Ready to try ConfigSync?

Sync your entire dev environment across machines in minutes. Free forever for up to 3 devices.