videre is a fast, modal terminal editor with a vi-first workflow and minimal runtime dependencies.
The current codebase is an idiomatic Swift 6.3 package. It keeps the editor's byte-oriented buffer model, modal command surface, and custom terminal layer while using Swift Package Manager for builds and tests.
- Modal editing that stays close to vi muscle memory
- Tight terminal feedback with a low-friction UI
- Single-binary workflow with simple build/run/install paths
- Practical feature set: motions, visual selections, search, marks, yoinks, paste, and command mode
- Dependency-light Swift implementation built around explicit value types and a small POSIX terminal bridge
- Modes: Normal, Insert, Replace, Visual, Visual Line, and
:command entry - Navigation:
hjkl, arrows, word motions, paragraph motions,%,gg,G,{n}G - Editing:
i a I A o O,x,d,y,cwith operator+motion forms and count prefixes - Search:
/,n,N,f/F/t/T,;,, - Commands:
:w,:q,:q!,:qa!,:wq,:e <file>,:{number},:help - Extras: clipboard integration, syntax highlighting, Git branch status, auto-indent, auto-pairs, dot repeat, jumplist, and surround editing
swift build -c releaseThe binary will be located at .build/release/videre.
swift run videre path/to/fileswift build -c release
install -m 0755 .build/release/videre ~/.local/bin/videreAdjust the install destination to a directory on your PATH.
swift testPackage.swift: Swift package manifestSources/videre/main.swift: Application entrypoint and lifecycleSources/Videre/Editor.swift: Core editor state and text manipulation logicSources/Videre/Input.swift: Modal key handling and command dispatchSources/Videre/UI.swift: Terminal rendering and screen managementSources/Videre/Terminal.swift: POSIX raw mode, ANSI output, and key parsingSources/Videre/Syntax.swift: Lightweight syntax highlightingSources/Videre/ByteRegex.swift: Byte-oriented regex/search engineTests/VidereTests: XCTest coverage for editor behaviorvidere.1: man page
- Linux and macOS terminals are the primary targets.
- On crash or hard kill, restore terminal state with
resetorstty sane.
Unlicense. See LICENSE.