mirror of
https://github.com/boxpositron/absolute-vim.git
synced 2026-10-24 05:23:19 +00:00
a0adcf2224
Phase 1 deleted the old README, which listed Telescope, nvim-cmp and other removed plugins. The new one covers install, layout, the current plugin stack, theme sync and the main keymaps.
82 lines
4.1 KiB
Markdown
82 lines
4.1 KiB
Markdown
# Absolute VIM
|
|
|
|
A Lua Neovim configuration managed by [lazy.nvim](https://github.com/folke/lazy.nvim). It lives at `.config/nvim` in [absolute-dotfiles](https://github.com/boxpositron/absolute-dotfiles) as a submodule, and works on its own too.
|
|
|
|
## Install
|
|
|
|
Requirements: Neovim 0.12 or newer, git, a Nerd Font, `ripgrep` and `fd` for the picker, a C compiler for treesitter parsers, and optionally `lazygit` and ImageMagick (for image previews).
|
|
|
|
```bash
|
|
git clone https://github.com/boxpositron/absolute-vim ~/.config/nvim
|
|
nvim # lazy.nvim bootstraps itself and installs the pinned plugins from lazy-lock.json
|
|
```
|
|
|
|
Plugin versions are pinned in `lazy-lock.json`. Update them with `:Lazy update`, then commit the lockfile.
|
|
|
|
## Layout
|
|
|
|
```
|
|
init.lua -> require("absolute")
|
|
lua/current-theme.lua default colorscheme
|
|
lua/absolute/
|
|
core/ options, leader, colorscheme sync and the theme registry
|
|
lazy.lua lazy.nvim bootstrap; imports every spec in plugins/
|
|
plugins/ one plugin spec per file
|
|
after/ the matching configuration, required from each spec's config
|
|
remap.lua editor keymaps
|
|
lsp/, helpers/, utils/ extra LSP setup, project helpers, environment detection
|
|
docs/superpowers/ design spec and plan for the 2026 modernization
|
|
```
|
|
|
|
To add a plugin, create `plugins/<name>.lua` returning its spec, and put its setup in `after/<name>.lua`.
|
|
|
|
## What's inside
|
|
|
|
| Area | Plugins |
|
|
|---|---|
|
|
| Picker, explorer, notifications, input | snacks.nvim (also `bigfile` and `quickfile`) |
|
|
| Completion | blink.cmp with friendly-snippets; LSP, path, snippet and buffer sources, plus cmdline completion |
|
|
| LSP and formatting | nvim-lspconfig, mason (ts_ls, lua_ls, rust_analyzer, clangd, tailwindcss, svelte, astro, biome and more), conform |
|
|
| Syntax | nvim-treesitter, treesitter-context, treesj, tree-sitter-ghostty |
|
|
| Git | gitsigns with current-line blame, mini.diff, lazygit in toggleterm |
|
|
| Diagnostics and lists | trouble, todo-comments, nvim-bqf |
|
|
| Debugging | nvim-dap and dap-ui |
|
|
| Languages and tools | flutter-tools, venv-selector, apple-pkl, tailwind-sorter, markview, image.nvim, nvim-silicon |
|
|
| UI | lualine, incline, indent-blankline, smear-cursor, highlight-colors, flash, mini |
|
|
| Themes | tokyonight (default), catppuccin, rose-pine, nightfly |
|
|
|
|
The 2026 modernization replaced Telescope with the snacks picker, nvim-cmp with blink.cmp, and nvim-notify and dressing with snacks, and removed abandoned and AI plugins. The spec and plan are in `docs/superpowers/`.
|
|
|
|
## Themes
|
|
|
|
`<leader>cs` opens a colorscheme picker. Changing the colorscheme also switches Ghostty and WezTerm to the matching theme, using the mappings in `core/theme-registry.lua`. The startup colorscheme is set in `lua/current-theme.lua`.
|
|
|
|
## Keymaps
|
|
|
|
The leader is Space. Highlights:
|
|
|
|
| Keys | Action |
|
|
|---|---|
|
|
| `<C-p>` | Find files |
|
|
| `<leader>gf` / `<leader>pr` | Git files / recent files |
|
|
| `<leader>ps` / `<leader>sb` | Live grep / grep the word under the cursor |
|
|
| `<leader>pf` / `<leader>cf` | File explorer at the cwd / at the current file's directory |
|
|
| `<leader>pt` / `<leader>tt` | TODO comments in the picker / in Trouble |
|
|
| `gd` `gi` `gt` / `<leader>cr` | Definitions, implementations, type definitions / references |
|
|
| `K` / `<leader>gh` | Hover docs / signature help |
|
|
| `<leader>rn` / `<leader>ca` / `<leader>f` | Rename / code actions / format |
|
|
| `<leader>rs` | Restart LSP |
|
|
| `<leader>td` `<leader>ts` `<leader>tq` | Trouble: diagnostics, symbols, quickfix |
|
|
| `<leader>gs` | lazygit |
|
|
| `<leader>db` | Toggle a breakpoint |
|
|
| `<leader>m` | Split or join the node under the cursor (treesj) |
|
|
| `<leader>u` | Undo tree |
|
|
| `<leader>sr` | Replace the word under the cursor |
|
|
| `<leader>y` / `<leader>p` | Yank to the system clipboard / paste without overwriting the register |
|
|
| `<leader>gr` | Run a shell command in the git root |
|
|
| `<leader>vs` | Select a Python virtualenv |
|
|
| `<leader>sc` | Screenshot the selection with Silicon |
|
|
| `<leader>?` | Search all keymaps |
|
|
|
|
blink.cmp uses its default keymap preset: `<C-space>` opens the menu, `<C-y>` accepts, `<C-n>` and `<C-p>` move through items.
|