My personal Neovim configuration for Linux — full-featured IDE setup using lazy.nvim.
- Keep the setup small and understandable while still covering daily IDE needs.
- Use sensible editing defaults: line numbers, relative numbers, true color, 2-space indentation, and mouse support.
- Favor fast navigation with Neo-tree for project browsing and Telescope for fuzzy finding.
- Keep language support practical with LSP, Treesitter, Mason, and nvim-cmp.
- Preserve a smooth completion workflow by keeping
Tabfornvim-cmpand moving GitHub Copilot accept to<C-l>. - Stick to a clean, consistent UI with Tokyo Night and lualine instead of heavy visual customization.
- Neovim >= 0.11
- Git
- A Nerd Font for icons
ripgrepfor Telescope live grep
SSH:
git clone git@github.com:zkm/nvim-config.git ~/.config/nvimHTTPS:
git clone https://github.com/zkm/nvim-config.git ~/.config/nvimnvimOn first launch, lazy.nvim will bootstrap itself and install the configured plugins.
Open a file to get syntax highlighting, completion, and LSP features for supported languages.
If you open Neovim with a directory path, Neo-tree opens automatically:
nvim ~/.config/nvim~/.config/nvim/
├── init.lua
├── lazy-lock.json
└── lua/
└── plugins/
├── init.lua
├── cmp.lua
├── copilot.lua
├── lsp.lua
├── lualine.lua
├── neotree.lua
├── telescope.lua
├── theme.lua
└── treesitter.lua
Space— leader key<leader>e— toggle Neo-tree<C-Space>— trigger completion menu<CR>— confirm selected completion item<Tab>/<S-Tab>— navigate completion items<C-l>— accept GitHub Copilot suggestion
- Icons look wrong or are missing: install a Nerd Font and configure your terminal to use it.
:Telescope live_grepfails: make sureripgrepis installed and available inPATH.- Plugins do not install on first launch: confirm
gitis installed and that Neovim has network access, then restart Neovim. - LSP features are missing for a language: run
:Masonand verify the server is installed for one of the configured languages. - Treesitter highlighting is missing or outdated: run
:TSUpdateinside Neovim. - Opening a folder does not show Neo-tree: start Neovim with a directory path such as
nvim .or use<leader>eafter startup.
- lazy.nvim — plugin manager
- nvim-lspconfig — LSP configuration
- mason.nvim — LSP/tool installer
- mason-lspconfig.nvim — mason/lspconfig bridge
- nvim-cmp — completion engine
- cmp-nvim-lsp — LSP completion source
- cmp-buffer — buffer completion source
- cmp-path — path completion source
- LuaSnip — snippet engine
- cmp_luasnip — LuaSnip completion source
- copilot.vim — GitHub Copilot
- telescope.nvim — fuzzy finder
- neo-tree.nvim — file explorer
- nvim-treesitter — syntax highlighting & indentation
- tokyonight.nvim — colorscheme
- lualine.nvim — statusline
lua_ls— Luagopls— Goelixirls— Elixirrust_analyzer— Rustvtsls— JavaScript, TypeScript, React, and Vue TypeScript integrationeslint— JavaScript and TypeScript lintingvue_ls— Vueintelephense— PHP
stylua— Lua formatterprettierd— Prettier daemon for fast JS/TS/JSON/CSS/HTML/Markdown formattingselene— Lua lintereslint_d— ESLint daemon for fast JavaScript and TypeScript linting
These tools are installed from lua/plugins/mason-tools.lua on startup.
