Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Neovim
  3. substitute.nvim

substitute.nvim

WTFPLLuav2.0.0

A Neovim plugin providing new operator motions for quick text substitution and exchange.

GitHubGitHub
736 stars9 forks0 contributors

What is substitute.nvim?

substitute.nvim is a Neovim plugin that provides new operator motions for quickly replacing and exchanging text within the editor. It allows users to substitute text objects with yanked content, apply substitutions across ranges, and swap text between locations, streamlining common editing tasks.

Target Audience

Neovim users who frequently perform text substitutions and exchanges, particularly those familiar with Vim plugins like vim-subversive or vim-exchange seeking a Lua-based alternative.

Value Proposition

Developers choose substitute.nvim for its Lua implementation, which aims to be more maintainable and efficient than older VimScript plugins, while offering powerful, dot-repeatable operations and seamless integration with other Neovim plugins.

Overview

Neovim plugin introducing a new operators motions to quickly replace and exchange text.

Use Cases

Best For

  • Replacing words or paragraphs with yanked text using motions
  • Applying substitutions across multiple lines with range motions
  • Swapping two text regions like words or lines quickly
  • Enhancing Neovim editing workflows with dot-repeatable operations
  • Integrating with yank managers like yanky.nvim for swap functionality
  • Using text modifiers like reindenting or trimming during substitution

Not Ideal For

  • Editors who want plugins with pre-configured keybindings and zero setup effort
  • Teams using Vim or Neovim versions older than 0.8.0
  • Workflows heavily dependent on mouse-driven or graphical text manipulation tools
  • Users unfamiliar with Vim motions who might find operator-based editing unintuitive

Pros & Cons

Pros

Lua-Powered Modernization

Rewritten in Lua for improved maintainability and efficiency over VimScript alternatives like vim-subversive, as stated in the README's philosophy section.

Dot-Repeatable Operations

Both substitute and exchange operators support the dot command, allowing quick repetition of edits without re-invoking motions, enhancing editing speed.

Flexible Text Modifiers

Includes built-in modifiers like reindenting, trimming, and joining lines, enabling context-aware substitutions directly during operations without extra steps.

Seamless Plugin Integration

Designed to work with plugins like yanky.nvim and vim-abolish, offering enhanced yank management and substitution capabilities through configurable hooks.

Cons

Manual Key Mapping Required

The plugin provides no default mappings, forcing users to manually set up keybindings, which adds setup overhead and potential for configuration errors.

Key Shadowing Issues

Recommended mappings often use 's', which shadows Neovim's native change character, requiring users to adapt or remap other keys like 'cl' for basic edits.

Neovim Version Dependency

Requires Neovim >= 0.8.0, locking out users on older versions or other editors like Vim, with only a limited compatibility branch for Neovim 0.6.0.

Configuration Complexity

Advanced features like range substitutions and modifiers involve numerous options that can be overwhelming to tune, especially for casual users.

Frequently Asked Questions

Quick Stats

Stars736
Forks9
Contributors0
Open Issues7
Last commit4 months ago
CreatedSince 2021

Tags

#operator#productivity#vim-motions#neovim-plugin#substitution#nvim-plugin#text-editing#exchange#neovim#lua#nvim

Built With

N
Neovim
L
Lua

Included in

Neovim20.6k
Auto-fetched 17 hours ago

Related Projects

nvim-autopairsnvim-autopairs

autopairs for neovim written in lua

Stars4,055
Forks142
Last commit1 month ago
nvim-treesitter-contextnvim-treesitter-context

Show code context

Stars3,203
Forks237
Last commit1 month ago
zen-mode.nvimzen-mode.nvim

🧘 Distraction-free coding for Neovim

Stars2,142
Forks76
Last commit8 months ago
nvim-ts-autotagnvim-ts-autotag

Use treesitter to auto close and auto rename html tag

Stars2,099
Forks109
Last commit2 months ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub