A modern, full-featured terminal text editor, with zero configuration. Familiar keybindings, mouse support, and IDE-level features — no learning curve required.
Official Website · Documentation · Discord · Contributing
Quick Install: curl https://raw.githubusercontent.com/sinelaw/fresh/refs/heads/master/scripts/install.sh | sh
Fresh brings the intuitive UX of VS Code and Sublime Text to the terminal. Standard keybindings, full mouse support, menus, and a command palette — everything works the way you'd expect, right out of the box. No modes, no memorizing shortcuts.
Built for real-world performance: Fresh handles multi-gigabyte files with negligible memory overhead and delivers consistently low-latency input, regardless of file size.
Command Palette & Fuzzy Finder
One shortcut to find files, run commands, switch buffers, and jump to any line.
Multi-Cursor Editing
Select and edit multiple occurrences simultaneously — the same workflow you know from graphical editors.
Themes & Customization
Browse and apply color themes instantly. Full settings UI and interactive keybinding editor included.
See more feature demos: Editing (search & replace, block selection, sort lines, ...) · Productivity (file explorer, split view, integrated terminal, ...) · Themes
Feature Overview
| Category | Features |
|---|---|
| File Management | open/save/new/close, file explorer, tabs, auto-revert, git file finder |
| Editing | undo/redo, multi-cursor, block selection, smart indent, comments, clipboard |
| Search & Replace | incremental search, find in selection, query replace, git grep |
| Navigation | go to line/bracket, word movement, position history, bookmarks, error navigation |
| Views & Layout | split panes, line numbers, line wrap, backgrounds, markdown preview |
| Language Server (LSP) | go to definition, references, hover, code actions, rename, diagnostics, autocompletion |
| Productivity | command palette, menu bar, keyboard macros, git log, diagnostics panel |
| Extensibility | TypeScript plugins (sandboxed QuickJS), color highlighter, TODO highlighter, merge conflicts, path complete, keymaps |
| Internationalization | Multiple language support (see locales/), plugin translation system |
Installation
Quick install (autodetect best method):
curl https://raw.githubusercontent.com/sinelaw/fresh/refs/heads/master/scripts/install.sh | sh
Or, pick your preferred method:
| Platform | Method |
|---|---|
| macOS | brew |
| Bazzite/Bluefin/Aurora Linux | brew |
| Windows | winget |
| Arch Linux | AUR |
| Debian/Ubuntu | .deb |
| Fedora/RHEL | .rpm, Terra |
| FreeBSD | ports / pkg |
| Gentoo | GURU |
| Linux (any distro) | AppImage, Flatpak |
| All platforms | Pre-built binaries |
| npm | npm / npx |
| Rust users (Fast) | cargo-binstall |
| Rust users | crates.io |
| Nix | Nix flakes |
| Developers | From source |
Brew
On macOS and some linux distros (Bazzite/Bluefin/Aurora):
Note: On macOS, see macOS Terminal Tips for recommended terminal configuration.
brew tap sinelaw/fresh brew install fresh-editor
Windows (winget)
winget install fresh-editor
Alternatively, Windows users can use npm.
Arch Linux (AUR)
Binary package (recommended, faster install):
git clone https://aur.archlinux.org/fresh-editor-bin.git
cd fresh-editor-bin
makepkg --syncdeps --installBuild from source:
git clone https://aur.archlinux.org/fresh-editor.git
cd fresh-editor
makepkg --syncdeps --installUsing an AUR helper (such as yay or paru):
# Binary package (recommended, faster install) yay -S fresh-editor-bin # Or build from source yay -S fresh-editor
Debian/Ubuntu (.deb)
Download and install the latest release:
curl -sL $(curl -s https://api.github.com/repos/sinelaw/fresh/releases/latest | grep "browser_download_url.*_$(dpkg --print-architecture)\.deb" | cut -d '"' -f 4) -o fresh-editor.deb && sudo dpkg -i fresh-editor.deb
Or download the .deb file manually from the releases page.
Fedora/RHEL/openSUSE (.rpm)
Download and install the latest release:
curl -sL $(curl -s https://api.github.com/repos/sinelaw/fresh/releases/latest | grep "browser_download_url.*\.$(uname -m)\.rpm" | cut -d '"' -f 4) -o fresh-editor.rpm && sudo rpm -U fresh-editor.rpm
Or download the .rpm file manually from the releases page.
Gentoo (GURU)
Enable the repository as read in Project:GURU/Information for End Users then emerge the package:
emerge --ask app-editors/fresh
AppImage
Download the .AppImage file from the releases page and run:
chmod +x fresh-editor-VERSION-x86_64.AppImage ./fresh-editor-VERSION-x86_64.AppImage
For faster startup (recommended): Extract the AppImage instead of running it directly. This avoids the FUSE mount overhead on each launch (~10x faster):
./fresh-editor-VERSION-x86_64.AppImage --appimage-extract mkdir -p ~/.local/share/fresh-editor ~/.local/bin mv squashfs-root/* ~/.local/share/fresh-editor/ ln -sf ~/.local/share/fresh-editor/usr/bin/fresh ~/.local/bin/fresh
Ensure ~/.local/bin is in your PATH. Available for x86_64 and aarch64 architectures.
Flatpak
Download the .flatpak bundle from the releases page and install:
flatpak install --user fresh-editor-VERSION-x86_64.flatpak flatpak run io.github.sinelaw.fresh
See flatpak/README.md for building from source.
Pre-built binaries
Download the latest release for your platform from the releases page.
npm
npm install -g @fresh-editor/fresh-editor
Or try it without installing:
npx @fresh-editor/fresh-editor
Using cargo-binstall
To install the binary directly without compiling (much faster than crates.io):
First, install cargo-binstall if you haven't already
cargo install cargo-binstall
Then install fresh
cargo binstall fresh-editor
Nix flakes
Run without installing:
nix run github:sinelaw/fresh
Or install to your profile:
nix profile add github:sinelaw/fresh
From crates.io
cargo install --locked fresh-editor
From source
git clone https://github.com/sinelaw/fresh.git
cd fresh
cargo build --release
./target/release/fresh [file]Documentation
- User Guide
- macOS Tips - Terminal configuration, keyboard shortcuts, and troubleshooting for Mac users
- Plugin Development
Contributing
See CONTRIBUTING.md for guidelines.
Privacy
Fresh checks for new versions daily to notify you of available upgrades. Alongside this, it sends basic anonymous telemetry (version, OS/architecture, terminal type) to help understand usage patterns. No personal data or file contents are collected.
To disable both upgrade checks and telemetry, use --no-upgrade-check or set check_for_updates: false in your config.
License
Copyright (c) Noam Lewis
This project is licensed under the GNU General Public License v2.0 (GPL-2.0).



