Skip to main content
Fresh Text Editor

Welcome to Fresh

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.

Installation

Get started with Fresh using your preferred package manager

Quick Start

Learn the basics in 5 minutes with our interactive tutorial

Features

Explore multi-cursor editing, LSP support, and more

Configuration

Customize themes, keybindings, and editor settings

Why Fresh?

Fresh works perfectly out of the box. No configuration files to edit, no plugins to install. Start editing immediately with sensible defaults that just work.
If you’ve used VS Code, Sublime Text, or any modern editor, you already know Fresh. Standard keybindings (Ctrl+C, Ctrl+V, Ctrl+F, etc.) work exactly as expected.
Edit multi-gigabyte files with ease. Fresh uses advanced memory mapping and lazy loading techniques to handle massive files with minimal memory overhead.
Click to position the cursor, drag to select, scroll with your mouse wheel. Fresh supports all the mouse interactions you’re used to in graphical editors.
Language Server Protocol (LSP) integration provides go-to-definition, autocomplete, diagnostics, hover documentation, and code actions — all in your terminal.
Write plugins in TypeScript using a sandboxed QuickJS runtime. Extend Fresh with custom commands, UI overlays, language support, and more.

Key Features at a Glance

Command Palette

One shortcut (Ctrl+P) to find files, run commands, switch buffers, and jump to any line

Multi-Cursor Editing

Select and edit multiple occurrences simultaneously with Ctrl+D

File Explorer

Built-in sidebar with gitignore support and fuzzy file search

Split Panes

View multiple files side-by-side with horizontal and vertical splits

Integrated Terminal

Run shell commands without leaving the editor

Git Integration

Git grep, file finder, and branch display in status bar

Themes

Browse and apply color themes instantly with built-in theme selector

Remote Editing

Edit files on remote servers via SSH (experimental)

Session Persistence

Detach and reattach to editing sessions (experimental)

Complete Feature Set

CategoryFeatures
File Managementopen/save/new/close, file explorer, tabs, auto-revert, git file finder
Editingundo/redo, multi-cursor, block selection, smart indent, comments, clipboard
Search & Replaceincremental search, find in selection, query replace, git grep
Navigationgo to line/bracket, word movement, position history, bookmarks, error navigation
Views & Layoutsplit panes, line numbers, line wrap, backgrounds, markdown preview
Language Server (LSP)go to definition, references, hover, code actions, rename, diagnostics, autocompletion
Productivitycommand palette, menu bar, keyboard macros, git log, diagnostics panel
ExtensibilityTypeScript plugins (sandboxed QuickJS), color highlighter, TODO highlighter, merge conflicts, path complete, keymaps
InternationalizationMultiple language support with plugin translation system

Quick Start

Get Fresh up and running in seconds:
curl https://raw.githubusercontent.com/sinelaw/fresh/refs/heads/master/scripts/install.sh | sh
Once installed, simply run:
fresh
Visit the Installation page for all available installation methods, or jump to the Quick Start guide to learn the basics.

Community & Support

GitHub

Star the project and report issues

Discord

Join the community chat

Documentation

Browse the full documentation

Open Source

Fresh is open source software licensed under GPL-2.0. Contributions are welcome! See the Contributing Guide to get started.
Fresh checks for new versions daily to notify you of available upgrades. It sends basic anonymous telemetry (version, OS/architecture, terminal type) to help understand usage patterns. No personal data or file contents are collected. Disable with --no-upgrade-check or set check_for_updates: false in your config.

Build docs developers (and LLMs) love