LazyVim is a great Neovim setup that is pre-configured with reasonable features. It's better than starting from scratch. Here are my configuration settings that focus on Python, HTML, CSS, and JavaScript. Configuration files for LazyVim must be located in the ~/.config/nvim directory. More info about LazyVim is available at https://www.lazyvim.org.
Files located in the ~/.config/nvim/lua/config directory.
-- config/autocmds.lua
-- Trim trailing white space when a file is saved
vim.api.nvim_create_autocmd("BufWritePre", {
pattern = "*",
command = [[%s/\s\+$//e]],
})
-- config/keymaps.lua
vim.keymap.set("i", "jj", "<Esc>", { silent = true, desc = "Escape insert mode with jj" })
vim.keymap.set({ "n", "i" }, "<C-a>", "<Esc>ggVG", { desc = "Select all text with Ctrl-a" })
-- config/options.lua
vim.opt.relativenumber = false
vim.opt.conceallevel = 0
vim.g.autoformat = false
vim.g.lazyvim_python_lsp = "pyright"
vim.g.lazyvim_python_ruff = "ruff"
vim.g.lazyvim_prettier_needs_config = false
Files located in the ~/.config/nvim/lua/plugins directory.
-- plugins/colorscheme.lua
return {
"LazyVim/LazyVim",
opts = {
colorscheme = "catppuccin",
},
}
-- plugins/lspconfig.lua
return {
"neovim/nvim-lspconfig",
opts = {
inlay_hints = { enabled = false },
servers = {
pyright = {
settings = {
pyright = {
disableOrganizeImports = true,
disableTaggedHints = true,
},
},
},
},
},
}
-- plugins/noice.lua
return {
"folke/noice.nvim",
opts = {
presets = {
lsp_doc_border = true, -- Add a border to LSP hover and docs
},
},
}
-- plugins/snacks.lua
return {
"snacks.nvim",
opts = {
indent = {
scope = { enabled = false },
},
picker = {
sources = {
explorer = {
hidden = true,
},
},
},
},
}
-- plugins/treesitter.lua
return {
"nvim-treesitter/nvim-treesitter",
opts = function(_, opts)
vim.list_extend(opts.ensure_installed, {
"css",
"jinja",
"swift",
})
end,
}
Gavin Wiggins © 2025
Made on a Mac with Genja. Hosted on GitHub Pages.