30 个稳定版本
1.3.15 | 2024 年 7 月 27 日 |
---|---|
1.3.13 | 2024 年 5 月 4 日 |
1.3.12 | 2024 年 3 月 24 日 |
1.3.10 | 2023 年 12 月 30 日 |
1.2.1 | 2022 年 2 月 9 日 |
#9 in #snippets
1,409 星 & 8 关注者
460KB
11K SLoC

简介
Sniprun 是一个用 Lua 和 Rust 编写的 neovim 代码运行插件。它旨在为解释型和编译型 语言 提供极其快速的局部代码测试。Sniprun 模糊了标准保存/运行工作流程、Jupyter 类型的笔记本以及 REPL/解释器之间的界限。
TLDR: Plug 'michaelb/sniprun', {'do': 'sh install.sh'}
, :SnipRun
, :'<,'>SnipRun
, :SnipInfo
安装、配置、...
请参阅 安装说明、配置技巧、使用说明 以及 WIKI 上的更多有用信息。
演示
将任何语言的代码片段发送到 Sniprun。
一个非常简单的示例(C 语言),播放 .gif 并查看命令区域
结果可以以多种方式(甚至同时)返回
经典 | 虚拟文本 |
---|---|
![]() |
![]() |
临时浮动窗口 | 终端 |
![]() |
![]() |
通知 | API |
![]() |
![]() |
某些语言支持类似 REPL 的行为
Python, Julia, Lua, JavaScript 及 TypeScript(通过 deno)、Clojure、R、Mathematica、Sage,即将支持许多其他解释型(和编译型)语言。通过类似REPL的行为,您可以在喜欢的编辑器中运行依赖于之前执行代码的代码,就像在REPL中一样。
功能
Sniprun 是一种快速运行小段代码的方法,可以非常快速和方便地迭代。为了学习一门语言、快速实验新特性(尚未嵌入到类或整个项目中等),或者开发适合单一文件的简单代码流水线(如机器学习练习),Sniprun 可能是市面上最好的插件。
作为证明,Sniprun
- 官方支持所有这些语言(编译型和解释型),几乎支持任何语言
- 可以创建和连接到REPL,以提供交互性和趣味性界面
- 可以运行诸如GUI绘图、网络请求或甚至Ansible Playbook等任务
- 默认情况下不需要配置任何一行代码(但可以定制到非常细致的程度)
- 可以从不完整/包含错误的文件部分运行代码
- 可以在某些语言中自动获取代码片段所需的
导入
- 可以实时运行(每按一次键)
- 易于进行映射和Vim动作
- 提供了一个API(用于运行代码和显示结果)
- 提供了许多结果显示模式,可以同时启用,并且可以根据需要为不同的输出状态启用
- 支持Markdown、Orgmode和Neorg中的文献编程
已知限制
由于其本质,Sniprun 可能难以处理以下程序
- 与标准输出/错误交互
- 需要从stdin读取
- 访问文件;Sniprun 不在虚拟环境中运行,它像您的代码一样访问文件,但由于它不运行整个程序,可能会出现问题。**相对路径可能引起问题**,因为 sniprun 的当前工作目录将在 ~/.cache/sniprun 中,并且相对导入可能会缺失。
- 不支持Windows
- NixOS、MacOS用户必须本地编译 Sniprun。Sniprun 未在其他 Unix 系统上测试
更改日志
已经走了很长的路!对于历史爱好者,请参阅完整更改日志。
贡献
Sniprun 已被制作成易于贡献者使用的(请参阅CONTRIBUTING.md),因此为任何语言创建/修复解释器相对容易。但任何(建设性的)问题、讨论或文档拉取请求都是受欢迎的贡献形式!
依赖项
~9–21MB
~320K SLoC