{"id":32755000,"url":"https://github.com/xinnjie/onekeymap-cli","last_synced_at":"2025-11-04T01:03:56.281Z","repository":{"id":318121950,"uuid":"1069174857","full_name":"xinnjie/onekeymap-cli","owner":"xinnjie","description":"A command-line tool that help you sync keyboard shortcuts across all your code editors.","archived":false,"fork":false,"pushed_at":"2025-10-30T11:06:24.000Z","size":808,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-30T11:44:57.361Z","etag":null,"topics":["export","go","helix","hotkeys","import","intellij","keybinding","keybindings","keyboard-shortcuts","keymap","migration","shortcuts","vscode","zed"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xinnjie.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-03T14:14:48.000Z","updated_at":"2025-10-30T09:56:42.000Z","dependencies_parsed_at":"2025-10-05T09:13:58.134Z","dependency_job_id":"732b4842-2c01-4963-9145-094e68964450","html_url":"https://github.com/xinnjie/onekeymap-cli","commit_stats":null,"previous_names":["xinnjie/onekeymap-cli"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/xinnjie/onekeymap-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xinnjie%2Fonekeymap-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xinnjie%2Fonekeymap-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xinnjie%2Fonekeymap-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xinnjie%2Fonekeymap-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xinnjie","download_url":"https://codeload.github.com/xinnjie/onekeymap-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xinnjie%2Fonekeymap-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":282555242,"owners_count":26688883,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-03T02:00:05.676Z","response_time":108,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["export","go","helix","hotkeys","import","intellij","keybinding","keybindings","keyboard-shortcuts","keymap","migration","shortcuts","vscode","zed"],"created_at":"2025-11-04T01:01:10.142Z","updated_at":"2025-11-04T01:03:56.272Z","avatar_url":"https://github.com/xinnjie.png","language":"Go","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/xinnjie/onekeymap-cli\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets/logo-onekeymap.svg\" /\u003e\n      \u003cimg src=\"assets/logo-onekeymap.svg\" alt=\"OneKeymap CLI logo\" height=\"128\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n  \u003ch1\u003eOneKeymap CLI\u003c/h1\u003e\n\u003c/div\u003e\n\n[![Go Version](https://img.shields.io/github/go-mod/go-version/xinnjie/onekeymap-cli)](https://go.dev/)[![License](https://img.shields.io/github/license/xinnjie/onekeymap-cli)](LICENSE.md)[![Release](https://img.shields.io/github/v/release/xinnjie/onekeymap-cli)](https://github.com/xinnjie/onekeymap-cli/releases)\n\n---\n**Sync your keyboard shortcuts across all your code editors.**\n\nOneKeymap 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.\n\n| Import Keymap | View Keymap | Export Keymap |\n|---|---|---|\n| [\u003cimg src=\"assets/onekeymap-cli-import.gif\" width=\"600\" alt=\"Import Demo\"\u003e](https://asciinema.org/a/748300) | [\u003cimg src=\"assets/onekeymap-cli-view.gif\" width=\"600\" alt=\"View Demo\"\u003e](https://asciinema.org/a/ZNqGYNMKs0jVh5qH6Smv6ysni) | [\u003cimg src=\"assets/onekeymap-cli-export.gif\" width=\"600\" alt=\"Export Demo\"\u003e](https://asciinema.org/a/748319) |\n| Auto-detects your editor's keymap file and lets you know keybindings to import. | View keybindings by category and navigate with arrow keys. | Shows a diff of your target keymap file before exporting. |\n\n---\n\n## 🚀 Quick Start\n\n### Installation\n\n#### macOS\n\n- **Homebrew**\n  ```bash\n  brew tap xinnjie/onekeymap\n  brew install onekeymap-cli\n  ```\n\n#### Linux\n\n- **Debian/Ubuntu (.deb)**\n  ```bash\n  wget https://github.com/xinnjie/onekeymap-cli/releases/download/v0.5.1/onekeymap-cli_0.5.1_x86_64.deb\n  sudo dpkg -i onekeymap-cli_0.5.1_x86_64.deb\n  ```\n- **Fedora/RHEL/CentOS (.rpm)**\n  ```bash\n  wget https://github.com/xinnjie/onekeymap-cli/releases/download/v0.5.1/onekeymap-cli_0.5.1_x86_64.rpm\n  sudo rpm -i onekeymap-cli_0.5.1_x86_64.rpm\n  ```\n- **Alpine (.apk)**\n  ```bash\n  wget https://github.com/xinnjie/onekeymap-cli/releases/download/v0.5.1/onekeymap-cli_0.5.1_x86_64.apk\n  sudo apk add --allow-untrusted onekeymap-cli_0.5.1_x86_64.apk\n  ```\n\n#### Windows\n- **Scoop**\n  ```powershell\n  scoop bucket add xinnjie https://github.com/xinnjie/scoop-bucket\n  scoop install onekeymap-cli\n  ```\n\n- **Winget**\n  ```powershell\n  winget install xinnjie.onekeymap-cli\n  ```\n\n- **Zip Archive**\n  Download `onekeymap-cli_Windows_\u003carch\u003e.zip` from [GitHub Releases](https://github.com/xinnjie/onekeymap-cli/releases), extract it, and add the directory to your PATH, or run:\n  ```powershell\n  Expand-Archive -Path .\\onekeymap-cli_*.zip -DestinationPath \"$Env:USERPROFILE\\onekeymap-cli\"\n  setx PATH \"$Env:USERPROFILE\\onekeymap-cli;$Env:PATH\"\n  ```\n\n#### Cross-platform (Linux/MacOS/Windows)\n\n- **Go Install**\n  ```bash\n  go install github.com/xinnjie/onekeymap-cli/cmd/onekeymap-cli@latest\n  ```\n\n- **From Release:**\nDownload the latest binary from [GitHub Releases](https://github.com/xinnjie/onekeymap-cli/releases/latest).\n\n### Basic Usage\n\n**Import from editors interactively:**\n\n```bash\nonekeymap-cli import\n```\n\n**Export to editors interactively:**\n\n```bash\nonekeymap-cli export\n```\n\n---\n\n## Useful Commands\n\nThe following commands help you get the most from the OneKeymap CLI:\n\n- **`onekeymap-cli help`** Quick summary of all subcommands and available flags.\n- **`onekeymap-cli import`** Convert editor-specific shortcuts into the universal `onekeymap.json` format.\n- **`onekeymap-cli export`** Generate editor keymap files from your universal keymap.\n- **`onekeymap-cli migrate`** Chain `import` and `export` in one step to move between editors.\n- **`onekeymap-cli view`** Inspect the actions and bindings stored in an existing universal keymap.\n\nYou can append `-h` or `--help` to any subcommand for detailed flag descriptions and examples.\n\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eConfiguration\u003c/strong\u003e\u003c/summary\u003e\n\nOneKeymap can be configured via a config file at `~/.config/onekeymap/config.yaml`:\n\n```yaml\n# Default path for universal keymap\nonekeymap: ~/.config/onekeymap/keymap.json\n\n# Editor-specific config paths (optional, auto-detected by default)\neditors:\n  vscode:\n    keymap_path: ~/Library/Application Support/Code/User/keybindings.json\n  zed:\n    keymap_path: ~/.config/zed/keymap.json\n  intellij:\n    keymap_path: ~/Library/Application Support/JetBrains/IntelliJIdea2024.1/keymaps/custom.xml\n```\n\n\u003c/details\u003e\n\n---\n\n## 🧩 Supported Editors \u0026 Actions\n\n| Editor | Import | Export | Notes |\n|--------|--------|--------|-------|\n| **VSCode** | ✅ | ✅ |  |\n| **Zed** | ✅ | ✅ |  |\n| **IntelliJ IDEA** | ✅ | ✅ |  |\n| **Xcode** | ✅ | ✅ | shortcut coverage is still limited (see [Action Support Matrix](action-support-matrix.md)) |\n| **Helix** | ❌ | ✅ | TOML configuration support; shortcut coverage is still limited (see [Action Support Matrix](action-support-matrix.md)) |\n| **Vim/Neovim** | 🚧 | 🚧 | Planned |\n\n\u003e See all supported actions: [action-support-matrix.md](action-support-matrix.md)\n\n---\n\n## Contributing\n\nContributions are welcome! Check out the [Contributing Guide](CONTRIBUTING.md) for more details on how to get started. Here are some ways you can help:\n\n- Add Editor Support: Implement a new editor plugin\n- Improve Mappings: [Enhance the action mapping configuration](CONTRIBUTING.md#enhancing-the-action-mapping-configuration)\n- Report Bugs: Open an issue with reproduction steps\n- Documentation: Improve docs and examples\n\nFor development setup and building from source, see the [Development section in CONTRIBUTING.md](CONTRIBUTING.md#development).\n\n---\n\n## Support\n\n- Issues: [![GitHub Issues](https://img.shields.io/github/issues/xinnjie/onekeymap-cli?logo=github\u0026label=Issues)](https://github.com/xinnjie/onekeymap-cli/issues)\n- Discussions: [![Discord](https://img.shields.io/badge/Discord-Join%20the%20chat-5865F2?logo=discord\u0026logoColor=white)](https://discord.com/invite/fW3TWuXj9A)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eHow It Works\u003c/summary\u003e\n\nOneKeymap uses a **universal keymap format** that represents keyboard shortcuts in an editor-agnostic way. Here's the workflow:\n\n```\n┌─────────────┐\n│   VSCode    │──┐\n│  Keybindings│  │\n└─────────────┘  │\n                 │  Import\n┌─────────────┐  │    ↓\n│  IntelliJ   │──┼──────────────┐\n│   Keymap    │  │              │\n└─────────────┘  │    ┌─────────▼──────────┐\n                 │    │  Universal Keymap  │\n┌─────────────┐  │    │   (onekeymap.json) │\n│     Zed     │──┘    └─────────┬──────────┘\n│   Keymap    │                 │\n└─────────────┘       Export    ↓\n                 ┌───────────────────────┐\n                 │  Any Supported Editor │\n                 └───────────────────────┘\n```\n\n### Universal Keymap Format\n\nYour keymap is stored in a clean, human-readable JSON format:\n\n```json\n{\n  \"keymaps\": [\n    {\n      \"action\": \"actions.edit.copy\",\n      \"keys\": \"ctrl+c\"\n    },\n    {\n      \"action\": \"actions.view.showCommandPalette\",\n      \"keys\": \"ctrl+shift+p\"\n    },\n    {\n      \"action\": \"actions.editor.quickFix\",\n      \"keys\": \"ctrl+.\"\n    }\n  ]\n}\n```\n\n### Action Mappings\n\nOneKeymap maintains a comprehensive mapping that translates between editor-specific commands and universal actions. For example:\n\n- `actions.edit.copy` maps to:\n  - VSCode: `editor.action.clipboardCopyAction`\n  - IntelliJ: `$Copy`\n  - Zed: `editor::Copy`\n\nThis mapping layer handles context-specific behaviors, stateful toggles, and editor quirks automatically.\n\u003c/details\u003e\n\n---\n\n## ✨ Companion App: OneKeymap GUI\n\nPrefer a polished interface? Take a look at [OneKeymap.app](https://www.onekeymap.com/)—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.\n\n[![OneKeymap GUI screenshot](assets/onekeymap-app-hero.png)](https://www.onekeymap.com/)\n\n---\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxinnjie%2Fonekeymap-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxinnjie%2Fonekeymap-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxinnjie%2Fonekeymap-cli/lists"}