From f42b5230a84b2bbdb264e4ee98a3878fd610b701 Mon Sep 17 00:00:00 2001 From: Jake Koroman Date: Fri, 3 Oct 2025 13:26:13 -0400 Subject: add nvim. --- nvim/ftplugin/lua.lua | 2 ++ nvim/init.lua | 77 +++++++++++++++++++++++++++++++++++++++++ nvim/lua/plugins/catppuccin.lua | 20 +++++++++++ nvim/lua/plugins/nvim-mini.lua | 9 +++++ nvim/lua/plugins/telescope.lua | 47 +++++++++++++++++++++++++ nvim/lua/plugins/treesitter.lua | 12 +++++++ 6 files changed, 167 insertions(+) create mode 100644 nvim/ftplugin/lua.lua create mode 100644 nvim/init.lua create mode 100644 nvim/lua/plugins/catppuccin.lua create mode 100644 nvim/lua/plugins/nvim-mini.lua create mode 100644 nvim/lua/plugins/telescope.lua create mode 100644 nvim/lua/plugins/treesitter.lua (limited to 'nvim') diff --git a/nvim/ftplugin/lua.lua b/nvim/ftplugin/lua.lua new file mode 100644 index 0000000..6b7404c --- /dev/null +++ b/nvim/ftplugin/lua.lua @@ -0,0 +1,2 @@ +vim.o.shiftwidth = 2 +vim.o.softtabstop = 2 diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..30e1e77 --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,77 @@ +vim.o.relativenumber = true +vim.o.expandtab = true +vim.o.shiftwidth = 4 +vim.o.softtabstop = 4 +vim.o.mouse = 'a' +vim.o.makeprg = './build.sh' +vim.o.clipboard = 'unnamedplus' +vim.o.breakindent = true +vim.o.ignorecase = true +vim.o.smartcase = true +vim.o.signcolumn = 'auto' +vim.o.cursorline = false +vim.o.scrolloff = 10 +vim.o.confirm = true +vim.o.autochdir = false +vim.o.cinoptions = 'l1,t0,(0,:0' + +vim.g.mapleader = ' ' +vim.g.maplocalleader = ' ' + +local colemakdh_binds = { + -- movement + { modes = { 'n', 'o', 'x' }, lhs = 'n', rhs = 'h', }, + { modes = { 'n', 'o', 'x' }, lhs = 'e', rhs = 'j', }, + { modes = { 'n', 'o', 'x' }, lhs = 'i', rhs = 'k', }, + { modes = { 'n', 'o', 'x' }, lhs = 'o', rhs = 'l', }, + { modes = { 'n' }, lhs = 'N', rhs = '^', }, + { modes = { 'n' }, lhs = 'O', rhs = '$', }, + + -- closing the loop of overwritten binds + { modes = { 'n', 'o', 'x'}, lhs = 'j', rhs = 'e', }, + { modes = { 'n', 'o', 'x'}, lhs = 'k', rhs = 'n', }, + { modes = { 'n', 'o', 'x'}, lhs = 'K', rhs = 'N', }, + { modes = { 'n', 'o', 'x'}, lhs = 'h', rhs = 'o', }, + { modes = { 'n', 'o', 'x'}, lhs = 'H', rhs = 'O', }, + { modes = { 'n', 'o', 'x'}, lhs = 'l', rhs = 'i', }, + { modes = { 'n', 'o', 'x'}, lhs = 'L', rhs = 'I', }, +} + +for _, bind in ipairs(colemakdh_binds) do + for _, mode in ipairs(bind.modes) do + vim.keymap.set(mode, bind.lhs, bind.rhs) + end +end + +-- disable man mode remaps +vim.g.no_man_maps = 1 + +vim.keymap.set('n', '', 'cnext') +vim.keymap.set('n', '', 'cprev') + +vim.api.nvim_create_autocmd('TextYankPost', { + desc = 'Highlight when yanking (copying) text', + group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), + callback = function() + vim.hl.on_yank() + end, +}) + +local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = 'https://github.com/folke/lazy.nvim.git' + local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath } + if vim.v.shell_error ~= 0 then + error('Error cloning lazy.nvim:\n' .. out) + end +end + +local rtp = vim.opt.runtimepath +rtp:prepend(lazypath) + +require('lazy').setup({ + require 'plugins.nvim-mini', + require 'plugins.catppuccin', + require 'plugins.treesitter', + require 'plugins.telescope', +}) diff --git a/nvim/lua/plugins/catppuccin.lua b/nvim/lua/plugins/catppuccin.lua new file mode 100644 index 0000000..97a77a2 --- /dev/null +++ b/nvim/lua/plugins/catppuccin.lua @@ -0,0 +1,20 @@ +return { + 'catppuccin/nvim', + name = "catppuccin", + config = function () + require('catppuccin').setup({ + flavor = 'auto', + background = { + light = 'latte', + dark = 'mocha', + }, + transparent_background = true, + no_italic = true, + styles = { + conditionals = {}, + }, + auto_integrations = true, + }) + vim.cmd.colorscheme 'catppuccin' + end, +} diff --git a/nvim/lua/plugins/nvim-mini.lua b/nvim/lua/plugins/nvim-mini.lua new file mode 100644 index 0000000..51bde96 --- /dev/null +++ b/nvim/lua/plugins/nvim-mini.lua @@ -0,0 +1,9 @@ +return { + 'nvim-mini/mini.nvim', + version = false, + config = function () + require('mini.surround').setup() + require('mini.ai').setup { n_lines = 500 } + require('mini.statusline').setup() + end +} diff --git a/nvim/lua/plugins/telescope.lua b/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..2083cee --- /dev/null +++ b/nvim/lua/plugins/telescope.lua @@ -0,0 +1,47 @@ +return { + 'nvim-telescope/telescope.nvim', + event = 'VimEnter', + dependencies = { + 'nvim-lua/plenary.nvim', + { + 'nvim-telescope/telescope-fzf-native.nvim', + build = 'make' + }, + 'nvim-telescope/telescope-ui-select.nvim', + }, + config = function() + require('telescope').setup { + extensions = { + ['ui-select'] = { + require('telescope.themes').get_dropdown(), + }, + }, + } + + pcall(require('telescope').load_extension, 'fzf') + pcall(require('telescope').load_extension, 'ui-select') + + local builtin = require 'telescope.builtin' + vim.keymap.set('n', 'sh', builtin.help_tags, { desc = '[S]earch [H]elp' }) + vim.keymap.set('n', 'sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' }) + vim.keymap.set('n', 'ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' }) + vim.keymap.set('n', 'sw', builtin.grep_string, { desc = '[S]earch current [W]ord' }) + vim.keymap.set('n', 'sg', builtin.live_grep, { desc = '[S]earch by [G]rep' }) + vim.keymap.set('n', 'sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) + vim.keymap.set('n', 'sr', builtin.resume, { desc = '[S]earch [R]esume' }) + vim.keymap.set('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) + vim.keymap.set('n', ',', builtin.buffers) + vim.keymap.set('n', '.', builtin.find_files) + vim.keymap.set('n', '>', function() + builtin.find_files { no_ignore = true } + end, { desc = 'find all files' }) + + vim.keymap.set('n', 'sn', function() + builtin.find_files { cwd = vim.fn.stdpath 'config' } + end, { desc = '[S]earch [N]eovim files' } ) + + vim.keymap.set('n', 'sm', function() + builtin.man_pages { sections = { 'ALL' } } + end, { desc = '[S]earch [M]an pages' }) + end, +} diff --git a/nvim/lua/plugins/treesitter.lua b/nvim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..73b2e05 --- /dev/null +++ b/nvim/lua/plugins/treesitter.lua @@ -0,0 +1,12 @@ +return { + 'nvim-treesitter/nvim-treesitter', + build = ':TSUpdate', + main = 'nvim-treesitter.configs', + opts = { + ensure_installed = { 'bash', 'c', 'zig', 'diff', 'lua', 'luadoc', 'markdown', 'vim', 'vimdoc' }, + auto_install = true, + highlight = { + enable = true, + }, + }, +} -- cgit v1.2.3