Skip to content

About

Cross-platform C++ IDE in Neovim. CMake-first. Targets Android, iOS, Linux, Windows, macOS.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

1 watching

Forks

Repository files navigation

nvim-config logo

nvim-config

Cross-platform C++ IDE in Neovim. CMake-first. Android · iOS · Linux · Windows · macOS

CI Neovim Last Commit

LazyVim Docs · Neovim Docs · Remote Dev Guide

✨ Features

  • CMake-first C++ workflow — configure, build, run, and test through native CMake Presets
  • Full IDE stack — clangd LSP, DAP debugging, and Neotest
  • In-editor reference search — cppreference, StackOverflow, GitHub, and AI search one keypress away
  • Remote-ready — persistent tmux + Neovim sessions over SSH (master guide)
  • Reproducible — locked plugins, stylua CI, and a prebuilt Docker image

🚀 Install

macOS

brew install neovim git cmake ninja fzf fd ripgrep lazygit
git clone https://github.com/e-gleba/nvim-config.git ~/.config/nvim
nvim

Linux

sudo apt update && sudo apt install -y neovim git cmake ninja-build fzf fd-find ripgrep
# lazygit: https://github.com/jesseduffield/lazygit#ubuntu
git clone https://github.com/e-gleba/nvim-config.git ~/.config/nvim
nvim

Windows (PowerShell)

# tools
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
scoop install neovim git cmake ninja llvm fzf fd ripgrep lazygit

# env (run once)
[Environment]::SetEnvironmentVariable("LLDB_USE_NATIVE_PDB_READER", "1", "User")
git config --global core.autocrlf false
git config --global core.eol lf

# config
git clone https://github.com/e-gleba/nvim-config.git $env:LOCALAPPDATA\nvim
nvim

Warning

Do not install Neovim nightly on macOS — it causes file-reload freezes. See LazyVim #1581.

Docker (Linux amd64 + arm64)

docker run -it --rm \
  -v $(pwd):/workspace \
  -v ~/.config/nvim:/root/.config/nvim \
  ghcr.io/e-gleba/nvim-config/nvim-ci:latest

✅ First run

nvim --headless -V1 -c 'checkhealth' -c 'qa'   # verify
nvim --headless "+Lazy! sync" +qa              # force sync

🔧 C++ workflow

clangd needs compile_commands.json at project root:

ln -s build/compile_commands.json compile_commands.json

Or in CMakeLists.txt:

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

This config uses cmake-tools.nvim with native CMake Presets support.

⚡ Most useful

Press <leader> and follow the which-key groups. Starting points:

Keys What
<leader>oa / <leader>os Ask OpenCode about cursor context / open action picker
go + motion Send range to OpenCode (dot-repeatable)
<leader>ckp → <leader>ckg → <leader>ckb Pick preset → generate → build
<leader>ckd Debug active target via codelldb
<leader>bj Pick buffer by letter hint
s Flash jump (Vimium-style labels)
<leader>sR Search cppreference for word under cursor

Mini-loop for CMake: preset, generate, build, debug — all under <leader>ck. Full maps live in code; which-key is the reference.

⌨️ Keymaps

Keymaps are declared in lua/config/keymaps.lua and individual plugin specs. Discover them in-editor via which-key — press <leader> and follow the groups. The code is the source of truth; this file intentionally does not duplicate it.

🗂️ Layout

Stock LazyVim conventions: init.lua bootstraps, lua/config/ holds options/keymaps/autocmds, lua/plugins/ holds one spec per plugin. The repository tree is the source of truth.

🔁 CI & Release

Workflow Trigger Result
Lint Push / PR on lua/**, init.lua, lockfiles Pulls ghcr.io/.../nvim-ci:latest and runs stylua --check. Falls back to local build if image is absent.
Publish Docker Manual dispatch, or push to main with Dockerfile changes Builds and pushes ghcr.io/.../nvim-ci:latest.
Release Manual dispatch with version tag Creates GitHub Release with auto-generated notes, then builds and pushes a tagged Docker image (v1.2.3).

📄 License

MIT

shaken at golden hour 🍸

About

Cross-platform C++ IDE in Neovim. CMake-first. Targets Android, iOS, Linux, Windows, macOS.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages