Project

yatte

0.0
The project is in a healthy, maintained state
Yatte (Yet Another Terminal Text Editor) is a minimal, experimental terminal-based text editor written in Ruby. Built with raw ANSI escape sequences and io/console, it features syntax highlighting, fuzzy file finding, project-wide search, multi-tab editing, undo/redo, git gutter indicators, and crash recovery.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies
 Project Readme

Yatte

Yatte stands for Yet Another Terminal Text Editor.

Yatte is a minimal, experimental terminal-based text editor written in Ruby.
It focuses on simplicity, raw terminal control, and learning-oriented design rather than feature completeness.

⚠️ Yatte is currently early-stage and not intended for production use.


Requirements

Required

  • Ruby 3.2 or newer — CI tests against 3.2, 3.3, and 3.4
  • Bundlergem install bundler if you don't already have it

Optional but recommended — yatte falls back to pure-Ruby implementations when these aren't available, so the editor still works without them. Install them for measurably faster paths:

  • git — inside a git repository, yatte uses:
    • git ls-files for the fuzzy file finder (Ctrl-T) — respects .gitignore and is ~18× faster than a recursive directory scan on large projects
    • git grep for project-wide content search (Ctrl-P) — also respects .gitignore, fastest of the three search tiers
    • git diff / git ls-files / git check-ignore for the gutter column (+/~/- markers next to added/modified/deleted lines)
  • grep (POSIX) — outside a git repo, project search (Ctrl-P) uses an external grep -rin (~7× faster than the Ruby fallback and skips binary files by default)

The editor itself has zero runtime gem dependencies — it uses only Ruby's standard library (io/console, open3, tempfile, fileutils). No ncurses, no curses gem.

Installation

Clone the repository and install dependencies:

bundle install

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/yatte for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Running the tests

rake test

Usage

bundle exec bin/yatte              # Empty buffer
bundle exec bin/yatte <filename>   # Open a file

Ctrl-S to save, Ctrl-Q to quit. Press Ctrl-K inside the editor to see every keyboard shortcut at a glance. For a hands-on tour, open TUTORIAL.md with yatte; it also doubles as a pre-release manual-test checklist. A full reference lives in COMMANDS.md.

Syntax Highlighting

Yatte includes a pluggable syntax highlighting system with built-in support for:

  • Ruby.rb, .rake, .gemspec, Rakefile, Gemfile
  • Markdown.md, .markdown

See AGENTS.md for instructions on adding support for new languages.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/jpechaves/yatte. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the Yatte project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.