Dotfiles/docs/md/editors.md

160 lines
4.1 KiB
Markdown

# Editors
Three editors are configured and deployed by the `shell` component: Neovim (primary), Micro (lightweight), and Yazi (terminal file manager).
---
## Neovim
Config lives in `nvim/`. Deployed to `~/.config/nvim/` during `shell` module install.
### Plugin Manager
[vim-plug](https://github.com/junegunn/vim-plug) is auto-installed on first launch. Run `:PlugInstall` after the first start to fetch all plugins.
### Plugins
#### Language & Completion
| Plugin | Purpose |
|--------|---------|
| `neoclide/coc.nvim` | LSP client, auto-completion, diagnostics |
| `rust-lang/rust.vim` | Rust filetype support |
| `nvim-telescope/telescope.nvim` | Fuzzy finder (files, grep, LSP symbols) |
#### UI
| Plugin | Purpose |
|--------|---------|
| `vim-airline/vim-airline` | Status bar |
| `vim-airline/vim-airline-themes` | Airline theme collection |
| `junegunn/goyo.vim` | Distraction-free writing mode |
| `voldikss/vim-floaterm` | Floating terminal windows |
| `norcalli/nvim-colorizer.lua` | Inline colour preview |
#### Navigation
| Plugin | Purpose |
|--------|---------|
| `preservim/nerdtree` | File tree sidebar |
| `junegunn/fzf` + `fzf.vim` | Fuzzy file/buffer search |
| `elihunter173/dirbuf.nvim` | Editable directory buffer |
#### Snippets
| Plugin | Purpose |
|--------|---------|
| `SirVer/ultisnips` | Snippet engine |
| `honza/vim-snippets` | Snippet collection |
#### Database
| Plugin | Purpose |
|--------|---------|
| `tpope/vim-dadbod` | Database query runner |
| `kristijanhusak/vim-dadbod-ui` | GUI for vim-dadbod |
#### Markdown
| Plugin | Purpose |
|--------|---------|
| `tadmccorkle/markdown.nvim` | Enhanced Markdown support |
| `ellisonleao/glow.nvim` | Markdown preview in terminal |
#### Theme
| Plugin | Purpose |
|--------|---------|
| `the_miro/cyberqueer.nvim` | CyberQueer colour scheme (local) |
### CoC LSP Settings
`nvim/coc-settings.json` configures language servers for:
- Python (pyright)
- Lua (lua-language-server)
- Rust (rust-analyzer via rust.vim)
### CyberQueer Airline Theme
`nvim/cyberqueer-airline.vim` — a custom vim-airline theme using the CyberQueer palette, providing hot-pink/violet segments in the status bar.
---
## Micro
A modern, keyboard-friendly terminal editor. Config in `micro/`. Deployed to `~/.config/micro/`.
### Settings (`settings.json`)
| Setting | Value | Effect |
|---------|-------|--------|
| `colorscheme` | `miro-darcula` | Custom dark colour scheme |
| Various | — | File-type-specific settings |
### Keybindings (`bindings.json`)
Custom keybindings extending Micro's defaults. See `micro/bindings.json` for the full list.
### Colour Schemes
`micro/colorschemes/` contains additional colour scheme definitions including the custom `miro-darcula` scheme.
### Plugins (`micro/plug/`)
| Plugin | Purpose |
|--------|---------|
| `filemanager` | Sidebar file browser |
| `mlsp` | Language Server Protocol integration |
---
## Yazi
A fast, feature-rich terminal file manager written in Rust.
Config in `yazi/`. Deployed to `~/.config/yazi/`.
### Configuration Files
| File | Purpose |
|------|---------|
| `yazi.toml` | Core settings (openers, file rules, display) |
| `theme.toml` | CyberQueer colour palette |
| `keymap.toml` | Keybindings (17 KB, extensively customised) |
### Theme
`yazi/theme.toml` maps the CyberQueer colours to Yazi's theme variables. It is a colour-substitution target in `apply-theme.sh`, so it updates automatically when you change the palette.
### File Openers
| File type | Opens with |
|-----------|-----------|
| `*.svg` | Inkscape |
| Text files | Neovim |
| Everything else | `xdg-open` (system default) |
### Display Options
- Hidden files visible by default
- Symlinks shown and followed
- Three-pane layout (parent, current, preview)
---
## Launching Editors
From the Hyprland desktop:
| Shortcut | Action |
|----------|--------|
| `Super + M` | Open Micro in Kitty |
| `Super + E` | Open Yazi in Kitty |
| `Super + T` then `nvim` | Neovim in terminal |
From the shell:
```bash
nvim file.rs # Neovim
micro config.yaml # Micro
yazi # Yazi file manager
```