English | 简体中文
vscode-syncing
is a VS Code extension for synchronizing your settings, extensions, themes, and code snippets across multiple devices. It is especially useful for remote development scenarios (such as code-server).
- Complete Configuration Sync: Sync the following to local or remote servers:
- User settings (
settings.json
) - Keybindings (
keybindings.json
) - Code snippets
- Extensions list with version control
- Themes and color schemes
- User settings (
- Advanced Extension Management:
- Dual installation strategy (manual + API fallback)
- Automatic extension auto-update disabling
- Smart version comparison and conflict resolution
- Support for disabled/unavailable extensions (experimental)
- Flexible Export Options:
- Local file system export
- GitHub Gist integration
- GitHub repository integration
- Intelligent Extension Filtering:
- User-configurable ignore patterns with regex support
- Automatic current extension exclusion
- Smart duplicate detection and logging optimization
- Multi-Environment Support:
- Full support for Remote-SSH development environments
- Automatic environment detection for different VSCode editions
- Cross-platform compatibility (Windows, macOS, Linux)
code --install-extension vscode-syncing
Or search for "vscode-syncing" in the VS Code marketplace.
- Configure Export Method: Choose your preferred sync method in settings
- Set Up Credentials: Configure GitHub token for Gist/Repository sync (if needed)
- Export Configuration: Use
Ctrl+Shift+P
→ "Export All Configurations" - Import on Other Devices: Use
Ctrl+Shift+P
→ "Import All Configurations"
Setting | Description | Default |
---|---|---|
vscode-syncing.exportMethod |
Export method: local, gist, or repository | local |
vscode-syncing.localPath |
Local export path | "" |
vscode-syncing.githubToken |
GitHub access token | "" |
vscode-syncing.gistId |
GitHub Gist ID | "" |
vscode-syncing.repositoryName |
GitHub repository name (owner/repo) | "" |
vscode-syncing.repositoryBranch |
GitHub repository branch | main |
Setting | Description | Default |
---|---|---|
vscode-syncing.syncDisabledExtensions |
Experimental: Sync disabled/unavailable extensions | false |
vscode-syncing.ignoredExtensions |
Extensions to ignore during sync (supports regex) | [] |
The ignoredExtensions
setting supports both exact matches and regular expressions:
{
"vscode-syncing.ignoredExtensions": [
"ms-vscode.*", // Ignore all Microsoft extensions
".*\\.theme", // Ignore all theme extensions
"github.copilot", // Ignore specific extension
".*debug.*", // Ignore extensions containing "debug"
"specific-extension-id" // Exact match
]
}
Features:
- 🔍 Regex Support: Use regular expressions for flexible pattern matching
- 🛡️ Auto Protection: Current extension is automatically ignored
- 📝 Flexible Configuration: Mix exact matches and regex patterns
- 🚫 Case Insensitive: All matching is case-insensitive
⚠️ Error Tolerant: Invalid regex patterns fall back to exact matching
Access these commands via Ctrl+Shift+P
(or Cmd+Shift+P
on macOS):
Import All Configurations
- Import all settings, extensions, themes, and snippetsImport Extensions List
- Import only extensionsImport Settings
- Import only user settingsImport Themes
- Import only themes and color schemesImport Snippets
- Import only code snippets
Export All Configurations
- Export all configurationsExport Extensions List
- Export only extensionsExport Settings
- Export only user settingsExport Themes
- Export only themes and color schemesExport Snippets
- Export only code snippets
Configure Export Options
- Set up export method and credentials
This extension automatically detects and supports the following VSCode editions:
- Visual Studio Code (Standard)
- Visual Studio Code Insiders
- Visual Studio Code Exploration
- VSCodium (Open Source)
- VSCodium Insiders
- Code - OSS
- code-server (Remote development)
- Remote-SSH (Remote development via SSH)
When using Remote-SSH for development, the extension automatically detects the remote environment and uses the correct paths:
- Data Directory:
~/.vscode-server/data
- Extensions Directory:
~/.vscode-server/extensions
- User Settings:
~/.vscode-server/data/User/settings.json
The extension will automatically adapt to the remote server's file system and sync your configurations accordingly.
Dual Installation Strategy:
- Primary: Download and install specific extension versions manually
- Fallback: Use VSCode API to install latest version if manual installation fails
Auto-Update Protection:
- Automatically adds installed extensions to VSCode's auto-update ignore list
- Prevents unwanted version changes after sync
- Maintains version consistency across devices
Smart Conflict Resolution:
- Compares local vs remote extension versions
- Prompts user for version update decisions
- Handles version mismatches intelligently
Disabled Extensions Sync (syncDisabledExtensions
):
- Detects extensions from
extensions.json
that are not active in VSCode API - Attempts to install and maintain disabled state
- Useful for complete environment replication
Benefits:
- Complete extension environment sync
- Maintains disabled extension states
- Recovers from extension installation issues
Considerations:
- May increase sync time
- Experimental feature, use with caution
- Best for users who need complete environment consistency
- Extension state changes (enable/disable) require manual intervention after import
- In code-server environments, you may need to specify the user directory manually
- Experimental disabled extensions sync may have compatibility issues with some extensions
Enjoy using vscode-syncing
and keep your dev environment consistent!