A Neovim plugin that blocks inefficient key repeats and provides hints to master Vim motions.
hardtime.nvim is a Neovim plugin that helps users break inefficient editing habits and learn optimal Vim motions. It works by restricting repeated key presses (like overusing `hjkl`) and providing real-time hints for better alternatives, effectively training users to use more powerful navigation commands.
Neovim users who want to improve their editing efficiency, particularly those transitioning from basic navigation to advanced Vim motions or seeking to eliminate repetitive key habits.
Unlike general Vim tutorials, hardtime.nvim provides active, in-editor enforcement and feedback, making habit change automatic through immediate correction and customizable training regimens.
Break bad habits, master Vim motions
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Blocks repeated key presses within configurable time limits (e.g., max_time 1000ms) to discourage inefficient navigation like overusing hjkl, directly addressing bad editing patterns.
Provides real-time suggestions for better Vim motions when suboptimal keys are pressed, with customizable patterns (e.g., hinting '-' instead of 'k^') to accelerate learning.
Offers extensive options like disabled keys, filetype exceptions, and custom hint tables, allowing users to tailor restrictions and feedback to their specific workflow.
Generates habit reports via :Hardtime report and logs to ~/.local/state/nvim/hardtime.nvim.log, enabling users to monitor and improve their keystroke efficiency over time.
Setting up custom hints requires understanding Lua string patterns, which can be non-intuitive and time-consuming for users not familiar with Lua or regular expressions.
The plugin doesn't teach Vim motions; it only enforces them, so beginners may struggle without external tutorials or resources to understand the suggested alternatives.
Legitimate uses of repeated keys, such as in visual mode selections or specific plugin integrations, can be incorrectly blocked, requiring manual configuration to avoid disruptions.