vim.opt.number = true
vim.opt.relativenumber = trueA common navigation-friendly default in modern Neovim configs.
Modern Neovim configuration patterns using Lua, keymaps, options, and autocommands.
Set editor options from init.lua and Lua modules.
vim.opt.number = true
vim.opt.relativenumber = trueA common navigation-friendly default in modern Neovim configs.
vim.opt.tabstop = 2
vim.opt.shiftwidth = 2
vim.opt.expandtab = trueA foundational code-style block for many projects.
vim.g.mapleader = " "Many Neovim setups use Space as the leader key.
Create ergonomic mappings without legacy Vimscript.
vim.keymap.set("n", "<leader>w", "<cmd>write<CR>")`vim.keymap.set()` is the recommended API for mappings.
vim.keymap.set("n", "<leader>ff", function()
require("telescope.builtin").find_files()
end, { desc = "Find files", silent = true })Descriptions improve discoverability in helper plugins.
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")A common productivity pattern for rearranging blocks.
Run logic on editor events with Lua callbacks.
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = "*.lua",
callback = function()
print("saved lua file")
end,
})Neovim’s Lua API makes event handling cleaner than old Vimscript groups.
local grp = vim.api.nvim_create_augroup("MyGroup", { clear = true })Augroups make config idempotent and easier to reload.
vim.api.nvim_create_autocmd("BufWritePre", {
pattern = "*.ts",
callback = function()
vim.lsp.buf.format()
end,
})A common modern workflow for language-aware formatting.