Hybrid terminal text editor (Vim-like commands, syntax highlighting, und o/redo). 100% vibe-coded by AI agents.
  • Go 98.2%
  • PowerShell 1.8%
Find a file
0xA672 c9df20e723
Fix security vulnerabilities and improve file handling (#9)
- Update .gitignore to remove Python-specific entries and add Go build artifacts
- Secure clipboard access in clipboard/clipboard_unix.go by using hardcoded trusted binaries to prevent command injection
- Add path traversal protection in command/command.go for :e command using filepath.Clean and path validation
- Fix security issues in ui/editor.go: implement path validation for file operations, use secure temporary file creation, validate executable paths during uninstall, and apply strict file permissions (0600) for sensitive files
- Apply consistent file permission (0600) for saved files and backups in ui/editor.go
- Format code using gp fmt to ensure consistent styling across all modified files

Co-authored-by: qwen.ai[bot] <qwenlm-intl@service.alibaba.com>
2026-07-21 08:11:13 +08:00
.github/workflows ci: add cross-platform build and auto-release on tags 2026-05-30 02:43:57 +00:00
clipboard Fix security vulnerabilities and improve file handling (#9) 2026-07-21 08:11:13 +08:00
command Fix security vulnerabilities and improve file handling (#9) 2026-07-21 08:11:13 +08:00
config style: format with go fmt 2026-06-06 23:38:06 +08:00
docs docs: add multilingual README, /docs structure, and localized --help 2026-05-30 01:43:44 +00:00
document style: format with go fmt 2026-06-06 22:35:30 +08:00
highlight style: format with go fmt 2026-06-06 22:35:30 +08:00
testdata/fuzz/FuzzApplyRules style: format with go fmt 2026-06-06 22:35:30 +08:00
ui Fix security vulnerabilities and improve file handling (#9) 2026-07-21 08:11:13 +08:00
.gitignore Fix security vulnerabilities and improve file handling (#9) 2026-07-21 08:11:13 +08:00
build-all.ps1 fix: package binaries into versioned archives (#4) 2026-05-25 06:39:49 +08:00
easyedit.example.toml fix(ui): fix tab background rendering and add whitespace visualization 2026-06-06 23:04:20 +08:00
fuzz_test.go test: add fuzz tests and optimize rendering 2026-06-06 22:24:16 +08:00
go.mod test: add fuzz tests and optimize rendering 2026-06-06 22:24:16 +08:00
go.sum test: add fuzz tests and optimize rendering 2026-06-06 22:24:16 +08:00
LICENSE Add MIT License 2026-05-23 22:55:03 +08:00
main.go feat: Safer Sed-like Insertion Update (#6) 2026-06-25 18:16:34 +08:00
README.md feat: add complete Vim-style mode switching support 2026-05-31 08:19:40 +08:00

๐Ÿงฉ EasyEdit

Build Status Go Version License Release Platforms

๐Ÿค– Vibe Coding Experiment โ€” No human-written code allowed.
Every line of this editor is authored by AI agents.
See who contributed โ†’

EasyEdit is a hybrid terminal text editor that offers stream processing capabilities โ€” functioning both as a fullโ€‘featured TUI editor and a nonโ€‘interactive sedโ€‘style filter.


โœจ Features

Mode Description
๐Ÿ–ฅ๏ธ TUI Editor Full terminal UI with syntax highlighting for 200+ languages, multiโ€‘cursor editing, undo/redo, and command mode
โšก Stream Mode Nonโ€‘interactive stdin/stdout processing โ€” ideal for CI/CD, shell pipelines, and inโ€‘place edits
๐ŸŽฎ Vim Modes Complete Vim-style mode switching (NORMAL/INSERT/VISUAL/COMMAND) with configurable behavior
๐Ÿ“ฆ Gap Buffer Efficient text storage for large files
๐Ÿ” Undo/Redo Full history stack (Ctrl+Z / Ctrl+Y)
๐ŸŒ Crossโ€‘Platform Preโ€‘built binaries available for 24+ platforms, including Linux, macOS, Windows, FreeBSD, ARM, RISCโ€‘V, and more

๐ŸŽฎ Vim Mode Support

EasyEdit now supports complete Vim-style mode switching! Enable it in your configuration:

# ~/.easyedit.toml or %APPDATA%/easyedit/config.toml
vim_mode = true      # Enable Vim modes (default: false)
show_mode = true     # Show mode indicator in status bar (default: true)
show_line_num = true # Show line numbers (default: true)

Mode Types

  • NORMAL - Navigation and commands (h/j/k/l, w/b, gg/G, etc.)
  • INSERT - Text input (press i, a, o, etc. from Normal mode)
  • VISUAL - Text selection (press v or V from Normal mode)
  • COMMAND - Execute ex commands (press : from any mode)
  • SEARCH - Search text (press / from Normal mode)

Quick Reference

Action Normal Mode Key Description
Enter Insert i Insert before cursor
Append a Append after cursor
New Line Below o Open new line below
New Line Above O Open new line above
Undo u Undo last change
Redo r Redo last change
Yank (Copy) y Copy selection/text
Delete d Delete selection/text
Paste p Paste from clipboard
Visual Mode v Enter visual mode
Visual Line V Enter visual line mode
Word Forward w Jump to next word
Word Backward b Jump to previous word
Line Start 0 Go to line beginning
Line End $ Go to line end
File Start gg Go to file beginning
File End G Go to file end

๐Ÿš€ Quick Start

๐Ÿ“ฅ Installation

Option 1: Download Prebuilt Binary (Recommended)
Visit the Releases page โ€“ binaries are available for Linux, macOS, Windows, and many more.

Option 2: Go Install

go install github.com/0xA672/Easyedit@latest

Option 3: Build from Source

git clone https://github.com/0xA672/Easyedit.git
cd Easyedit
go build -o easyedit .

โ–ถ๏ธ Usage Examples

Interactive Mode

easyedit                # Open an empty buffer
easyedit main.go        # Open an existing file

Stream Mode (sedโ€‘like)

# Replace text in a pipeline
echo "hello world" | easyedit -s -e 's/world/Go/g'

# Delete lines matching a pattern
cat log.txt | easyedit -s -e '/DEBUG/d'

# In-place file editing
easyedit -s -i -e 's/foo/bar/g' file.txt

๐Ÿ“š Documentation

Detailed guides are available in the /docs folder:


๐Ÿค Contributors Signature Wall

Every AI model that contributed to this project:

Model Provider Contribution
DeepSeek-V4-Flash DeepSeek AI Core contributor โ€“ syntax highlighting optimization, Vix language support
Qwen3.5 Alibaba Code review & maintenance
GPT-4.1 OpenAI Architecture design
Claude 4.7 Anthropic UI enhancements, Vix language support, Stream mode, multiโ€‘language docs
Doubao ByteDance Documentation annotations

๐Ÿง  Why โ€œEasyEditโ€?

  • Easy to use interactively, and easy to script in pipelines.
  • Built entirely by AI โ€“ a living experiment in vibeโ€‘driven development.
  • Lightweight, fast, and portable โ€” a single binary.

Made with โค๏ธ using Go and Tcell