#neovim #plugin #runner #snippets #repl #testing #compiled-language

bin+lib michaelb/sniprun

一个用于运行代码行/块(独立于文件其余部分)的 neovim 插件,支持多种语言

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 关注者

LGPL-3.0

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