Features Install Docs Blog Changelog Discord GitHub

Fresh

A powerful terminal text editor and IDE.

Install:
curl https://raw.githubusercontent.com/sinelaw/fresh/refs/heads/master/scripts/install.sh | sh Copied
More options…
Fresh editor showing file explorer, syntax-highlighted code, and integrated terminal

Fast & light

Instant startup. Text appears as you type. Small memory footprint. Stays responsive on multi-GB files and remote editing over SSH.

  • Instant startup, low-latency input
  • Low memory footprint
  • Multi-GB files open without blocking the UI
  • SSH remote editing transfers only the diff — small edits to huge remote files stay snappy
  • Project-wide search & replace, even across unsaved buffers
Multi-cursor editing in a large file

Git review & diff

Split-panel review with staged / unstaged / untracked files on the left and the selected diff on the right. Stage, unstage or discard individual hunks; leave line comments and session notes; export to Markdown. Side-by-side diff view for file comparisons.

  • Hunk-level stage / unstage / discard
  • Side-by-side diff view
  • Line comments and session notes
  • Git gutter, git log viewer, git grep
Git log view in Fresh

Language Server Protocol

Run multiple LSP servers per language (for example pylsp + pyright) with feature routing and merged completions. Per-project workspace roots detected from configurable markers like Cargo.toml or package.json.

  • Configs shipped for Python, TypeScript, Rust, Go, Java, C/C++, Ruby, PHP, Bash, Vue, Svelte, Terraform, Haskell, OCaml, Elixir and many more
  • Goto, references and hover in library paths (node_modules, site-packages, .cargo)
  • Code actions with workspace edits
LSP hover documentation

Detachable sessions

Start a named session, detach and reattach across terminal disconnects. The --wait flag blocks until the buffer is closed, which lets Fresh serve as git core.editor or $EDITOR. Hot Exit persists every buffer across restarts and crashes.

  • Named and directory-based sessions (fresh -a myproject)
  • --wait for commit messages, rebases and scripted flows
  • Hot Exit with crash recovery, including unnamed scratch buffers
# Use Fresh as your git editor git config --global core.editor "fresh --wait" # Attach a persistent session fresh -a myproject # Open a file in the running session fresh --cmd session open-file myproject src/main.rs:42

SSH remote editing

Open files on an SSH host with fresh user@host:path. Connections reconnect in the background if they drop. Saves to large files transfer only the patch, not the whole file.

  • Password and key authentication, sudo save
  • Remote file finder (Ctrl+P) and remote grep
  • Background reconnect with disconnected-state indicator
# Open /etc/nginx/nginx.conf on prod fresh deploy@prod:/etc/nginx/nginx.conf # Ctrl+P fuzzy-finds remote files # Save over SSH with sudo # Auto-reconnects on drops

TypeScript plugins

Plugins are compiled with OXC and run in an embedded QuickJS VM, sandboxed and shipped inside the same binary. No node_modules on disk. Packages are installed from the official registry; language packs bundle a grammar, settings and LSP config together.

  • Plugin API for buffers, splits, cursors, processes, virtual buffers and overlays
  • Custom keybinding modes and embedded terminals
  • Package scaffolding with --init
Command palette

Themes, status bar & i18n

Both sides of the status bar are configurable via a visual picker, with reorderable elements including a {clock}, git branch and LSP status. Themes are edited live. The interface is translated into several languages including Japanese, Korean, Chinese and Vietnamese.

  • Live theme editor with "Inspect Theme at Cursor"
  • Built-in themes: high-contrast, Gruvbox, Dracula, Nord, Solarized, Tokyo Night and more
  • Vertical rulers, whitespace indicators, rainbow brackets, per-language wrap
  • Nerd-font icons and CJK-safe rendering
Fresh with Japanese UI and light theme

Keyboard & editing

Command palette with prefix routing (> commands, # buffers, : lines). Keybinding editor with conflict detection and per-context bindings. Full mouse support.

  • Vim mode with operators, motions, text objects and colon commands
  • Multi-cursor, block selection, surround, smart home and smart backspace
  • Keyboard macros and regex find & replace with capture groups
  • Integrated terminal with session-persistent scrollback
Fresh editor with file explorer and integrated terminal

Installation even more options →

Linux / macOS (quick install)

curl https://raw.githubusercontent.com/sinelaw/fresh/refs/heads/master/scripts/install.sh | sh

One-line install. No toolchain required.

macOS (Homebrew)

brew install sinelaw/fresh/fresh-editor

Windows (winget)

winget install fresh-editor

Debian / Ubuntu

Grab the .deb from Releases, then:

sudo dpkg -i fresh-editor_*.deb

Arch Linux (AUR)

yay -S fresh-editor

View on AUR — aarch64 supported.

npm / npx (no install)

npx @fresh-editor/fresh-editor

Or global: npm install -g @fresh-editor/fresh-editor

Pre-built Binaries

Linux, macOS, Windows, FreeBSD binaries on GitHub Releases. Drop anywhere on $PATH.

From source (Cargo)

cargo install --locked fresh-editor

If you already have a Rust toolchain.

Full feature list

User feedback

Out of the box this is the best new TUI editor I've tried, probably ever.

I had given up hope on ever finding an editor like this. WOW.

The multi-cursor experience is the smoothest I've seen in a terminal based editor.

I REALLY love this thing, especially the efficiency and speed. Gonna start using it daily.

I really enjoy the command palette, the open file menu and the multi cursor. It's well thought, really intuitive.

Everybody loves fast and responsive software. I have to say... I really like it.