Pepper is an experiment of mine to simplify code editing from the terminal. It's mission is to be a minimal and fast code editor with an orthogonal set of both editing and navigation features.
Pepper is open-source, which means you're free to build it and access all of its features. However, to support the development, prebuilt binaries are available for purchase at itch.
This will not only keep you updated with the latest features/fixes but also support further pepper development!
cargo
Simply running cargo install pepper
will get you up and running.
git clone git@github.com:vamolessa/pepper.git
cd pepper
cargo install --path . --force
NOTE: installing from source still requires cargo
(at least it's easier this way).
Please open an issue
In the spirit of Handmade, almost all features are coded from scratch using simple stable Rust code.
These are the only external crates being used in the project:
- fuzzy-matcher
: fuzzy matching for the picker ui. it could be replaced, however it's implementation does not get in the way and has minimal dependencies
- winapi
(windows-only): needed to implement windows platform layer
- libc
(unix-only): needed to implement unix platform layer
Pepper is modal which means keypresses do different things depending on which mode you're in.
However, it's also designed to have few modes so the overhead is minimal. Most of the time, users will be in
either normal
or insert
mode.
Like Vim, you have to actively start text selection.
However, unlike it, you can also manipulate selections in normal mode.
Also, there's no 'action' then 'movement'. There's only selections and actions.
That is, d
will always only delete selected text. If the selection was empty, it does nothing.
Pepper expands on Vim's editing capabilities by supporting multiple cursors. This enables you to make several text transformations at once. Also, cursors behave like carets instead of blocks and can always go one-past-last-character-in-line.
Like Kakoune, you can manipulate selections while in normal mode and actions always operate on selections.
However, unlike it, normal mode remembers if you're selecting text or nor (think a pseudo-mode).
This way, there's no need for extra alt-
based keybindings.
Pepper is heavily inspired by Kakoune's selection based workflow and multiple cursors. However its cursors behave like caret ranges instead of block selections. That is, the cursor is not a one-char selection but only a visual cue to indicate the caret location.
It's possible to kinda follow Pepper's development history in this twitter thread
Pepper is open-source, which means you're free to build it and access all of its features. However, to support the development, prebuilt binaries are available for purchase at itch.
Please consider purchasing in order to support both the development of new features and bug fixing. I'll be forever grateful :)