64 个版本 (27 个破坏性更新)

0.31.0 2023年1月16日
0.30.0 2022年9月29日
0.29.0 2022年8月4日
0.28.0 2022年7月1日
0.1.0 2020年4月22日

#74 in 文本编辑器


用于 2 crates

GPL-3.0 许可证

1MB
23K SLoC

build badge liberapay badge

一款简单且具有偏见的终端模态代码编辑器

main screenshot

更多截图

Pepper 是我在终端中简化代码编辑的一个实验。它的使命是成为一个具有正交编辑和导航功能的极简快速代码编辑器。

帮助页面

默认快捷键

命令参考

扩展参考

定义语言语法

配置食谱

变更日志

在您的浏览器中试用!

安装

二进制文件

Pepper 是开源的,这意味着您可以自由地构建它并访问所有功能。然而,为了支持开发,您可以在 Itch 上购买预构建的二进制文件。

vamolessa.itch.io/pepper

这不仅会使您了解最新的功能/修复,还会支持 Pepper 的进一步开发!

使用 cargo

只需运行 cargo install pepper 就可以获得纯 Pepper 编辑器体验。

但是,如果您还需要 LSP 支持,您可以运行 cargo install pepper-plugin-lsp,这将安装 Pepper 编辑器及其 LSP 插件。

从源码安装

cargo install --git https://github.com/vamolessa/pepper pepper

注意(1):从源码安装仍然需要 cargo(至少这样更简单)。

注意(2):从源码安装实际上会安装带有我使用的配置的编辑器(您可以查看 我的设置)。

如果您发现错误或需要帮助

打开一个问题

目标

  • 小型但正交的编辑原语集
  • 记忆性和易于访问的默认快捷键(假设使用 QWERTY 键盘)
  • 跨平台(Windows、Linux、BSD、Mac 以及甚至 Web
  • 通过外部 CLI 工具扩展
  • 尽可能快且响应迅速
  • 没有运行时依赖(除了平台库)

非目标

  • 支持所有可能的流程(它永远不会接近与 Vim 或 Emacs 的功能均衡)
  • 复杂的用户界面(如面包屑、浮动窗口、额外的状态栏等)
  • 多个视口(留给您的窗口管理器/终端多路复用器)。相反,客户端可以相互连接并共同作用,就像它们是一个单一的应用程序一样)
  • 撤销树
  • 支持除 UTF-8 以外的文本编码
  • 模糊文件选择器(您可以将它与 fzf、skim、fd 等集成)
  • 工作区范围内的搜索(您可以将它与 grep、ripgrep 等集成)
  • 具有任何其他可以通过集成外部工具实现的特性

功能

  • 一切都可以通过键盘访问
  • 模式编辑
  • 多个光标
  • 光标样式光标(像大多数文本编辑器一样,光标可以移动到行尾字符之后,文本总是插入到其左侧)
  • 文本对象选择
  • 键盘宏
  • 客户端/服务器架构
  • 简单的语法高亮
  • 语言服务器协议

哲学

在《Handmade》的精神下[1],所有功能都是从头开始使用简单的稳定 Rust 代码编写的。这些是项目中唯一使用的第三方库

  • winapi(仅限 Windows):用于实现 Windows 平台层
  • libc(仅限 Unix):用于实现 Unix 平台层
  • wasm-bindgen(仅限 Web):用于实现 Web 平台层

模式编辑

Pepper 是模式的,这意味着按键的功能取决于您处于哪种模式。然而,它也设计得模式很少,因此开销很小。大多数时候,用户将处于 normalinsert 模式。

与 Vim 的比较

与 Vim 一样,您必须主动开始文本选择。然而,与它不同,您也可以在普通模式下操作选择。此外,没有 'action' 然后是 'movement'。只有选择和动作。也就是说,d 总是只删除所选文本。如果选择为空,则不执行任何操作。

Pepper 通过支持多个光标扩展了 Vim 的编辑功能。这使得您可以一次性进行多个文本转换。此外,光标的行为更像光标范围而不是块,并且可以始终移动到行尾字符之后。

配置食谱 中,您会发现一些基本的“类似 Vim”的键绑定,以进行更多 Vim 比较。

与 kakoune 的比较

与 Kakoune 一样,您可以在普通模式下操作选择,并且动作始终作用于选择。然而,与它不同,普通模式会记住您是否在选择文本(想象一个伪模式)。这样,就没有必要使用额外的基于 alt- 的键绑定。

Pepper 受 Kakoune 的基于选择的工作流程和多个光标的启发。然而,其光标的行为更像光标范围而不是块选择。也就是说,光标不是一个字符的选择,而只是指示光标位置的视觉提示。

一键查看键绑定

keybindings 还可以在 keyboard-layout-editor 上找到。

开发线程

您可以在以下 twitter 线程 中某种程度上跟踪 Pepper 的开发历史。

支持 Pepper 的开发

Pepper 是开源的,这意味着您可以自由地构建它并访问其所有功能。

然而,itch 上有预构建的二进制文件可供购买。

<iframe src="https://itch.io/embed/810985?linkback=true" width="552" height="167" frameborder="0"> Matheus Lessa Rodrigues 的 pepper 代码编辑器 </iframe>

您也可以直接为我买一杯咖啡:)

Donate using Liberapay ko-fi

请考虑支持 Pepper 的开发,我将永远感激:)

依赖项