A personal Neovim config for Neovim 0.12+. The focus is a bare-bones UI that leans on native features, supplemented by a small set of plugins, to deliver a classic editing experience with a modern touch.
Important
Requires Neovim 0.12 or newer (built on the native vim.pack API).
Most features work without the optional tools below. The exception is
mini.pick, whose file and grep pickers need ripgrep or fd.
On Windows, prefer winget or scoop. On Linux, use your distro's package
manager (apt, dnf, pacman, ...).
- wl-clipboard for clipboard on Wayland (
wl-copy/wl-paste) - xclip or xsel for clipboard on X11 (Neovim auto-detects either)
- win32yank for clipboard on Windows and WSL
- fd and ripgrep for the
mini.pickpickers - zathura (Linux) or SumatraPDF (Windows) for PDF preview of LaTeX and Typst documents
- pwsh.exe if you want to use PowerShell as the shell on Windows
- fzf only if you re-enable the
fzf-luafallback
- Built on the native
vim.packplugin manager (Neovim 0.12+) with a custom lazy-loader (lua/lloader.lua) - Heavy use of native features:
vim.lsp.completion,vim.lsp.inline_completion, andvim.snippet - Custom JSON snippets in
snippets/, compatible with VS Code-style snippet formats and loaded through nativevim.snippet - Greek and English spell checking by default, with a custom
vim.ui.selectpicker for suggestions - Langmap for typing Greek without switching keyboard layouts
- Language servers for Python (
basedpyright,ruff), Rust (rust_analyzer), Typst (tinymist), LaTeX (texlab), Lua (lua_ls), C/C++ (clangd), CMake, Julia, Bash, YAML, TOML, and Copilot inline completion - Custom statusline and minimal UI for a distraction-free experience
- Autocommands and a working ftplugin system (
after/ftplugin/) - Custom
efmlanguage server wiring formatters and linters for various languages - LaTeX and Typst PDF preview:
texlabforward/inverse search withzathuraon Linux and SumatraPDF on Windows;tinymistPDF export for Typst - Custom Treesitter queries for highlighting Lua, LaTeX, Typst, and BibTeX
mini.pickintegration for fast file, grep, and git-status pickers- Bundled
melangecolorscheme
Back up your existing config, plugins, data, and cache before installing. Then
move them aside (for example, rename them to <folder>.bak), clone this repo
to the config path, and open Neovim. Plugins and Treesitter parsers install
automatically on first launch. Open :Mason to install any language servers or
tools you need.
# required
mv ~/.config/nvim{,.bak}
# optional but recommended
mv ~/.local/share/nvim{,.bak}
mv ~/.local/state/nvim{,.bak}
mv ~/.cache/nvim{,.bak}Then:
git clone https://github.com/DimitrisDimitropoulos/nvim.git ~/.config/nvim
nvim# required
Move-Item $env:LOCALAPPDATA\nvim $env:LOCALAPPDATA\nvim.bak
# optional but recommended
Move-Item $env:LOCALAPPDATA\nvim-data $env:LOCALAPPDATA\nvim-data.bakThen:
git clone https://github.com/DimitrisDimitropoulos/nvim.git $env:LOCALAPPDATA\nvim
nvimRun :checkhealth and install any missing dependencies, such as wl-clipboard
or xclip/xsel, win32yank, pwsh.exe, rg, and fd.
Managed with vim.pack:
- neovim/nvim-lspconfig
- lewis6991/gitsigns.nvim
- nvim-treesitter/nvim-treesitter
- nvim-mini/mini.splitjoin
- nvim-mini/mini.pick
- nvim-mini/mini.extra
- williamboman/mason.nvim
- rafamadriz/friendly-snippets
Included in the repo, not fetched as plugins:
melangecolorscheme incolors/melange.lua(originally from savq/melange-nvim)
Optional, currently disabled:
- ibhagwan/fzf-lua (fallback picker; uncomment in
lua/plugins.luaand requiresfzf)

