Learn your editor's keybindings, including the ones you changed

Most code editors and terminals keep the shortcuts you changed in a settings file of their own, and the official cheat sheet only knows the defaults. To learn the keys you actually have, look at both: the editor’s built-in shortcut list for the defaults, and your own file for the changes. Then practice the few you use most until your hands know them.

Below: why printed cheat sheets stop matching, where 11 editors and terminals keep your bindings on a Mac, how to see defaults and changes side by side in each, and a way to show your real bindings on screen while you work.

Why the official cheat sheet stops matching

A downloaded PDF of default shortcuts is accurate on the day you install the editor. After that, it drifts:

  • You rebind things. Even one change, say moving the terminal toggle to a key you can reach, makes the sheet wrong for that command.
  • You remove things. Freeing a key for something else leaves the old default on paper.
  • Extensions and keymap presets add their own. A Vim mode or a keymap from another editor can change dozens of keys at once.
  • Your Macs differ. A laptop you set up last year may not match the desktop you set up last week.

So the reference that matters is the one built from your own settings.

Where each editor keeps your keybindings

Most of these files hold only your changes. The defaults live inside the app, which is why a fresh install often has no file at all until you change your first shortcut.

App Your keybindings
VS Code ~/Library/Application Support/Code/User/keybindings.json
Cursor ~/Library/Application Support/Cursor/User/keybindings.json
Windsurf ~/Library/Application Support/Windsurf/User/keybindings.json
Zed ~/.config/zed/keymap.json
JetBrains IDEs ~/Library/Application Support/JetBrains/(IDE and version)/keymaps/
Xcode ~/Library/Developer/Xcode/UserData/KeyBindings/ (.idekeybindings files)
Sublime Text ~/Library/Application Support/Sublime Text/Packages/User/Default (OSX).sublime-keymap
iTerm2 ~/Library/Preferences/com.googlecode.iterm2.plist
kitty ~/.config/kitty/kitty.conf (map lines)
Ghostty ~/.config/ghostty/config.ghostty, or config in older versions (keybind lines)
WezTerm ~/.wezterm.lua or ~/.config/wezterm/wezterm.lua (the keys table)

The ~/Library folder is hidden in Finder. In Finder, choose Go > Go to Folder (Shift-Command-G), paste the path, and press Return.

Keep copies of these files with the rest of your settings, in a dotfiles repository or a synced folder, and a new Mac gets the same keys as the old one. VS Code’s Settings Sync can carry keyboard shortcuts for you.

See defaults and changes side by side

Each editor has its own way to show the full picture:

  • VS Code. Command-K, then Command-S, opens Keyboard Shortcuts. The Source column says User for bindings you changed, and typing @source:user in the search box lists only those. In keybindings.json, a default you removed shows up as its command name with a minus sign in front. Cursor and Windsurf, both built on VS Code, have the same Keyboard Shortcuts editor; open it from the Command Palette by searching for Keyboard Shortcuts.
  • JetBrains IDEs. Settings (Command-Comma) > Keymap. When you change a built-in keymap, the IDE saves your changes as a copy, and that copy is the file in the keymaps folder. Find Action (Shift-Command-A) shows each action with its shortcut.
  • Xcode. Xcode > Settings (Command-Comma), then Key Bindings. Its search field filters by command, and your changes are saved to an .idekeybindings file.
  • Zed. In the command palette (Shift-Command-P), “zed: open keymap” opens the Keymap Editor in current versions, “zed: open keymap file” opens your keymap.json, and “zed: open default keymap” shows the defaults.
  • Sublime Text. The Key Bindings item in its settings opens your file beside the default bindings.
  • Terminals. iTerm2 lists its bindings in Settings, under Keys, and each profile can add its own. Ghostty prints every binding with ghostty +list-keybinds, and WezTerm with wezterm show-keys. kitty’s documentation lists its defaults next to the map syntax.

A habit that works in any editor with a command palette: when you open it for a command you run often, read the shortcut printed beside it, press Escape, and press the keys instead. VS Code, Zed and JetBrains all show the shortcut next to each command, so the palette teaches you as you use it.

Learn the ones you use, in the order you use them

You do not need every binding. You need the dozen you use every hour:

  1. Watch yourself for a day. Note each time you reach for the mouse or the palette for something that has keys.
  2. Pick three. Go to file, go to symbol and toggle terminal are common first picks.
  3. Practice them on purpose. Guess the keys before you check them. Recall, not reading, is what makes them stick.
  4. Rebind only with a reason. A change that matches another editor you use, or moves a key to where your hand already is, is worth it. A change for its own sake is one more thing to remember.

If you work in more than one editor, try to give the same job the same keys everywhere. Before you rebind, check that the key is free; Which keys does an app leave free? explains how. For the defaults worth learning first, see VS Code on a Mac and Xcode keyboard shortcuts worth learning first.

Show your own bindings on screen

Typebar reads your own keybindings from the settings files of 11 apps: VS Code, Cursor, Windsurf, Zed, JetBrains IDEs, Xcode, Sublime Text, iTerm2, kitty, Ghostty and WezTerm. Hold a modifier such as Command for a moment and the keys on its on-screen keyboard relabel with what they do in the app in front, so the cheatsheet can reflect the keys you set, not only the defaults.

A few other parts help with editors in particular:

  • Hand-made packs for VS Code, Xcode and Terminal cover shortcuts that menus leave out.
  • The Cheatsheet List is searchable. Type a command, pick it, and its keys light up on the board, or see which keys the editor leaves free before you rebind one.
  • Edit and export. Rename, hide or add shortcuts on any sheet, and export it as a PNG or PDF. Make a printable cheat sheet of any Mac app’s shortcuts covers the printing side.

When you record or share your screen, Typebar’s keystroke pill shows each shortcut as you press it, named from the editor’s menus when the command has a menu item, so viewers can follow along too.

Questions

Where does VS Code keep keybindings on a Mac?

In ~/Library/Application Support/Code/User/keybindings.json. It holds only your changes, and it may not exist until you change your first shortcut.

Do Cursor and Windsurf share VS Code’s keybindings?

No. Each keeps its own keybindings.json in its own folder under ~/Library/Application Support, so a change in one does not reach the others unless you copy the file.

Can Typebar show my Vim or Neovim mappings?

Its own-keybindings support covers the 11 apps listed above. For other editors, its cheatsheets come from the app’s menus, and you can add shortcuts to any sheet by hand. Typebar is $9 once, with a 24-hour free trial.