editor-profile-sync
v1.0.7
Published
Cross-platform extensions, settings.json, keybindings, and snippets sync for VS Code-based editors
Maintainers
Readme
editor-profile-sync
Cross-platform CLI to share your VS Code-based editor profile between editors.
You can sync:
- extensions
- snippets
settings.jsonkeybindings.json
Requirements
- Node.js 18 or newer
- npm (comes with Node.js)
- At least one supported editor installed
- macOS: Choose one of the following options:
- Option 1 (Recommended): Install terminal command:
- Open your editor
- Press
Cmd + Shift + Pto open the Command Palette - Type:
shell command - Select: Shell Command: Install '[command]' command in PATH
- Restart your terminal
- Option 2: Have the editor installed in
/Applications/(e.g.,/Applications/Visual Studio Code.app). The CLI will be auto-detected from the app bundle.
- Option 1 (Recommended): Install terminal command:
- Windows/Linux: Editor CLI must be on your PATH (e.g.,
code,cursor)
- macOS: Choose one of the following options:
Install
Via npx (recommended)
Run directly without installing:
npx editor-profile-syncGlobal install
Install once, then run from anywhere:
npm install -g editor-profile-sync
editor-profile-syncFrom source
Clone this repo, then install dependencies:
npm installUsage
CLI options
| Option | Description |
| ----------------- | ------------------- |
| -h, --help | Show help message |
| -v, --version | Show version number |
How it works
- Detect installed editors (only editors with CLI on PATH are shown).
- Choose a source editor.
- Choose what to share:
ExtensionsSnippetssettings.jsonkeybindings.json
- Choose mode(s) for selected item types:
- Extensions:
- Install on top of existing (additive)
- Exact sync (replace all extensions)
- Snippets:
- Merge (source snippets override key conflicts in matching snippet files)
- Replace (target snippets folder is replaced)
- Extensions:
- Choose one or more target editors.
- Run sync.
Settings merge behavior
For settings.json, each target is merged as:
const merged = {
...targetSettings,
...sourceSettings,
};What this means:
- Shared/source settings win on key conflicts.
- Existing unrelated target settings stay.
- Editor-specific keys are preserved unless your source uses the same key.
Example:
Target:
{
"terminal.integrated.fontSize": 14
}Source:
{
"editor.formatOnSave": true
}Result:
{
"terminal.integrated.fontSize": 14,
"editor.formatOnSave": true
}Keybindings merge behavior
For keybindings.json, keybindings are merged intelligently:
- Source keybindings override target ones with the same
key+commandcombination - Existing target keybindings that don't conflict are preserved
- New source keybindings are added to the target
Example:
Target:
[{ "key": "ctrl+k", "command": "workbench.action.terminal.clear" }]Source:
[
{
"key": "ctrl+k",
"command": "workbench.action.terminal.clear",
"when": "terminalFocus"
},
{ "key": "ctrl+shift+p", "command": "workbench.action.showCommands" }
]Result:
[
{
"key": "ctrl+k",
"command": "workbench.action.terminal.clear",
"when": "terminalFocus"
},
{ "key": "ctrl+shift+p", "command": "workbench.action.showCommands" }
]Supported editors
These editors are currently supported:
| Editor | CLI command |
| ----------- | ------------- |
| Antigravity | antigravity |
| Cursor | cursor |
| Kiro | kiro |
| Trae | trae |
| VS Code | code |
| Windsurf | windsurf |
macOS: Editors work with either option: install terminal command (recommended) or auto-detect from /Applications/ if installed as .app bundles.
Windows/Linux: Each editor must be installed and its CLI available in your terminal (e.g. code, cursor).
License
MIT
