Sniprun is a code runner plugin for neovim written in Lua and Rust. It aims to provide stupidly fast partial code testing for most interpreted and compiled language , right from within your favorite editor, blurring the line between standard save/run workflow, jupyter-like notebook, and REPL/interpreters.
TLDR: { "michaelb/sniprun", "build = "sh install.sh" }, :SnipRun, :'<,'>SnipRun, :SnipInfo
See installation instructions , configuration tips , usage explanations and much more useful information on the WIKI.

A very simple example (Rust, of course), where current lines and visual selections are sent to sniprun via shortcuts.

| Classic | Virtual Text/Virtual Line |
|---|---|
![]() |
![]() |
| Temporary Floating Window | Terminal |
![]() |
![]() |
| Notification | API |
![]() |
![]() |
Python, Julia, Lua, JavaScript & Typescript (via deno), Clojure, R, Mathematica, Sage, PHP, Swift, OCaml, and of course Rust (via evcxr), coming soon for many other interpreted (and compiled) languages. With REPL-like behavior ,you can run code dependent on previously executed code, just like in a REPL !

Sniprun is a way to quickly run small snippets of code, on the fly, and iterate very quickly and conveniently. To learn a language, to quickly experiment with new features (not yet embedded in classes or a whole project etc...), or to develop simple code pipelines (like a machine learning exercise) that fit in a unique file, sniprun is probably the best plugin out there.
As a matter of proof, Sniprun :
imports
necessary for your code snippetDue to its nature, Sniprun may have trouble with programs that :
It's been quite a journey already! For history fans, see the full changelog.
Sniprun should be quite contributor-friendly (see CONTRIBUTING.md), so it's relatively easy to create / fix interpreters for any language. But any (constructive) issue, discussion, or documentation Pull Request is a welcome form of contribution !