Fresh: A powerful terminal text editor and IDE

thunderbong1 pts0 comments

Fresh - The Terminal IDE

Features<br>Install<br>Docs<br>Blog<br>Changelog<br>Discord<br>GitHub

Fresh

A powerful terminal text editor and IDE.

Intuitive keys & mouse

Fast & light

Huge files

Themes

TypeScript plugins

Open source

Multi-cursor

Keyboard macros

LSP

Magit-style git review

Fuzzy file finder

Project-wide grep

SSH remote editing

Vim mode

and more!

Linux<br>macOS<br>Windows

Install:

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

Copied

More options…

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

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 review 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 review notes

Git gutter, git log viewer, git grep

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

Detachable daemon

Start a named daemon, 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 daemons (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<br>git config --global core.editor "fresh --wait"

# Attach a persistent daemon<br>fresh -a myproject

# Open a file in the running daemon<br>fresh --cmd daemon 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<br>fresh deploy@prod:/etc/nginx/nginx.conf

# Ctrl+P fuzzy-finds remote files<br># Save over SSH with sudo<br># 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

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

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 persistent scrollback

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 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,...

fresh editor install files remote open

Related Articles