Just nvim. It is an simple and extensible neovim config with awesome community plugins.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- Nerd Fonts
- Neovim 0.7+
- Plugin Requirements:
- ripgrep (live grep for
telescope) curlorwget(formason)
- ripgrep (live grep for
Note the screenshots used JetBrainsMono Nerd Font.
git clone https://github.com/jaeheonji/nvim $HOME/.config/nvim && nvim- Soothing pastel theme by catppuccin
- Dashboard with alpha-nvim
- Buffer & Tab line with bufferline.nvim
- Neovim LSP with nvim-lspconfig and mason.nvim
- Autocompletion with nvim-cmp
- Diagnositcs, code actions and more with null-ls.nvim
- Statusline with feline.nvim
- File browse with neo-tree.nvim
- Fuzzy find with telescope.nvim
- Popup suggestions and key binding with which-key.nvim
- Git integration for buffers with gitsigns.nvim
- Syntax highlighting with nvim-treesitter
- Autopair with nvim-autopairs
- Powerful commenting with comment.nvim
A list of all plugins can be found here.
One of the goals of this project is to provide users with a extensible user configuration. And the user configuration should be easy to understand and simple.
First, To set up a user configuration, copy the default config to custom.lua.
cp ~/.config/nvim/lua/core/config.lua ~/.config/nvim/lua/custom.lua
Please check the file name and path. Currently, only one path is supported.
The user configuration provides five components:
colorschemeoptionskey_bindingspluginshooks
The colorscheme currently only provides catppuccin/nvim. Instead, you can set up transparency through the transparency option. This options is false by default.
You can set options for neovim. If you want to turn off the default options and set a new value, you can do the following.
options = {
enable_default = false, -- disable default options
setup = function()
vim.opt.number = true
vim.opt.relativenumber = false
...
end,
}Same as options. Note that this project basically supports which-key, so you can use which-key to key-binding as follows.
options = {
enable_default = true,
setup = function()
local default_opts = { noremap = true, silent = true }
local map = vim.keymap.set
-- bind with vim.keymap.set function
map({ "n", "v" }, "<C-c>", '"+y', default_opts)
map({ "n" }, "<C-v>", '"+p', default_opts)
-- using which-key
local ok, wkey = pcall(require, "which-key")
if not ok then
return
end
wkey.register({ ... })
end,
}The plugins are one of the most important components of user configuration. The plugins provides two options. The first is to add a new plugin and the rest is to override the settings for the plugin provided by this project.
Add new plugins
plugins = {
custom = {
{
-- I love Rust :)
"simrat39/rust-tools.nvim"
ft = { "rust "},
config = function()
require("rust-tools").setup({ ... })
end
}
}
...
}Override settings
Override settings uses the same table as each plugin settings by default. But, for null-ls and lspconfig settings, use custom settings for convenience. The following is an example.
plugins = {
override = {
["lspconfig"] = {
servers = {
sumneko_lua = { on_attch = function() ... end },
gopls = {},
golangci_lint_ls = {},
}
},
["null-ls"] = {
source = {
"code_actions.gitsigns",
"formatting.stylua",
}
}
}
}For more user configuration examples, check out my configuration.





