Sync your keyboard shortcuts across all your code editors.
OneKeymap CLI is a powerful command-line tool that lets you import, export, and synchronize keyboard shortcuts between VSCode, IntelliJ IDEA, Zed, Xcode, Helix, and more. Stop reconfiguring keybindings every time you switch editorsβmaintain one universal keymap and deploy it everywhere.
- Homebrew
brew tap xinnjie/onekeymap brew install onekeymap-cli
- Debian/Ubuntu (.deb)
wget https://github.com/xinnjie/onekeymap-cli/releases/download/v0.7.1/onekeymap-cli_0.7.1_x86_64.deb sudo dpkg -i onekeymap-cli_0.7.1_x86_64.deb
- Fedora/RHEL/CentOS (.rpm)
wget https://github.com/xinnjie/onekeymap-cli/releases/download/v0.7.1/onekeymap-cli_0.7.1_x86_64.rpm sudo rpm -i onekeymap-cli_0.7.1_x86_64.rpm
- Alpine (.apk)
wget https://github.com/xinnjie/onekeymap-cli/releases/download/v0.7.1/onekeymap-cli_0.7.1_x86_64.apk sudo apk add --allow-untrusted onekeymap-cli_0.7.1_x86_64.apk
-
Scoop
scoop bucket add xinnjie https://github.com/xinnjie/scoop-bucket scoop install onekeymap-cli
-
Winget
winget install xinnjie.onekeymap-cli -
Zip Archive Download
onekeymap-cli_Windows_<arch>.zipfrom GitHub Releases, extract it, and add the directory to your PATH, or run:Expand-Archive -Path .\onekeymap-cli_*.zip -DestinationPath "$Env:USERPROFILE\onekeymap-cli" setx PATH "$Env:USERPROFILE\onekeymap-cli;$Env:PATH"
-
Go Install
go install github.com/xinnjie/onekeymap-cli/cmd/onekeymap-cli@latest
-
From Release: Download the latest binary from GitHub Releases.
Import from editors interactively:
onekeymap-cli importExport to editors interactively:
onekeymap-cli exportThe following commands help you get the most from the OneKeymap CLI:
onekeymap-cli helpQuick summary of all subcommands and available flags.onekeymap-cli importConvert editor-specific shortcuts into the universalonekeymap.jsonformat.onekeymap-cli exportGenerate editor keymap files from your universal keymap.onekeymap-cli migrateChainimportandexportin one step to move between editors.onekeymap-cli viewInspect the actions and bindings stored in an existing universal keymap.
You can append -h or --help to any subcommand for detailed flag descriptions and examples.
Configuration
OneKeymap can be configured via a config file at ~/.config/onekeymap/config.yaml:
# Default path for universal keymap
onekeymap: ~/.config/onekeymap/keymap.json
# Editor-specific config paths (optional, auto-detected by default)
editors:
vscode:
keymap_path: ~/Library/Application Support/Code/User/keybindings.json
zed:
keymap_path: ~/.config/zed/keymap.json
intellij:
keymap_path: ~/Library/Application Support/JetBrains/IntelliJIdea2024.1/keymaps/custom.xml| Editor | Import | Export | Notes |
|---|---|---|---|
| VSCode | β | β | |
| Zed | β | β | |
| IntelliJ IDEA | β | β | |
| Xcode(experimental) | β | β | shortcut coverage is still limited (see Action Support Matrix) |
| Helix(experimental) | β | β | TOML configuration support; shortcut coverage is still limited (see Action Support Matrix) |
| Vim/Neovim | π§ | π§ | Planned |
See all supported actions: action-support-matrix.md
Contributions are welcome! Check out the Contributing Guide for more details on how to get started. Here are some ways you can help:
- Add Editor Support: Implement a new editor plugin
- Improve Mappings: Enhance the action mapping configuration
- Report Bugs: Open an issue with reproduction steps
- Documentation: Improve docs and examples
For development setup and building from source, see the Development section in CONTRIBUTING.md.
How It Works
OneKeymap uses a universal keymap format that represents keyboard shortcuts in an editor-agnostic way. Here's the workflow:
βββββββββββββββ
β VSCode ββββ
β Keybindingsβ β
βββββββββββββββ β
β Import
βββββββββββββββ β β
β IntelliJ ββββΌβββββββββββββββ
β Keymap β β β
βββββββββββββββ β βββββββββββΌβββββββββββ
β β Universal Keymap β
βββββββββββββββ β β (onekeymap.json) β
β Zed ββββ βββββββββββ¬βββββββββββ
β Keymap β β
βββββββββββββββ Export β
βββββββββββββββββββββββββ
β Any Supported Editor β
βββββββββββββββββββββββββ
Your keymap is stored in a clean, human-readable JSON format:
{
"keymaps": [
{
"action": "actions.edit.copy",
"keys": "ctrl+c"
},
{
"action": "actions.view.showCommandPalette",
"keys": "ctrl+shift+p"
},
{
"action": "actions.editor.quickFix",
"keys": "ctrl+."
}
]
}OneKeymap maintains a comprehensive mapping that translates between editor-specific commands and universal actions. For example:
actions.edit.copymaps to:- VSCode:
editor.action.clipboardCopyAction - IntelliJ:
$Copy - Zed:
editor::Copy
- VSCode:
This mapping layer handles context-specific behaviors, stateful toggles, and editor quirks automatically.
Prefer a polished interface? Take a look at OneKeymap.appβa paid GUI companion built on top of the CLI. onekeymap-cli will always remain free and open; the app is simply an optional bonus for those who enjoy visual workflows.



