{"id":24318541,"url":"https://github.com/multirious/zsh-helix-mode","last_synced_at":"2025-06-20T01:09:40.104Z","repository":{"id":270087062,"uuid":"908954714","full_name":"Multirious/zsh-helix-mode","owner":"Multirious","description":"Helix keybinding for Z Shell","archived":false,"fork":false,"pushed_at":"2025-04-30T08:26:55.000Z","size":143,"stargazers_count":44,"open_issues_count":2,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-30T09:44:38.887Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","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/Multirious.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-12-27T11:34:58.000Z","updated_at":"2025-04-30T08:26:59.000Z","dependencies_parsed_at":"2025-01-11T19:20:19.701Z","dependency_job_id":"797d38b0-d941-481c-92cf-4531e9fa2cee","html_url":"https://github.com/Multirious/zsh-helix-mode","commit_stats":null,"previous_names":["multirious/zsh-helix-mode"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Multirious/zsh-helix-mode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Multirious%2Fzsh-helix-mode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Multirious%2Fzsh-helix-mode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Multirious%2Fzsh-helix-mode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Multirious%2Fzsh-helix-mode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Multirious","download_url":"https://codeload.github.com/Multirious/zsh-helix-mode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Multirious%2Fzsh-helix-mode/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260857418,"owners_count":23073439,"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","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":[],"created_at":"2025-01-17T14:38:34.491Z","updated_at":"2025-06-20T01:09:35.087Z","avatar_url":"https://github.com/Multirious.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# zsh-helix-mode\nA WIP Helix keybinding for Z Shell.\n\nBring comfort of working with Helix keybindings to your Zsh environment.\n\nThis plugin attempts to implement Helix keybindings as accurate and complete\nas much as possible.\nAny existing keybindings that *should* reflect the official default Helix keybinds but doesn't are considered bugs.\n\n**Features**\n- Accurate Helix replication! No more switching muscle memory.\n- Helix's selection manipulation and movemnt.\n- Match, Goto, Insert, Append, Change, Delete, Replace.\n- Multi-cursor!\n- Registers!\n- Yank-Paste for both registers and clipboard!\n- Undo-Redo! And with selection history like Helix's.\n- Multiline mode. It's Helix editor right in your prompt!\n- Cursor styling. Display different modes with different cursor looks.\n\n---\n\n#### Sections\n- [Installation](#Installation)\n  - [Manual](#manual)\n  - [zplug](#zplug)\n  - [Antigen](#antigen)\n  - [Oh My Zsh](#oh-my-zsh)\n  - [Nix (non-flake)](#nix-non-flake)\n  - [Nix (flake)](#nix-flake)\n- [Configurations](#configurations)\n  - [Styling](#styling)\n  - [Behavior](#behavior)\n  - [Compatibility](#compatibility)\n\n## Installation\n\n### Manual\n\nClone the repository to wherever you'd like and source the plugin.\n```sh\ngit clone https://github.com/Multirious/zsh-helix-mode --depth 1\nsource ./zsh-helix-mode/zsh-helix-mode.plugin.zsh\n```\n\n### [zplug](https://github.com/zplug/zplug)\n\nFollowing zplug's plugin installation, add the below to your configuration:\n```sh\nzplug \"multirious/zsh-helix-mode\", depth:1, at:main\n```\n\n### [Antigen](https://github.com/zsh-users/antigen)\n\nFollowing Antigen's plugin installation, add the below to your configuration:\n```sh\nantigen bundle multirious/zsh-helix-mode@main\n```\n\n### [Oh My Zsh](https://github.com/ohmyzsh)\n\nFollowing Oh My Zsh's plugin installation, clone the repository to `$ZSH_CUSTOM/plugins` folder:\n```sh\ngit clone https://github.com/Multirious/zsh-helix-mode --depth 1 $ZSH_CUSTOM/plugins/zsh-helix-mode\n```\nAnd add the plugin to the `plugins` array:\n```\nplugins=(zsh-helix-mode)\n```\n\n### [Nix](https://nixos.org/) (non-flake)\n```nix\nlet\n  zsh-helix-mode = pkgs.fetchFromGithub {\n    owner = \"multirious\";\n    repo = \"zsh-helix-mode\";\n    rev = \"...\";\n    sha256 = \"...\";\n  };\nin\n''\nsource ${zsh-helix-mode}/zsh-helix-mode.plugin.zsh\n''\n```\n\n### [Nix](https://nixos.org/) ([flake](https://nix.dev/concepts/flakes.html))\n```nix\n{\n  inputs = {\n    zsh-helix-mode.url = \"github:multirious/zsh-helix-mode/main\"\n  };\n}\n```\n\n## Configurations\n\n### Styling\n\nYou can change the cursor color and shape for each mode via these environment variables.\nThe content of these variables should be a string of terminal escape sequences that modify the looks of your terminal cursor.\nThese are printed everytime after mode changes.\n\n\n`ZHM_CURSOR_NORMAL`\n- Prints the variable whenever the mode changes to normal mode.\n- By default, it is `\\e[0m\\e[2 q\\e]12;#B4BEFE\\a` which is a string of ANSI escape sequences\u003cbr/\u003e\nthat basically means \"reset, block cursor, pastel blue\".\n\n`ZHM_CURSOR_SELECT`\n- Prints the variable whenever the mode changes to select mode.\n- By default, it is `\\e[0m\\e[2 q\\e]12;#F2CDCD\\a` which is a string of ANSI escape sequences\u003cbr/\u003e\nthat basically means \"reset, block cursor, pastel red\".\n\n`ZHM_CURSOR_INSERT`\n- Prints the variable whenever the mode changes to insert mode.\n- By default, it is `\\e[0m\\e[5 q\\e]12;white\\a` which is a string of ANSI escape sequences\u003cbr/\u003e\nthat basically means \"reset, vertical blinking cursor, white\".\n\nThis plugin is currently an extension to ZLE. It uses ZLE's marking/highlighting feature to implement\nselection which ZLE also provided some variables for stylign.\n\ntodo\n\n### Behavior\n\n`ZHM_CLIPBOARD_PIPE_CONTENT_TO`\n- System yanked content will be piped to the command in this variable.\n- By default, it is `xclip -sel clip` if the `DISPLAY` environment variable is found,\u003cbr/\u003e\nor `wl-copy` if the `WAYLAND_DISPLAY` environment variable is found,\u003cbr/\u003e\notherwise it is empty.\n\n\n`ZHM_CLIPBOARD_READ_CONTENT_FROM`\n- System paste will use the stdout output from the command in this variable.\n- By default, it is `xclip -o -sel clip` if the `DISPLAY` environment variable is found,\u003cbr/\u003e\nor `wl-paste --no-newline` if the `WAYLAND_DISPLAY` environment variable is found,\u003cbr/\u003e\notherwise it is empty.\n\nSome keys are custom to this plugin and not presented in Helix.\n- `Alt-Enter` for enabling and disabling multiline mode for both Insert and Normal mode.\n- `Ctrl-p` and `Ctrl-n` in Normal mode for previous and next command histroy. By default, `j` and `k` can change history too.\n\nThe register `%` is changed to `pwd` instead of current file in Helix.\n\n### Compatibility\n\n#### [zsh-autosuggestions](https://github.com/zsh-users/zsh-autosuggestions?tab=readme-ov-file#widget-mapping)\nIf you wish to use zsh-autosuggestions with this plugin, you can add the following configurations below:\n```zsh\nZSH_AUTOSUGGEST_CLEAR_WIDGETS+=(\n  zhm_history_prev\n  zhm_history_next\n)\nZSH_AUTOSUGGEST_ACCEPT_WIDGETS+=(\n  zhm_move_right\n)\nZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS+=(\n  zhm_move_next_word_start\n  zhm_move_next_word_end\n)\n```\nMore details can be seen [here](https://github.com/zsh-users/zsh-autosuggestions?tab=readme-ov-file#widget-mapping).\n\nThis configuration has one caveat and that is partial accepting using `zhm_move_next_word_start` or `zhm_move_next_word_end`\nwill leave one last character unaccepted which some can considered them undesirable/annoying (I know I am).\nPlease submit an issue/PR if you have a solution!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmultirious%2Fzsh-helix-mode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmultirious%2Fzsh-helix-mode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmultirious%2Fzsh-helix-mode/lists"}