Add new neovim config

This commit is contained in:
Ben Kreeger 2025-08-14 15:44:24 -05:00
parent 8a71bb62a3
commit c7868ff459
Signed by: kreeger
GPG Key ID: D5CF8683D4BE4B50
6 changed files with 112 additions and 0 deletions

View File

View File

@ -0,0 +1,35 @@
local autocmd = vim.api.nvim_create_autocmd
local augroup = vim.api.nvim_create_augroup
local highlight_grp = augroup("kickstart-highlight-yank", { clear = true })
autocmd("TextYankPost", {
desc = "Highlight when yanking (copying) text",
group = highlight_grp,
callback = function()
vim.hl.on_yank()
end,
})
autocmd({ "BufWritePre" }, {
pattern = { "*" },
command = [[%s/\s\+$//e]],
})
-- Filetype detection
local filetype_maps = {
{ pattern = "*.tf", ft = "terraform" },
{ pattern = "*.pro", ft = "progruard" },
{ pattern = "*.mjml", ft = "html" },
}
for _, mapping in ipairs(filetype_maps) do
autocmd({ "BufRead", "BufNewFile" }, {
desc = string.format("Enforce filetype for %s", mapping["pattern"]),
pattern = { mapping["pattern"] },
callback = function()
vim.opt.filetype = mapping["ft"]
end,
})
end

View File

@ -0,0 +1,49 @@
local opt = vim.opt
-- Columns and gutters
opt.colorcolumn = "80" -- Highlight column 80
opt.number = true -- Line numbers in the gutter
opt.relativenumber = true -- Relative line numbers in the gutter
opt.signcolumn = "yes:1" -- Sign column in the gutter always visible
-- Indentation
opt.autoindent = true -- Enable auto-indentation
opt.breakindent = true -- ?
opt.expandtab = true -- Default to spaces instead of tabs
opt.shiftround = true -- Round indent to multiple of shift-width
opt.shiftwidth = 4 -- Number of spaces when auto-indenting
opt.softtabstop = 4 -- Number of spaces for a tab when editing
opt.tabstop = 4 -- Number of spaces for a tab
-- Display and adornments
opt.cursorline = true -- Highlight current line
opt.guifont = "Inconsolata Patched G:h12"
opt.list = true -- Show whitespace characters
opt.listchars = { tab = "» ", trail = "", nbsp = "", lead = "" }
opt.scrolloff = 3 -- Show 3 lines above and below cursor
opt.showmode = false -- Don't show the mode since it's in our statusline
opt.termguicolors = true -- Use true terminal colors
opt.virtualedit = "block"
opt.winborder = "rounded" -- Rounded borders for windows
-- Behavior
opt.confirm = true
opt.ignorecase = true -- Ignore case in search and commands
opt.inccommand = "split" -- Preview substitutions live
opt.mouse = "a" -- Turn on mouse support
opt.smartcase = true -- ?
opt.splitbelow = true
opt.splitright = true
opt.timeoutlen = 1000 -- Command timeout length
opt.undofile = true
opt.updatetime = 250 -- ?
-- Clipboard
-- Sync clipboard between OS and Neovim.
vim.schedule(function()
vim.opt.clipboard = "unnamedplus"
end)
-- Features
vim.cmd.filetype("plugin indent on")
vim.g.have_nerd_font = true

View File

@ -0,0 +1,26 @@
local keymap = vim.keymap.set
-- Globals
vim.g.mapleader = " "
vim.g.maplocalleader = " "
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
-- Normal mode
keymap("n", "<Esc>", "<cmd>nohlsearch<CR>")
keymap("n", "<leader>f", vim.diagnostic.setloclist, { desc = "Open diagnostic quick[f]ix list" })
keymap("n", "<leader>w", "<cmd>w!<CR>", { desc = "[w]rite current file", silent = true })
keymap("n", "<leader>q", "<cmd>q<CR>", { desc = "[q]uit current buffer", silent = true })
keymap("n", "<leader>Q", "<cmd>qa<CR>", { desc = "[Q]uit completely", silent = true })
keymap("n", "<Leader>fb", ":lua vim.lsp.buf.format()<CR>", { desc = "[f]ormat [b]uffer", silent = true })
keymap("n", "<C-h>", "<C-w><C-h>", { desc = "Move focus to the left window" })
keymap("n", "<C-l>", "<C-w><C-l>", { desc = "Move focus to the right window" })
keymap("n", "<C-j>", "<C-w><C-j>", { desc = "Move focus to the lower window" })
keymap("n", "<C-k>", "<C-w><C-k>", { desc = "Move focus to the upper window" })
keymap("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", { desc = "[g]o to [d]efinition", noremap = true, silent = true })
-- Visual mode
keymap("v", "<Leader>p", '"_dP', { desc = "[p]aste without overwriting default register" })
-- Terminal mode
keymap("t", "<Esc>", "<C-\\><C-n>", { desc = "Exit terminal mode" })

View File

View File

@ -37,6 +37,8 @@ alias av="ansible-vault"
# tool aliases
if [[ -x "$(command -v nvim)" ]]; then
alias vim="nvim"
alias v="nvim"
alias vv="NVIM_APPNAME=nvim-new nvim"
fi
if [[ -x "$(command -v highlight)" ]]; then
alias ccat='highlight -O ansi --force'