Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

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

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

neoscroll.nvim

MITLua

A smooth scrolling plugin for Neovim written in Lua, enhancing built-in window movement commands with customizable animations.

GitHubGitHub
2.1k stars40 forks0 contributors

What is neoscroll.nvim?

Neoscroll is a Lua plugin for Neovim that adds smooth, animated scrolling to built-in window movement commands. It replaces the default instant jumps with customizable transitions, making navigation in text editors more visually comfortable and less jarring. The plugin solves the problem of abrupt scrolling in Vim/Neovim by introducing easing functions and performance optimizations.

Target Audience

Neovim users who frequently scroll through code or text and want a smoother, more modern editing experience. It's particularly useful for developers who spend long hours in the editor and value visual polish and customization.

Value Proposition

Developers choose Neoscroll because it's a lightweight, Lua-native solution that integrates seamlessly with Neovim's ecosystem. Unlike simpler alternatives, it offers fine-grained control over scrolling behavior, easing functions, and performance tweaks without bloating the editor.

Overview

Smooth scrolling neovim plugin written in lua

Use Cases

Best For

  • Enhancing the visual smoothness of scrolling in Neovim
  • Customizing scroll animation duration and easing curves
  • Improving scrolling performance in files with heavy syntax highlighting
  • Adding smooth transitions to window movement commands like Ctrl+u/d/b/f
  • Creating custom scrolling mappings with Lua hooks
  • Reducing eye strain during long coding sessions with animated scrolls

Not Ideal For

  • Developers who rely heavily on macros involving scrolling commands, due to known interference issues
  • Users on Vim or Neovim versions earlier than 0.5, as the plugin requires modern Neovim features
  • Those who prioritize instant, raw scrolling speed over visual smoothness for productivity
  • Minimalists seeking to avoid plugin dependencies and keep Neovim configuration lightweight

Pros & Cons

Pros

Smooth Visual Animations

Replaces abrupt scrolling with easing functions for commands like <C-u> and <C-d>, providing a more comfortable editing experience as shown in the demo video.

Highly Customizable Behavior

Offers fine-grained control over duration, easing functions, cursor hiding, and scrolloff margins through a detailed Lua setup configuration.

Performance Optimization Mode

Includes an option to disable syntax highlighting during scrolls, improving performance on slower machines or files with heavy highlighting.

Lua-native Extensibility

Leverages Neovim's Lua API for efficient scrolling functions and supports pre_hook and post_hook for custom code execution around animations.

Cons

Macro Interference Issues

The README admits that scrolling commands like <C-u> and <C-d> can disrupt macro recording and playback, which is a significant limitation for power users.

Neovim Version Dependency

Requires Neovim 0.5 or higher, making it incompatible with Vim or older Neovim versions, thus limiting its accessibility.

Configuration Complexity

Setting up custom mappings and hooks demands familiarity with Lua and Neovim's keymap API, which can be a barrier for users new to scripting.

Frequently Asked Questions

Quick Stats

Stars2,060
Forks40
Contributors0
Open Issues11
Last commit6 months ago
CreatedSince 2021

Tags

#custom-animations#scrolling#performance-optimization#vim-motions#neovim-plugin#neovim-plugins#editor-enhancement#neovim-lua#window-navigation#neovim#lua#smooth-scrolling

Built With

N
Neovim
L
Lua

Included in

Neovim20.6k
Auto-fetched 5 hours ago

Related Projects

cinnamon.nvimcinnamon.nvim

Smooth scrolling for ANY command 🤯. A Neovim plugin written in Lua!

Stars399
Forks7
Last commit1 year ago
scroll.nvimscroll.nvim

Smooth scroll for neovim.

Stars20
Forks0
Last commit2 years ago
filler-begone.nvimfiller-begone.nvim

Prevents neovim from showing filler lines unnecessarily due to scrolling beyond buffer content

Stars20
Forks1
Last commit8 months ago
keepcursor.nvimkeepcursor.nvim

A collection of functions to control how the screen is positioned around the cursor.

Stars12
Forks0
Last commit1 year 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