# 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!

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

## 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 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`

## 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 session-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 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

- Multi-GB file support
- Intuitive out of the box
- No config file fiddling required
- Standard keybindings (Ctrl+S, Ctrl+Z, Ctrl+F)
- Full mouse support
- Menu bar and command palette
- Fuzzy file finder (Ctrl+P)
- Project-wide grep (live, via ripgrep)
- Project-wide search & replace
- File explorer with git status
- Tabs and split panes
- Side-by-side diff view
- Markdown preview (compose mode)
- Multi-cursor & block selection
- Keyboard macros
- Regex find & replace with capture groups
- Auto-close brackets & quotes (per-language)
- Smart home, smart backspace dedent, surround
- Auto-indent & auto-dedent (tree-sitter)
- Code folding (LSP + indent-based)
- Magit-style git diff review
- Git gutter, git log viewer, git grep
- LSP configs shipped for many languages
- Multi-LSP per language
- Goto / hover / references in library paths
- Code actions with workspace edits
- Format-on-save
- SSH remote editing
- Detachable sessions (`fresh -a`)
- `--wait` for `git core.editor` / `$EDITOR`
- Hot Exit with crash recovery
- Integrated terminal (mouse forwarding, scrollback)
- Vim mode
- TypeScript plugins (QuickJS + OXC)
- Package manager for plugins, themes, languages
- Scaffold new packages with `--init`
- Live-preview theme editor
- Built-in themes: Gruvbox, Dracula, Nord, Tokyo Night…
- Vertical rulers, whitespace indicators
- Customizable status bar with `{clock}` element
- Internationalization (Japanese, Korean, Chinese, Vietnamese…)
- Many text encodings (UTF-16, GBK, Shift-JIS, Latin-1…)
- Read-only mode for library & toolchain paths
- Settings UI with deep search
- Keybinding editor with conflict detection
- Single static binary, no runtime
- Packaging: Homebrew, AUR, winget, apt, Flatpak, AppImage, cargo
- Linux, macOS, Windows, FreeBSD
- Open source (GPL-2.0)

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