[Plugin Release] SmartMotion.nvim – Home-row powered motions built for flow #50
FluxxField
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
I've always loved plugins like hop, flash, and lightspeed — they're all fantastic. But I wanted something even more composable — something modular, that could evolve as my workflows did. So I built SmartMotion.nvim.
🚀 What is SmartMotion?
SmartMotion is a modular, high-performance motion plugin for Neovim that uses home-row hinting to navigate quickly and intelligently — but it’s also a motion framework.
It’s built from the ground up to be:
jump → yank → jump
) viaflow_state
.delete
,yank
,change
, and more can be composed or extended.🔧 Why it’s different
Unlike other plugins, SmartMotion doesn't assume anything. It ships with no motions registered by default — you choose what you want. That means:
jump-to-word-after-cursor
).jump + yank
,jump + delete
, etc.) using utilities.There’s even a new
text_search
wrapper for 1–2 character searches (like a smarterf
/t
) and support for hint visibility logic (e.g., dimmed backgrounds, second-char focus after first is selected, etc.).✨ Flow State: Native Feel Meets Smart Labels
One of the biggest goals with SmartMotion was to make motions feel native, even when enhanced with labels.
With
flow_state
, you can chain motions together or spam keys likew
,b
,j
, andk
repeatedly, without losing label-based precision.That means label-based motions don't break your muscle memory. They extend it.
🚧 Future Plans & Extensibility
One of the most exciting parts of SmartMotion is how easy it is to extend.
You can register your own:
We're planning to add more built-in modules, including:
Eventually, we want users to create their own SmartMotion plugins that provide motion modules, just like you’d build an LSP extension or Treesitter plugin. Think:
SmartMotion makes that modularity possible.
📚 Docs & Source
📦 Also Check Out
If you're into reading enhancements, I also built bionic-reading.nvim — a simple plugin to add Bionic Reading-style highlighting to your Neovim buffers.
🙏 Acknowledgements
This plugin wouldn’t exist without the amazing ideas in plugins like:
My hope is to bring all those brilliant ideas together in a way that’s more modular, extendable, and hackable.
💬 Feedback welcome!
If you try it, I’d love your feedback — ideas, bugs, or even just reactions. Especially curious if anyone else has built their own motions before and what you wish you could do better.
Beta Was this translation helpful? Give feedback.
All reactions