Skip to main content

Zep Text Editor

An embeddable text editor with optional Vim mode and rendering-agnostic design

Why Zep?

Zep is a simple embeddable editor designed for game engines, development tools, and applications requiring text editing capabilities. Built with a rendering-agnostic architecture, Zep can integrate seamlessly with ImGui, Qt, or custom rendering backends.

Modal Vim Editing

Full-featured Vim mode with visual selection, text objects, and common motions

Rendering Agnostic

Works with ImGui, Qt, or custom rendering backends

Minimal Dependencies

Core library requires only C++14, no external dependencies

Gap Buffer

Efficient text storage using gap buffer data structure

Syntax Highlighting

Pluggable syntax highlighting with built-in language support

REPL Integration

Built-in REPL mode for scripting language integration

Key Features

  • Dual Editing Modes: Choose between modal Vim editing or standard notepad-style editing
  • Window Management: Split windows horizontally/vertically with tab support
  • Fuzzy Search: Built-in Ctrl+P fuzzy file search
  • Theme Support: Multiple color schemes with easy customization
  • UTF-8 Support: Full Unicode text editing capabilities
  • Text Markers: Highlight errors, warnings, and custom annotations
  • Easy Integration: Single-header include or CMake library installation

Quick Example

#include "zep/editor.h"
#include "zep/mode_vim.h"
#include "zep/imgui/display_imgui.h"

// Create the editor
auto editor = std::make_shared<Zep::ZepEditor>(
    new Zep::ZepDisplay_ImGui()
);

// Add Vim mode
editor->RegisterMode<Zep::ZepMode_Vim>();

// Create a buffer
auto buffer = editor->GetEmptyBuffer("MyFile.cpp");

// Display in your render loop
editor->Display();

Integration Options

Single Header

Include one header file in your project

CMake Library

Install as a system library via CMake

ImGui Backend

Render with Dear ImGui

Qt Backend

Render with Qt Widgets

Custom Backend

Implement your own renderer

REPL Mode

Integrate scripting languages

Get Started

1

Install Zep

Add Zep to your project as a single header or CMake library

Installation Guide

Learn about installation options
2

Choose Your Backend

Select ImGui, Qt, or implement a custom display backend

Integration Guide

Explore integration options
3

Configure and Customize

Set up editing modes, themes, and key mappings

Quickstart

Get up and running quickly

Learn More

Architecture

Understand Zep’s layered design

API Reference

Explore the complete API documentation

Vim Mode

Master Vim keybindings and commands

Examples

Browse example applications

Build docs developers (and LLMs) love