This repository contains my custom Neovim configuration for Linux, macOS, and potentially Windows. The setup is built from scratch and includes only the plugins I actively use in my workflow. I primarily use Neovim as a C++ IDE for cross-platform game development.
For the best experience, use it alongside my config-tmux repository.
git clone https://github.com/reybits/config-nvim.git ~/.config/nvim
- fzf: a command-line fuzzy finder.
- viu: a terminal image viewer with native support for iTerm and Kitty.
- fd: a better version of the find utility.
- ripgrep(rg): a better version of the grep utility.
- Plugin management via lazy.nvim.
- Tool manager via mason.nvim.
- Startup screen via dashboard-nvim.
- Sessions support via mini.sessions.
- Colorscheme via kanagawa.nvim.
- Mapping hint via which-key.nvim.
- Git integration via neogit, vim-fugitive, gitsigns.nvim, and gitlinker.nvim.
- File explorer via oil.nvim.
- Language server protocol (LSP) support via nvim-lspconfig.
- Code auto-completion via blink-cmp.
- Code debugging via mfussenegger/nvim-dap and rcarriga/nvim-dap-ui.
- Code commenting via ts-comments.nvim.
- Code formatting via conform.nvim.
- Code highlighting via nvim-treesitter.
- TMUX support via vim-tmux-navigator.
- Improved quickfix UI via quicker.nvim.
- Fast navigation, lookup, and more via fzf-lua.
- Buffer navigation via flash.nvim.
- Bookmarks via harpoon v2.
- Undo tree explorer via undotree.
- Markdown writing and previewing via render-markdown.nvim and markdown-preview.nvim.
- Hide passwords/keys via cloak.nvim.
- Blind typing trainer via typr.
- And more...
- Telescope telescope.nvim.
- File tree explorer via nvim-tree.lua.
- File tree explorer via neo-tree.nvim.
- LazyGit lazygit.nvim.
- Octo octo.nvim.
- Codeium neocodeium.
- Colorscheme Nightfox nightfox.nvim.
- Folding nvim-ufo kevinhwang91/nvim-ufo.
To customize plugins, enable, or disable integration with other tools, inside the nvim/lua/scratch/custom
directory, create a plugin-name.lua
file with the plugin name and add custom settings.
By default, fzf-lua and oil.nvim used as the navigation plugins.
You can use Telescope as main plugin by creating a telescope.lua
file with the following content:
-- nvim/lua/scratch/custom/telescope.lua
return {
-- Use telescope instead of fzf-lua
require("scratch.custom.optional.telescope"),
{ "ibhagwan/fzf-lua", enabled = false },
}
You can use neo-tree as main plugin by creating a neo-tree.lua
file with the following content:
-- nvim/lua/scratch/custom/neo-tree.lua
return {
-- Use nvim-tree instead of neo-tree
require("scratch.custom.optional.neo-tree"),
{ "stevearc/oil.nvim", enabled = false },
}
You can use nvim-tree as main plugin by creating a nvim-tree.lua
file with the following content:
-- nvim/lua/scratch/custom/nvim-tree.lua
return {
-- Use nvim-tree instead of neo-tree
require("scratch.custom.optional.nvim-tree"),
{ "stevearc/oil.nvim", enabled = false },
}
By default, Neogit and vim-fugitive is used as the Git plugin.
You can use LazyGit as main git plugin by creating a lazygit.lua
file with the following content:
-- nvim/lua/scratch/custom/lazygit.lua
return {
-- Use LazyGit instead of Neogit and vim-fugitive
require("scratch.custom.optional.lazygit"),
{ "NeogitOrg/neogit", enabled = false },
{ "tpope/vim-fugitive", enabled = false },
}
You can use Fugitive as main git plugin by creating a fugitive.lua
file with the following content:
-- nvim/lua/scratch/custom/fugitive.lua
return {
-- Use vim-fugitive and its companions instead of Neogit
require("scratch.custom.optional.vim-rhubarb"),
require("scratch.custom.optional.vim-flog"),
{ "NeogitOrg/neogit", enabled = false },
}
You can add support for the Octo plugin to work with GitHub by creating a octo.lua
file with the following content:
-- nvim/lua/scratch/custom/octo.lua
return {
require("scratch.custom.optional.octo"),
}
Both Copilot and CopilotChat plugins are enabled by defautl. Copilot integrated into the completion menu via blink-cmp.
You can disable Copilot by creating a copilot.lua
file with the following content:
-- nvim/lua/scratch/custom/copilot.lua
return {
-- Disable Copilot and Copilot Chat
{ "github/copilot.vim", enabled = false },
{ "CopilotC-Nvim/CopilotChat.nvim", enabled = false },
}
Codeium is disabled by default. However, you can enable it by creating a codeium.lua
file with the following content:
-- nvim/lua/scratch/custom/codeium.lua
return {
-- Enable Codeium without the completion menu support,
-- use mappings instead:
-- <tab> to accept suggestion
-- <a-e> to cycle through suggestions
require("scratch.custom.optional.neocodeium"),
}
Here’s a detailed guide on enabling and extending folding with nvim-ufo in Neovim.
-- nvim/lua/scratch/custom/editor.lua
return {
-- Enable nvim-ufo
require("scratch.custom.optional.nvim-ufo"),
}