A lightweight, full-featured Neovim IDE for Python, Deno TypeScript/JavaScript, Elixir, Markdown, and technical writing. The configuration favours fast native features, visible diagnostics, discoverable Which-key mappings, and a comfortable Catppuccin Macchiato interface for Kitty and tmux.
- Jedi Language Server provides completion, navigation, signatures, and hover documentation.
- Pyright provides
standardtype checking without duplicating Jedi's UI features. - Ruff provides linting, import organisation, and formatting.
- IPython cells work through vim-slime and tmux.
- Jupyter notebooks are edited as Python percent-format buffers through Jupytext.
- Deno's language server provides completion, navigation, type checking, and lint diagnostics.
- Deno formatting runs through conform.nvim.
- Attachment is limited to plain
typescriptandjavascriptfiles in Deno projects; React filetypes are intentionally excluded.
- ElixirLS provides completion, navigation, compiler diagnostics, and Dialyzer analysis.
- Mix formatting runs automatically through conform.nvim.
- Credo diagnostics are added when the current Mix project includes Credo.
- markdown-oxide provides Markdown language intelligence.
- markdownlint-cli2 reports Markdown style problems.
- render-markdown.nvim renders Markdown inside Neovim.
- Marp preview is available for saved slide decks.
- Prose buffers enable wrapping and British English spell checking.
- Piper TTS can read a word, line, paragraph, selection, or file.
- actionlint checks files under
.github/workflows/. - Tree-sitter highlighting, indentation, folding, and sticky code context cover the configured languages.
- Vlime supports Common Lisp, csvview.nvim handles tabular data, and journal.nvim manages notes.
- Git workflows use Fugitive, Gitsigns, and Diffview.
- Ollama provides optional local LLM completion.
LSP servers and external linters all publish through Neovim's diagnostic API. Every severity is retained and shown through:
- coloured
E,W,I, andHgutter signs; - coloured line numbers and underlines;
- statusline counts such as
E:2@14, including the first affected line; - a non-focus-stealing popup when the cursor rests on an affected line;
- navigable location and quickfix lists containing file, line, column, source, rule code, and message.
Virtual text is disabled so diagnostics do not displace source code. K opens
rendered LSP documentation, while gh opens diagnostics for the current line.
| Mapping | Action |
|---|---|
]d / [d |
Next / previous diagnostic |
<leader>ln / <leader>lp |
Next / previous diagnostic |
<leader>le / <leader>lE |
Next / previous error |
<leader>lw / <leader>lW |
Next / previous warning |
<leader>lh or gh |
Show diagnostics on the current line |
<leader>ld |
List diagnostics for the current buffer |
<leader>lD |
List known diagnostics across loaded buffers |
Each jump opens the corresponding diagnostic message. The entire group is
discoverable under <leader>l in Which-key.
Required:
- Neovim 0.11.3 or newer;
- Git and curl;
- a C compiler for Tree-sitter parsers (the Tree-sitter CLI is not required);
- Node.js for Pyright and markdownlint-cli2—the configuration also discovers asdf Node installations;
- Python for Python tooling;
- Erlang and Elixir for ElixirLS and Mix workflows.
Useful optional tools:
- ripgrep for FZF-powered search and completion;
- IPython, tmux, and Jupytext for the Python REPL/notebook workflow;
- Marp CLI for slide preview;
- Piper, a supported audio player, and the Alba voice model for TTS;
- Ollama for local LLM completion;
jqfor the explicit JSON formatting command;- Universal Ctags for Tagbar;
- a Nerd Font for optional filetype icons.
- Back up an existing configuration if necessary:
mv ~/.config/nvim ~/.config/nvim.backup- Clone this repository:
git clone https://github.com/ai-mindset/init.vim ~/.config/nvim- Start Neovim normally:
nvimOn a fresh installation, the configuration downloads vim-plug, installs plugins,
and reloads itself. Mason then installs these tools from the central
mason_packages list:
- actionlint
- jedi-language-server
- pyright
- ruff
- markdown-oxide
- markdownlint-cli2
- deno
- elixir-ls
Tree-sitter installs its configured parsers independently. ElixirLS may perform a longer one-time compilation when first opened after an upgrade.
Press <leader> (Space) and pause briefly to browse available mappings with
Which-key.
| Mapping | Action |
|---|---|
K |
LSP hover documentation |
<leader>ca |
LSP code action |
<leader>rn |
Rename symbol |
<leader>== |
Format file or visual selection |
<leader>f |
Find files with FZF |
<leader>mp |
Toggle Marp preview |
<leader>mr |
Toggle in-editor Markdown rendering |
<leader>tw/tc/tp/tf |
Speak word / line / paragraph / file |
<leader>tv |
Speak visual selection |
<F8> |
Toggle Tagbar |
Deno commands are under <leader>d, Elixir commands under <leader>e, Git
commands under <leader>g, and spelling commands under <leader>s.
For local LLM capabilities, you need to install and set up Ollama:
# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh
# Start the Ollama server
ollama serve
# In another terminal, pull the mistral model
ollama pull mistralYou can also start and stop the Ollama server directly from Neovim using:
<leader>os- Start Ollama Server<leader>ox- Stop Ollama Server
Install Piper and place en_GB-alba-medium.onnx in either:
~/.local/share/piper-voices//usr/share/piper-voices/
The configuration looks for the Piper executable on PATH, in ~/.local/bin,
~/.local/share/piper, or ~/.venv/bin. Playback uses the first available
command among aplay, pw-play, afplay, and ffplay.
Catppuccin Macchiato uses true colour and explicit high-contrast gutter, ruler,
cursor-line, cursor-column, and diagnostic highlights. Kitty works directly;
configure tmux separately to advertise tmux-kitty and RGB colour.
Tree-sitter context keeps the enclosing function or scope visible at the top of long files. Hover, signature, completion-documentation, diagnostic, and Markdown windows use bordered floating windows.
The bundled .ctags file defines tags for Elixir, JavaScript, TypeScript, and
Zig. Copy or link it to ~/.ctags if your Ctags installation does not load the
repository file automatically. Press <F8> to toggle Tagbar.
- Mason tools: edit
mason_packages. - LSP clients: edit
lsp_serversand theirvim.lsp.configblocks. - Linters: edit
linters_by_ftandlint_buffer. - Formatters: edit
formatters_by_ftin the conform.nvim setup. - Keybindings: edit the
wk.addtables. - Theme: adjust the Catppuccin setup and
apply_accessible_ui_highlights.