A custom AstroNvim v4+ configuration that turns Neovim into a full-featured, terminal-first IDE tuned for development and DevOps/SRE work.
This repository is the default Neovim setup shipped with
Proveasio — a tool that provisions and maintains
an Ubuntu (including Windows WSL2) terminal development environment. Proveasio installs this
config to ~/.config/nvim so you get a working IDE out of the box, but the repo also works
perfectly well as a standalone AstroNvim user configuration.
- Based on AstroNvim
^6with a curated set of AstroCommunity modules. - AI-assisted coding: GitHub Copilot (inline + completion source), CodeCompanion, and OpenCode integration.
- First-class Git & GitHub workflow: LazyGit, Fugitive, Diffview, CodeDiff, gh.nvim, Signify, GV.
- Deep language support (Go, Python, Ruby, Java/Spring Boot, Lua, Bash, Ansible, Terraform, Docker, Helm, YAML, JSON, Markdown).
- Seamless TMUX ↔ Neovim navigation and TMUX command execution.
- WSL2-aware clipboard handling and quality-of-life tweaks.
- Neovim
>= 0.10(a recent stable release is recommended). - A Nerd Font for icons (or set
icons_enabled = falseinlua/lazy_setup.lua). git, a C compiler, andtree-sitter-clifor Treesitter parsers.- Optional but recommended:
ripgrep,fd, a runningtmux, GitHub CLI (gh), and theopencodeCLI for the AI terminal integration. On WSL,win32yank.exeis used for clipboard.
Installing Proveasio provisions all of these dependencies for you.
Follow the Proveasio documentation. Proveasio installs Neovim and deploys this configuration automatically.
Back up any existing Neovim configuration and state first:
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bakClone this repository into your Neovim config directory and start Neovim (plugins install on first launch):
git clone https://github.com/Ziwi01/astronvim.git ~/.config/nvim
nviminit.lua # Bootstraps lazy.nvim, then loads lazy_setup + polish
lua/lazy_setup.lua # AstroNvim core spec, leader keys, lazy.nvim options
lua/community.lua # AstroCommunity module imports
lua/polish.lua # Final pure-Lua tweaks (autocmds, clipboard, OpenCode)
lua/plugins/ # Plugin overrides and custom plugin specs
The leader key is Space and the local leader is ,. The default colorscheme is astrodark.
Imported in lua/community.lua. Grouped by purpose:
- AI:
opencode-nvim,copilot-lua,codecompanion-nvim - Completion (blink):
blink-cmp-emoji,blink-cmp-git,blink-cmp-tmux - Colorscheme / UI:
nightfox-nvim,transparent-nvim,mini-icons,noice-nvim,vim-illuminate,indent-blankline-nvim,mini-indentscope,rainbow-delimiters-nvim,nvim-treesitter-context - Diagnostics:
trouble-nvim,tiny-inline-diagnostic-nvim - Editing:
multiple-cursors-nvim,auto-save-nvim,vim-move,treesj,conform-nvim,vim-easy-align,nvim-surround - Motion:
flash-nvim,leap-nvim - Git:
blame-nvim,openingh-nvim,codediff-nvim - Search / navigation:
telescope-zoxide,grug-far-nvim,nvim-bqf - LSP:
inc-rename-nvim,nvim-lsp-file-operations - Markdown / LaTeX:
markview-nvim - Terminal:
vim-tmux-navigator - Docker:
lazydocker - Scrolling:
neoscroll-nvim - Language packs:
lua,ansible,bash,docker,go,helm,java,spring-boot,markdown,python,ruby,json,terraform,yaml
- Relative + absolute line numbers, line wrapping,
autosign column, spell off. - Diagnostics with underline but no virtual text/lines (kept quiet by default).
- Auto project-root detection (
rooter.autochdir), ignoring thecopilotserver. - Format-on-save enabled globally (1s timeout), excluding
xml. - LSP codelens refresh, semantic tokens on, inlay hints off.
glmapped to open floating diagnostics.azure_pipelines_lsschema wiring for YAML files under.azuredevops/.- Colorscheme set to
astrodark.
- blink.cmp:
super-tabpreset with Copilot-aware keys:<Tab>accepts a Copilot inline suggestion (or navigates the menu / expands snippets).<S-Tab>dismisses the Copilot suggestion or navigates backward.<M-]>/<M-[>cycle to the next/previous Copilot suggestion.<Up>/<Down>are unbound in the completion menu.- Sources prioritized as
copilot > lsp > path > snippets > buffer, with score boosts for Copilot, emoji, and git providers.
- blink-copilot: larger inline suggestion length (
max_inline_len = 2000). - CodeCompanion: chat uses the
copilotadapter with modelclaude-sonnet-4.6.
- diffview.nvim (
dlyongemallofork): enhanced diff highlights, winbar info, Neogit integration; opens on:DiffviewOpen. - gh.nvim + litee.nvim: in-editor GitHub PRs, issues, reviews, threads, and commits (see keybindings below).
- vim-fugitive (
:G <git command>), lazygit.nvim (<Leader>gg), gv.vim (git graph), vim-signify (line-level git status), diffchar.vim / vim-dirdiff (precise + directory diffs; diffchar get/put pair on<Leader>gDg/<Leader>gDp).
Adds a CodeDiff "directory compare" workflow driven from the tree:
gmon a directory marks it as the diff source (toggles off if already marked; shown with a dimmed(diff source)tag).gdon another directory runs:CodeDiff dir <source> <target>.- Hidden/dotfiles are shown by default; window auto-expand width disabled.
- telescope-zoxide:
<Leader>zjumps to a zoxide directory and opens Neo-Tree there. - TMUX navigation with
Alt + Arrowkeys (vim-tmux-navigator). H/Lcycle buffers;<Leader>bDpicks a buffer to close.- Visual-mode
ppastes without overwriting the yank register.
- Custom ASCII-art dashboard header (easy to switch back to the stock AstroNvim art).
- Noice routes that silence "AutoSave" and "Config Change Detected" messages.
- Mason ensures
lua-language-server,stylua,debugpy, andtree-sitter-cliare installed.
- mdkite.nvim — live browser preview with Mermaid, KaTeX and scroll sync (
:MdKite,<Leader>Mptoggle,<Leader>Mrrefresh).
- Copilot enabled for
yamlandyaml.ansiblefiletypes. - bullets.vim, mkdx, markdown-plus.nvim, vim-table-mode — Markdown/list authoring.
mkdx maps live under
<Leader>M(Markdown group, shared with mdkite), table-mode under<Leader>T. bullets.vim's<leader>xcheckbox toggle is dropped (use<Leader>Mt). - fzf + fzf.vim — fuzzy finding.
- vim-better-whitespace — trims trailing whitespace (blacklisted for many UI filetypes).
- lsp_signature.nvim — signature help while typing.
- goto-preview — preview definitions/implementations in floating windows (
gp*). - vimux — run commands in a TMUX split.
- ferret — project search/replace, in the Search/Replace group:
<Leader>sa:Ack,<Leader>sAack word under cursor,<Leader>sl:Lack,<Leader>sr:Acks. - treesj toggle is on
<Leader>J(astrocommunity's<Leader>mclashes with multiple-cursors).
Leader is Space.
| Key | Action |
|---|---|
L / H |
Next / previous buffer |
<Leader>bD |
Pick a buffer to close |
<A-Arrows> |
Navigate TMUX/Vim splits |
Needs OpenCode v2 (opencode.nvim tracks main). Prompts go to the most recently
updated OpenCode session for Neovim's working directory.
| Key | Action |
|---|---|
<C-.> |
Toggle the OpenCode tmux pane (normal/terminal) |
<Leader>Ot |
Toggle the OpenCode tmux pane |
<Leader>ON |
Open another OpenCode pane in this directory |
<Leader>Oa |
Ask about the cursor position / selection |
<Leader>O+ |
Ask, pre-filled with @buffer (normal) or @this (visual) |
<Leader>Oe |
Explain the code under the cursor |
<Leader>Os |
Select a prompt or OpenCode command |
| Key | Action |
|---|---|
<Leader>gg |
LazyGit |
<Leader>z |
Zoxide picker |
Grouped under <Leader>G (Github commands):
- Pull Requests
<Leader>Gp*: open, close, details, expand/collapse, refresh, pop-out, open-to. - Commits
<Leader>Gc*: open-to, close, expand/collapse, pop-out. - Issues
<Leader>Gip: preview issue. - Reviews
<Leader>Gr*: begin, submit, close, delete, expand/collapse. - Threads
<Leader>Gt*: create, next, toggle. <Leader>Gl: toggle the litee panel.
- Restores the cursor to its last position when reopening a file.
- Treats
zshfiles with Bash Treesitter highlighting; forcesJenkinsfiletogroovy. - On WSL, routes the system clipboard through
win32yank.exe(avoids OSC 52 leakage from TUI apps like OpenCode running in the built-in terminal). - Runs OpenCode in a tmux pane (so ccmux can track it), or in a right-hand Snacks terminal outside tmux. Opens one automatically when no OpenCode service is running.
- Add or remove community modules in
lua/community.lua. - Add plugin specs or overrides in
lua/plugins/(any.luafile returning a LazySpec is loaded). - Put final pure-Lua tweaks (autocmds, filetypes, globals) in
lua/polish.lua.
- Built on AstroNvim and AstroCommunity.
- Maintained as part of Proveasio by Eryk 'Ziwi' Kozakiewicz.
