Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

🔀 cursor-to-vscode

Platform Shell Python License PRs Welcome

One-command migration from Cursor IDE to Visual Studio Code on macOS.

Switching back to VS Code shouldn't mean rebuilding your entire setup from scratch. This script moves everything over — settings, keybindings, snippets, and all your extensions — in under a minute.


⚡ Quick Start

bash <(curl -fsSL https://raw.githubusercontent.com/yahav10/cursor-to-vscode/main/cursor_to_vscode.sh)

That's it. The script handles the rest and prints a full summary when it's done.


✨ What Gets Migrated

Item Details
⚙️ Settings Copies settings.json and automatically strips Cursor-specific keys
⌨️ Keybindings Copies keybindings.json — fully compatible between both editors
✂️ Snippets Copies all your custom code snippet files
🧩 Extensions Reads your Cursor extension list and installs each one into VS Code
💾 Backups Any existing VS Code files are backed up as .bak before overwriting

Note: Cursor AI features (inline chat, Tab completion) are Cursor-specific and won't carry over. Consider GitHub Copilot or Continue.dev as alternatives.


🖥️ How It Works

╔══════════════════════════════════════════════════╗
║     Cursor → VS Code Migration  •  macOS         ║
╚══════════════════════════════════════════════════╝

  Checking prerequisites...
  ✔  Cursor config  →  ~/Library/Application Support/Cursor/User
  ✔  VS Code config →  ~/Library/Application Support/Code/User

  [1/4] Copying settings.json
        →  Backed up existing settings → settings.json.bak
        ✔  settings.json copied (4 Cursor-specific key(s) stripped)

  [2/4] Copying keybindings.json
        ✔  keybindings.json copied

  [3/4] Copying code snippets
        ✔  3 snippet file(s) copied

  [4/4] Re-installing extensions into VS Code
        →  Found 12 extension(s) in Cursor.

        esbenp.prettier-vscode           ✔ installed
        dbaeumer.vscode-eslint           ✔ installed
        eamodio.gitlens                  ✔ installed
        ...

╔══════════════════════════════════════════════════╗
║                   Summary                        ║
╚══════════════════════════════════════════════════╝

  Config files
    ✔ Successes    3
  Extensions
    ✔ Installed    12 / 12

  Migration complete! Open VS Code and enjoy your familiar setup.

📋 Requirements

Requirement How to check
macOS —
Cursor IDE cursor --version
Visual Studio Code code --version
Python 3 python3 --version (pre-installed on modern Macs)
Both CLIs in PATH See setup below ↓

🔧 Setup

Both editor CLIs must be registered in your terminal before running the script. This is a one-time step.

Register the Cursor CLI

  1. Open Cursor
  2. Press Cmd+Shift+P
  3. Search and run: Install 'cursor' command in PATH

Register the VS Code CLI

  1. Open VS Code
  2. Press Cmd+Shift+P
  3. Search and run: Install 'code' command in PATH

Verify both are working:

cursor --version && code --version

🚀 Usage

Option 1 — Run directly (recommended, no download needed)

bash <(curl -fsSL https://raw.githubusercontent.com/yahav10/cursor-to-vscode/main/cursor_to_vscode.sh)

Option 2 — Clone and run

git clone https://github.com/yahav10/cursor-to-vscode.git
cd cursor-to-vscode
bash cursor_to_vscode.sh

Option 3 — Download and run

curl -O https://raw.githubusercontent.com/yahav10/cursor-to-vscode/main/cursor_to_vscode.sh
bash cursor_to_vscode.sh

The script is safe to re-run. If the CLIs weren't set up the first time, fix that and run again — config files already migrated won't be duplicated.


🏗️ How the Script Works Internally

cursor_to_vscode.sh
│
├── Pre-flight checks
│   ├── Locate Cursor config  (~/.cursor/User  or  ~/Library/Application Support/Cursor/User)
│   └── Locate VS Code config (~/Library/Application Support/Code/User)
│
├── Step 1 — settings.json
│   ├── Backup existing VS Code settings → settings.json.bak
│   ├── Parse JSON with Python 3
│   ├── Strip keys prefixed with: cursor.  aipopup.  cursorprediction.
│   └── Write clean settings to VS Code
│
├── Step 2 — keybindings.json
│   ├── Backup existing keybindings → keybindings.json.bak
│   └── Copy file as-is (format is identical between editors)
│
├── Step 3 — snippets/
│   └── Copy all snippet files into VS Code snippets folder
│
├── Step 4 — Extensions
│   ├── cursor --list-extensions
│   ├── For each extension → code --install-extension <id>
│   └── Report installed / failed counts
│
└── Summary
    ├── Config file results  (✔ success / ⚠ warning / ✘ failure)
    └── Extension results    (installed / total)

🔒 Safety & Rollback

The script never deletes anything. Before overwriting any VS Code file, it creates a backup:

Backup file What it contains
settings.json.bak Your original VS Code settings
keybindings.json.bak Your original VS Code keybindings

To restore a backup:

# Restore settings
cp ~/Library/Application\ Support/Code/User/settings.json.bak \
   ~/Library/Application\ Support/Code/User/settings.json

# Restore keybindings
cp ~/Library/Application\ Support/Code/User/keybindings.json.bak \
   ~/Library/Application\ Support/Code/User/keybindings.json

❓ FAQ

My settings.json has a JSON syntax error — what happens?

The script detects the parse failure, copies the file as-is, and warns you. VS Code will still load it. Open the file in VS Code (Cmd+Shift+P → "Open User Settings (JSON)") and it will highlight the error for you to fix.

The cursor CLI wasn't found — do I need to start over?

No. Just open Cursor, run Install 'cursor' command in PATH from the Command Palette, and re-run the script. It's safe to run multiple times.

Some extensions failed to install — what do I do?

The summary will show which ones failed. Open VS Code, go to the Extensions panel (Cmd+Shift+X), and search for them by name to install manually. Extensions sometimes fail if they're been deprecated or renamed on the marketplace.

Will this affect my Cursor setup?

No. The script only reads from Cursor and writes to VS Code. Your Cursor config is never modified.

Does this work on Linux or Windows?

Not yet — the current version is macOS-only. The config paths differ on other platforms. Contributions for Linux/Windows support are welcome!

What about VS Code Profiles?

Profiles aren't migrated automatically. You can export them manually from Cursor via File → Preferences → Profiles → Export Profile and import in VS Code via the same menu.


🛠️ Troubleshooting

Problem Fix
cursor: command not found Open Cursor → Cmd+Shift+P → Install 'cursor' command in PATH
code: command not found Open VS Code → Cmd+Shift+P → Install 'code' command in PATH
Cursor config not found Launch Cursor at least once so it creates its config directory
VS Code config not found Launch VS Code at least once so it creates its config directory
Settings file not applied Check for JSON syntax errors via VS Code's built-in JSON editor
Extensions not showing up Restart VS Code after the script completes

🤝 Contributing

Contributions are welcome! If the script doesn't work for your setup, please open an issue with:

  • Your macOS version: sw_vers
  • Your Cursor version: cursor --version
  • Your VS Code version: code --version
  • The full terminal output of the script

Ideas for future improvements:

  • Linux support
  • Windows (WSL) support
  • Migrate VS Code Profiles automatically
  • Dry-run mode (--dry-run flag) to preview changes without applying them
  • Selective migration flags (e.g. --skip-extensions)

📄 License

MIT — do whatever you want with it.


Made with ☕ for developers who just want their editor to feel like home.

About

One-command migration from Cursor IDE to Visual Studio Code — settings, keybindings, snippets, and extensions.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages