From c7868ff4590c86e15016a75025deab6d3072c205 Mon Sep 17 00:00:00 2001 From: Ben Kreeger Date: Thu, 14 Aug 2025 15:44:24 -0500 Subject: [PATCH] Add new neovim config --- nvim-new/plugin/+plugins.lua | 0 nvim-new/plugin/autocmds.lua | 35 ++++++++++++++++++++++++ nvim-new/plugin/config.lua | 49 ++++++++++++++++++++++++++++++++++ nvim-new/plugin/keymaps.lua | 26 ++++++++++++++++++ nvim-new/plugin/statusline.lua | 0 zsh/aliases.zsh | 2 ++ 6 files changed, 112 insertions(+) create mode 100644 nvim-new/plugin/+plugins.lua create mode 100644 nvim-new/plugin/autocmds.lua create mode 100644 nvim-new/plugin/config.lua create mode 100644 nvim-new/plugin/keymaps.lua create mode 100644 nvim-new/plugin/statusline.lua diff --git a/nvim-new/plugin/+plugins.lua b/nvim-new/plugin/+plugins.lua new file mode 100644 index 0000000..e69de29 diff --git a/nvim-new/plugin/autocmds.lua b/nvim-new/plugin/autocmds.lua new file mode 100644 index 0000000..5db91b3 --- /dev/null +++ b/nvim-new/plugin/autocmds.lua @@ -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 + diff --git a/nvim-new/plugin/config.lua b/nvim-new/plugin/config.lua new file mode 100644 index 0000000..2c46e74 --- /dev/null +++ b/nvim-new/plugin/config.lua @@ -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 diff --git a/nvim-new/plugin/keymaps.lua b/nvim-new/plugin/keymaps.lua new file mode 100644 index 0000000..8b4ee9d --- /dev/null +++ b/nvim-new/plugin/keymaps.lua @@ -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", "", "nohlsearch") +keymap("n", "f", vim.diagnostic.setloclist, { desc = "Open diagnostic quick[f]ix list" }) +keymap("n", "w", "w!", { desc = "[w]rite current file", silent = true }) +keymap("n", "q", "q", { desc = "[q]uit current buffer", silent = true }) +keymap("n", "Q", "qa", { desc = "[Q]uit completely", silent = true }) +keymap("n", "fb", ":lua vim.lsp.buf.format()", { desc = "[f]ormat [b]uffer", silent = true }) +keymap("n", "", "", { desc = "Move focus to the left window" }) +keymap("n", "", "", { desc = "Move focus to the right window" }) +keymap("n", "", "", { desc = "Move focus to the lower window" }) +keymap("n", "", "", { desc = "Move focus to the upper window" }) +keymap("n", "gd", "lua vim.lsp.buf.definition()", { desc = "[g]o to [d]efinition", noremap = true, silent = true }) + +-- Visual mode +keymap("v", "p", '"_dP', { desc = "[p]aste without overwriting default register" }) + +-- Terminal mode +keymap("t", "", "", { desc = "Exit terminal mode" }) diff --git a/nvim-new/plugin/statusline.lua b/nvim-new/plugin/statusline.lua new file mode 100644 index 0000000..e69de29 diff --git a/zsh/aliases.zsh b/zsh/aliases.zsh index 4f38d50..a90440c 100644 --- a/zsh/aliases.zsh +++ b/zsh/aliases.zsh @@ -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'