Liu Terminal code editor. A syntax-highlighted editor in the terminal window: explorer rail, 54 lexers across 400+ file types, find and replace, a language-aware status bar and a git diff dock.
A syntax-highlighted editor that lives in the same window as your agents. Open it in the sidebar next to a shell, or give it a whole tab: explorer rail on the left, the document on the right, find and replace, a status bar that knows the language — without leaving the terminal.
Click any code or text file in the File Browser and it opens in the viewer pane already in edit mode — no separate "edit" step. Markdown is the exception: it opens rendered, with a Read / Edit toggle in its title bar.
⌘ K → Code Editor hands the editor a whole tab instead of the sidebar's narrow strip. The tab opens at the active terminal's working directory; if the sidebar viewer is already holding a document, that document comes with it and the sidebar copy closes, so the same file is never open in two places.
With a document open, the tab lays itself out like a small IDE: the file list docks as a narrow explorer rail on the left and the document takes the rest of the window. Every row in the rail carries a file-type icon, and the tab's pill in the tab bar leads with the same icon next to the filename. Unsaved changes show as an amber dot after the name.
Clicking another file in the rail switches the document. Click inside the text to place the caret; long lines scroll horizontally and the view follows the caret when it leaves the visible columns.
Liu has exactly one highlighter, and three surfaces share it: the editor, the git diff dock and fenced code blocks in the Markdown reader. It is table-driven — one row per language holding its keyword tables, comment tokens and behaviour flags — with 54 lexers behind a table of 400+ file extensions and filenames, so "main.rs" in the editor and a ```rs fence in a note can never disagree.
The find bar floats at the top right of the document and searches as you type: every match is tinted, the current one stronger, and the counter reads "2 of 7". While it is open its keys take priority over the editor's.
Shown for macOS; Linux maps ⌘ to Ctrl and ⌥ to Alt. Line commands act on the line under the caret.
The left end reads the caret position — Ln 42, Col 17 — and the right end the language, the line ending and the encoding: C · LF · UTF-8. The language label comes from the same table that picks the lexer, so ".ts" reads "TypeScript" even though the JavaScript row highlights it; an extension the table does not know is shown upper-cased, and a file with no extension reads "Text". The line ending is measured from the file (CRLF wins when it outnumbers LF). ⌘ S writes to a temporary file and renames it into place, so a crash mid-save can never leave a half-written file.
When the active tab sits inside a repository, the status bar's git segment shows the repo, the branch and a +N −M badge. Click it — or run ⌘ K → Toggle Git Changes — and the working tree's whole diff docks on the right. It is the diff and nothing else: a two-column line-number gutter, full-width tinting per row, a card header per file that pins to the top while its rows scroll past, and horizontal scrolling for long lines, because a diff must never wrap. The git call runs on a worker thread, so a cold diff on a large repo never stalls a frame.
Türkçe · 简体中文 · 한국어 · Español · Deutsch · Italiano · Français · 日本語 · العربية