https://github.com/ravsii/minigun
Terminal-based text editor, nvim/helix-like
https://github.com/ravsii/minigun
terminal-based text-editor vim
Last synced: 4 months ago
JSON representation
Terminal-based text editor, nvim/helix-like
- Host: GitHub
- URL: https://github.com/ravsii/minigun
- Owner: ravsii
- Created: 2023-10-23T19:26:20.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-11-28T19:06:00.000Z (over 2 years ago)
- Last Synced: 2025-08-07T00:47:55.709Z (11 months ago)
- Topics: terminal-based, text-editor, vim
- Language: Go
- Homepage:
- Size: 5.87 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Minigun
Just a fun project. `Minigun` because it _supposted_ to be fast, not sure if it will be lol.
It's not usable at the moment, but I hope it will be one day...
It aims to be a battaries-included terminal text editor. Ideally I'd like to switch off VSCode, but `nvim` is just not for me and `helix` is being released like once a year nowadays.
## Glossary
- `Tab` - usually what is called a buffer in other editors, but we'd like to keep it simple.
## Status
Implementation order is "when needed". Literally everything is WIP and could be changed any minute.
### Done
- [x] Debug info
- [x] `.log` file
- Defaults to `$HOME/.config/minigun/debug.log`, can be overwritten by using `-logfile`
- [x] Status bar - like modes and unlike nvim\helix, status bar is global and not per-tab for easier inspection of the current "state"
- [x] Current Mode
- [x] Cursor Line / Position
- [x] Commands
- [x] Basic Components Library - We need some kind of a UI components library, because rn everything is hardcoded so its not good.
- [x] Box
- [x] Text Box
### Bugs
- [ ] Cursor appears on empty lines
### Work in Progress
- [ ] Modes - Unlike in helix/nvim where mode is usually per-tab, minigun modes are global and represent the current "state" of the editor
- [x] View
- [ ] Insert Mode
- [ ] `i`, `I`, `a`, `A` will do for now
- [x] Command Mode (`:` from vim)
- [ ] `wq`
- [ ] Although we don't have any _errors_, exclamations mark support would be nice for forced stuff like `:wq!`
- [x] Replace Mode (single char, `r` from vim)
- [ ] File / Workspace mode (kind of file explorer)
- [ ] Still thinking about select-like mode. tbh I like `helix`'s approach more. (select-action rather than `nvim`'s action-select)
- [ ] Config options
- [ ] Migrate to `toml`
- [ ] Global / per project config
- [ ] Line Numbers
- [x] `keybinds.yaml`
### "Actually usable"-level features
- [ ] Themes
- [ ] Nerd font icons or something
- [ ] Multiple windows / tabs
- Probably the easiest of all these
- [ ] Tree sitter
- [ ] LSP (multiple for the same lang)
- `helix` kind of has the best LSP integration out of the box, but you still need to configure it sometimes, which is very painful if you haven't done it before.
- [ ] Formatters
- [ ] Plugins (ideally no lua)
## Preview (current WIP version)

## List of Commands
[here](https://github.com/ravsii/minigun/blob/main/internal/command/commands.go)