My personal Neovim configuration, built from the ground up.
NVIM v0.11.2 | LuaJIT 2.1.1744318430 | Lua 5.1
# Backup existing config (optional but recommended)
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim{,.bak}
mv ~/.local/state/nvim{,.bak}
mv ~/.cache/nvim{,.bak}
# Clone and install
git clone https://github.com/cyrillus31/nvim-config.git ~/.config/nvim && nvimgit clone https://github.com/cyrillus31/nvim-config.git ~/.config/new-nvim-config
echo "alias newnvim='NVIM_APPNAME=new-nvim-config nvim'" >> ~/.bashrc
source ~/.bashrc
newnvim./run_in_container.sh| Tool | Purpose |
|---|---|
| neovim | Editor |
| git | Version control |
| ripgrep | Fast grep (Telescope) |
| fzf | Fuzzy finder |
| make | Build tools (Telescope-fzf-native) |
| npm | Package manager (markdown-preview) |
- Plugin Management — Lazy.nvim with auto-updates
- Language Servers — LSP via nvim-lspconfig + Mason
- Smart Formatting — conform.nvim with auto-format on save
- Fuzzy Search — Telescope with hidden files, globs, and custom queries
- Syntax Highlighting — Treesitter with context awareness
- Debugging — nvim-dap for Go and Python
- Git Integration — gitsigns, oil.nvim
- Quick Access — Harpoon2, buffers, recent files
- Yandex Integration — Arcadia-aware LSP and formatters
| Key | Action |
|---|---|
Ctrl+h/j/k/l |
Move between windows |
Tab / Shift+Tab |
Next/previous tab |
j / k |
Move by visual lines |
[d / ]d |
Previous/next diagnostic |
| Key | Action |
|---|---|
<leader>sh |
Help tags |
<leader>sf |
Find files |
<leader>sg |
Live grep |
<leader>sw |
Grep word under cursor |
<leader>sd |
Diagnostics |
<leader>sr |
Resume last search |
<leader>s. |
Recent files |
<leader><leader> |
Buffers |
<leader>sa |
All files (hidden) |
<leader>saf |
All files |
<leader>sag |
Grep all (hidden) |
<leader>sq |
Grep with globs |
| Key | Action |
|---|---|
<leader>fe |
NvimTree |
<leader>of |
Oil (current dir) |
<leader>pv |
Oil (parent dir) |
| Key | Action |
|---|---|
<space>sq |
Search + grep with file filters |
<leader>x |
Source current file |
<leader>vr |
Reload all buffers |
<leader>vs |
Save all buffers |
| Key | Action |
|---|---|
<Esc> |
Clear search highlight |
<space>f |
Format buffer |
<space>? |
Which-key help |
lua/
├── config/ # Core settings
│ ├── options.lua # Neovim options
│ ├── lazy.lua # Plugin manager
│ ├── keymappings.lua # Keybindings
│ ├── autocommands.lua
│ ├── commands.lua
│ └── diagnostic.lua
├── plugins/ # Plugin configurations
├── yandex/ # Yandex/Arcadia specific
└── extensions/ # External tools (non-Yandex)
| Document | Description |
|---|---|
| Configuration Guide | Overview of config structure |
| Lua Basics | Lua introduction for beginners |
| Neovim Cheatsheet | Key bindings and commands |
| Full Cheatsheet | Extended reference |
The configuration supports two modes:
Standard Neovim setup without Yandex tools.
Loaded automatically when the ya command is available:
- Yandex LSP configurations (gopls, pyright)
- YaFormatter integration
- Arcadia-aware root markers
- Nvim-Treesitter
- Lazy (Package Manager)
- Status Line (Lualine or Mini)
- Mason.nvim: LSP/DAP/Linter/Formatter package manager
- Formatting (conform.nvim)
- Autocompletion (Blink.cmp)
- Telescope with key maps
- Harpoon (v2)
- Floating terminal (FTerm, nvterm)
- File tree managers (Oil, NvimTree, Neo-Tree)
- Markdown-preview
- Debugging (nvim-dap-ui) — Go, Python
- Which-key
- Colorschemes
- Autopairs, gitsigns, indent-blankline
- Startup screen (dashboard-nvim)
- Filetype plugins: python.lua, go.lua
- Custom scripts
- Implement profiles
- Yandex integration improvements
- Copilot / AI coding tools
This is a personal configuration, but suggestions and improvements are welcome via issues or PRs.
Based on Kickstart.nvim patterns and best practices.