qwe is a small, opinionated modal text editor built with Go with some
batteries included like Tree-sitter integration for better syntax highlighting,
basic LSP support, Ollama integration, and more.
Note
This is a work in progress and built specifically for personal use. Do not expect miracles. I will add features as I need them.
I made this editor to learn about modal text editors and have a place to experiment with different ideas. It is not intended to emulate any existing editor, even though it shares some similarities with some of them like Vim in particular.
Most of the keybindings are based on Vim, but there are some differences.
qwe-preview.mov
Features
- Modal Design (Insert/Normal/Visual/Command)
- Tree-sitter Syntax Highlighting
- LSP Support (Hover, Autocomplete, Definition, Diagnostics)
- Fuzzy Finder (Files, Buffers, Warning Quickfix)
- Jumplists (Normal/Visual)
- Multi-Cursor (Normal/Visual)
- Text Formatting (Normal/Visual)
- Ollama Support (using local models)
Configuration
Instead of having a configuration file, the editor uses command-line flags:
-colors: Show available colors-dev: Enable development mode-file-check-interval: File check interval (default 2s)-fuzzy-height: Height of fuzzy finder (default 8)-gutter-width: Width of the gutter (default 7)-info: Show file associations and LSP info-leader: Leader key (default "\")-log: Enable logging to file-log-path: Path to log file (default "/tmp/qwe-editor-debug.log")-num-logs: Number of logs in debug window (default 10)-ollama-interval: Ollama check interval (default 5s)-ollama-model: Ollama model (default "qwen2.5-coder:latest")-ollama-url: Ollama URL (default "http://localhost:11434")-tab-width: Default tab width (default 4)-version: Show version
Download pre-built binary
Download a pre-built binary from GitHub releases.
Important
macOS users will need to remove the quarantine bit from the binary before
running it with xattr -d com.apple.quarantine qwe-macos
Build from source
- Clone the repository
- Run
make -B - Run
./qweto start the editor - Or run
make installto install the editor
Release process
- Tag a new version with
git tag vX.Y.Z - Push the tag with
git push origin --tags - Wait for the GitHub Actions workflow to finish