# vscodevim/vim

**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/vscodevim-vim).**

15,160 stars · 1,456 forks · TypeScript · MIT

## Links

- GitHub: https://github.com/VSCodeVim/Vim
- Homepage: http://aka.ms/vscodevim
- awesome-repositories: https://awesome-repositories.com/repository/vscodevim-vim.md

## Description

This project is a Vim keybinding emulation for Visual Studio Code. It implements modal text editing to separate navigation and content creation through specialized modes, reducing reliance on the mouse.

The emulator supports custom IDE workflows by importing standard configuration files and remapping keyboard shortcuts. It integrates with external processes to handle complex commands and reproduces logic from common plugins for surrounding characters, commenting, and rapid motion.

The capability surface includes keyboard-driven navigation using text objects, markers, and character sequences. Text manipulation is handled through multiple cursor editing, indentation-based selection, and register-based replacement. Search behavior and real-time highlighting are configurable, while the active editing mode is indicated via status bar coloring.

## Tags

### Development Tools & Productivity

- [Modal Editing Systems](https://awesome-repositories.com/f/development-tools-productivity/modal-editing-systems.md) — Implements a modal editing system that separates navigation and text manipulation into distinct operational modes.
- [Text and Block Manipulation Tools](https://awesome-repositories.com/f/development-tools-productivity/code-editors-ides/extension-ecosystems-management/editor-ide-extensions/text-and-block-manipulation-tools.md) — Provides advanced tools for transforming and manipulating code blocks and text using modal commands.
- [Cursor Navigation Systems](https://awesome-repositories.com/f/development-tools-productivity/cursor-navigation-systems.md) — Provides a comprehensive system for precise cursor movement through document structures. ([source](https://github.com/vscodevim/vim#readme))
- [Definition Navigation](https://awesome-repositories.com/f/development-tools-productivity/definition-navigation.md) — Provides the ability to jump from a symbol usage directly to its definition. ([source](https://github.com/vscodevim/vim#readme))
- [Keyboard-Driven Code Navigation](https://awesome-repositories.com/f/development-tools-productivity/keyboard-driven-code-navigation.md) — Enables rapid cursor movement across code using text objects, markers, and specialized character sequences.
- [Keyboard Shortcut Mappings](https://awesome-repositories.com/f/development-tools-productivity/keyboard-shortcut-mappings.md) — Provides custom keybinding mappings that adapt the editor to match specific modal workflows. ([source](https://github.com/vscodevim/vim#readme))
- [Multi-Cursor Editing](https://awesome-repositories.com/f/development-tools-productivity/multi-cursor-editing.md) — Supports simultaneous text manipulation across multiple document locations using multiple cursors. ([source](https://github.com/vscodevim/vim#readme))
- [Keybinding Emulators](https://awesome-repositories.com/f/development-tools-productivity/text-editors/keybinding-emulators.md) — Emulates Vim keyboard shortcuts and motion logic within the Visual Studio Code environment.
- [Character Sequence Navigation](https://awesome-repositories.com/f/development-tools-productivity/character-sequence-navigation.md) — Implements Vim-style motions that jump the cursor to specific character sequences. ([source](https://github.com/vscodevim/vim#readme))
- [Comment Toggling Utilities](https://awesome-repositories.com/f/development-tools-productivity/comment-toggling-utilities.md) — Provides utilities to wrap or unwrap blocks of code with comment markers. ([source](https://github.com/vscodevim/vim#readme))
- [Configuration Importing](https://awesome-repositories.com/f/development-tools-productivity/configuration-importing.md) — Loads custom keyboard remappings and settings from external configuration files for environment consistency. ([source](https://github.com/vscodevim/vim#readme))
- [IDE Configuration Managers](https://awesome-repositories.com/f/development-tools-productivity/development-environment-management/development-environment-extensions/ide-configuration-managers.md) — Manages personalized IDE settings and keybindings via external configuration files to automate editing tasks.
- [Plugin Logic Emulation](https://awesome-repositories.com/f/development-tools-productivity/editor-plugins/plugin-logic-emulation.md) — Reproduces logic from popular plugins for surrounding characters, commenting, and rapid motion. ([source](https://github.com/vscodevim/vim#readme))
- [Element Metadata Inspection](https://awesome-repositories.com/f/development-tools-productivity/element-metadata-inspection.md) — Displays contextual information like types and error messages for the element under the cursor. ([source](https://github.com/vscodevim/vim#readme))
- [External Command Integrations](https://awesome-repositories.com/f/development-tools-productivity/external-command-integrations.md) — Provides a bridge to external processes for executing complex search, replace, and regex operations.
- [Indentation-Based Text Objects](https://awesome-repositories.com/f/development-tools-productivity/indentation-rules/indentation-based-text-objects.md) — Allows for the efficient modification of code blocks sharing the same indentation level. ([source](https://github.com/vscodevim/vim#readme))
- [Multi-Cursor Editing Systems](https://awesome-repositories.com/f/development-tools-productivity/multi-cursor-editing-systems.md) — Synchronizes multiple active editing points to allow simultaneous text modification across different document offsets.
- [Textual](https://awesome-repositories.com/f/development-tools-productivity/scrollback-content-marking/navigation-markers/textual.md) — Implements marker-based navigation that allows jumping to labeled characters via keystrokes. ([source](https://github.com/vscodevim/vim#readme))
- [Search Configurations](https://awesome-repositories.com/f/development-tools-productivity/search-configurations.md) — Allows configuration of search behavior, including case sensitivity and real-time highlighting. ([source](https://github.com/vscodevim/vim#readme))
- [Surrounding Character Management](https://awesome-repositories.com/f/development-tools-productivity/surrounding-character-management.md) — Provides utilities to add, delete, or change characters that surround a selection. ([source](https://github.com/vscodevim/vim#readme))
- [Text Object Selection](https://awesome-repositories.com/f/development-tools-productivity/text-object-selection.md) — Treats arguments within a function call as text objects to enable quick changes while preserving separators. ([source](https://github.com/vscodevim/vim#readme))
- [Text Register Managers](https://awesome-repositories.com/f/development-tools-productivity/text-register-managers.md) — Implements named buffers (registers) for storing and replacing text ranges. ([source](https://github.com/vscodevim/vim#readme))
- [Text Selection Utilities](https://awesome-repositories.com/f/development-tools-productivity/text-selection-utilities.md) — Implements an expanding selection mechanism that grows outward from the cursor position. ([source](https://github.com/vscodevim/vim#readme))
- [Buffer-Wide Selections](https://awesome-repositories.com/f/development-tools-productivity/text-selection-utilities/buffer-wide-selections.md) — Treats the entire file as a single text object for bulk transformations. ([source](https://github.com/vscodevim/vim#readme))

### Software Engineering & Architecture

- [Structural Text Objects](https://awesome-repositories.com/f/software-engineering-architecture/structural-text-objects.md) — Identifies structural code blocks like brackets and indentation levels to treat them as selectable text objects.
- [Configuration Parsers](https://awesome-repositories.com/f/software-engineering-architecture/configuration-parsers.md) — Interprets standard vimrc configuration files to dynamically populate keybindings and editor settings.

### User Interface & Experience

- [Host API Delegation](https://awesome-repositories.com/f/user-interface-experience/editor-command-apis/host-api-delegation.md) — Triggers native editor functions by mapping modal shortcuts to the internal command system of the host environment.

### Part of an Awesome List

- [Development Environments](https://awesome-repositories.com/f/awesome-lists/devtools/development-environments.md) — Vim emulation plugin for Visual Studio Code.
