# jeffreytse/zsh-vi-mode

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/jeffreytse-zsh-vi-mode).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

4,380 stars · 149 forks · Shell · MIT

## Links

- GitHub: https://github.com/jeffreytse/zsh-vi-mode
- awesome-repositories: https://awesome-repositories.com/repository/jeffreytse-zsh-vi-mode.md

## Topics

`antigen` `awesome` `clipboard` `command-line-tool` `keybinding` `like` `oh-my-zsh` `productivity` `shell` `shell-scripts` `surround` `terminal` `vi-keybinds` `vim` `zgen` `zinit` `zplug` `zsh` `zsh-plugin` `zsh-plugins`

## Description

zsh-vi-mode is a modal command line editor and Zsh shell extension that provides Vi and Vim keybindings for terminal navigation and text manipulation. It functions as a plugin that implements a modal state machine to switch between command navigation and text insertion.

The extension includes advanced text editing capabilities such as keyword cycling for values, surround management for quotes and brackets, and the ability to hand off the command line buffer to an external text editor for complex modifications. It also provides system integration for synchronizing the shell clipboard with the native OS clipboard and opening file paths or URLs located under the cursor.

The project covers shell modal navigation and terminal text manipulation through custom widget mapping and visual mode indicators that signal the active input state via the cursor style. Users can extend the editor's behavior by registering custom widgets and defining specific escape key sequences for mode transitions.

## Tags

### Development Tools & Productivity

- [Command Line Navigation](https://awesome-repositories.com/f/development-tools-productivity/command-line-navigation.md) — Provides a Vi-modal editing environment for the Zsh shell to improve command line navigation and manipulation.
- [Modal Text Manipulation](https://awesome-repositories.com/f/development-tools-productivity/command-line-configurations/vim-style-interface-emulations/modal-text-manipulation.md) — Implements advanced modal text manipulation such as surround management and keyword cycling on the command line.
- [Modal Text Navigation](https://awesome-repositories.com/f/development-tools-productivity/command-line-configurations/vim-style-interface-emulations/modal-text-navigation.md) — Provides Vi-style modal navigation for moving and editing complex command strings efficiently.
- [Command Line Editors](https://awesome-repositories.com/f/development-tools-productivity/command-line-editors.md) — Implements a modal text entry system for the shell to speed up command line editing.
- [Shell Widget Mappings](https://awesome-repositories.com/f/development-tools-productivity/shell-widget-mappings.md) — Binds custom shell functions to Zsh Line Editor widgets to customize command line behavior.
- [Zsh Shell Extensions](https://awesome-repositories.com/f/development-tools-productivity/zsh-shell-extensions.md) — Extends the Zsh shell with modal editing and custom widget mapping capabilities.
- [Terminal Clipboard Utilities](https://awesome-repositories.com/f/development-tools-productivity/clipboard-management/clipboard-copying/terminal-clipboard-utilities.md) — Integrates shell-level deletions and copies with the system clipboard for seamless data transfer.
- [Key Sequence Patterns](https://awesome-repositories.com/f/development-tools-productivity/input-binding-libraries/multi-key-bindings/leader-key-sequences/key-sequence-patterns.md) — Allows users to define custom character sequences that trigger the transition to normal mode. ([source](https://github.com/jeffreytse/zsh-vi-mode/blob/master/README.md))
- [Shell Workflow Optimizers](https://awesome-repositories.com/f/development-tools-productivity/shell-workflow-optimizers.md) — Streamlines terminal interactions through customizable widgets and mode transition sequences.
- [Surrounding Character Management](https://awesome-repositories.com/f/development-tools-productivity/surrounding-character-management.md) — Provides capabilities to add, replace, or delete surrounding characters like quotes and brackets around selected text. ([source](https://github.com/jeffreytse/zsh-vi-mode#readme))
- [System Clipboard Integrations](https://awesome-repositories.com/f/development-tools-productivity/system-clipboard-integrations.md) — Synchronizes text deleted or copied during modal editing with the native OS clipboard.
- [External Editor Buffers](https://awesome-repositories.com/f/development-tools-productivity/temporary-directory-configuration/temporary-storage-managers/external-editor-buffers.md) — Allows exporting the current command line buffer to an external text editor for complex modifications.
- [Keyword Cycling](https://awesome-repositories.com/f/development-tools-productivity/text-editing-shortcuts/keyword-cycling.md) — Implements keyword cycling to increase or decrease values like numbers, booleans, and dates directly on the command line. ([source](https://github.com/jeffreytse/zsh-vi-mode#readme))

### Operating Systems & Systems Programming

- [Vi Modal Editing](https://awesome-repositories.com/f/operating-systems-systems-programming/keyboard-input-modes/vi-modal-editing.md) — Implements Vi-style modal editing for efficient text navigation and manipulation on the shell command line. ([source](https://github.com/jeffreytse/zsh-vi-mode/blob/master/README.md))

### Software Engineering & Architecture

- [Editor Mode Switching](https://awesome-repositories.com/f/software-engineering-architecture/operational-mode-switching/editor-mode-switching.md) — Detects specific character patterns to trigger transitions between insert and normal modes.
- [Input Mode State Machines](https://awesome-repositories.com/f/software-engineering-architecture/state-machine-logic/lightweight-state-machines/error-state-machines/input-mode-state-machines.md) — Implements a state machine to track and switch between command navigation and text insertion modes.
- [Text Buffer Pattern Manipulations](https://awesome-repositories.com/f/software-engineering-architecture/coding-patterns/pattern-based-code-manipulation/text-buffer-pattern-manipulations.md) — Uses regular expressions to identify and cycle keywords or modify characters surrounding the cursor.
- [Shell Widget Registrations](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/extensibility/plugin-architectures/developer-authoring-interfaces/custom-module-implementations/module-functionality-extenders/plugin-extenders/custom-widget-registrations/shell-widget-registrations.md) — Enables mapping user-defined functions and keybindings to extend shell behavior without conflicting with core modes. ([source](https://github.com/jeffreytse/zsh-vi-mode#readme))

### User Interface & Experience

- [External Editor Integration](https://awesome-repositories.com/f/user-interface-experience/external-editor-integration.md) — Provides a mechanism to hand off the current command line buffer to a full-featured external text editor for complex editing. ([source](https://github.com/jeffreytse/zsh-vi-mode#readme))
