From 842b0218b9c4722d02348dbe4a465cb77fab2153 Mon Sep 17 00:00:00 2001 From: Donovan Date: Tue, 22 Apr 2025 11:00:57 -0500 Subject: [PATCH] initial neovim setup --- init.lua | 2 ++ lazy-lock.json | 8 ++++++ lua/dkelly/core/init.lua | 2 ++ lua/dkelly/core/keymaps.lua | 39 ++++++++++++++++++++++++++++++ lua/dkelly/core/options.lua | 33 +++++++++++++++++++++++++ lua/dkelly/lazy.lua | 14 +++++++++++ lua/dkelly/plugins/colorscheme.lua | 17 +++++++++++++ lua/dkelly/plugins/nvim-tree.lua | 26 ++++++++++++++++++++ lua/dkelly/plugins/telescope.lua | 11 +++++++++ 9 files changed, 152 insertions(+) create mode 100644 init.lua create mode 100644 lazy-lock.json create mode 100644 lua/dkelly/core/init.lua create mode 100644 lua/dkelly/core/keymaps.lua create mode 100644 lua/dkelly/core/options.lua create mode 100644 lua/dkelly/lazy.lua create mode 100644 lua/dkelly/plugins/colorscheme.lua create mode 100644 lua/dkelly/plugins/nvim-tree.lua create mode 100644 lua/dkelly/plugins/telescope.lua diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..abe7f2f --- /dev/null +++ b/init.lua @@ -0,0 +1,2 @@ +require("dkelly.core") +require("dkelly.lazy") diff --git a/lazy-lock.json b/lazy-lock.json new file mode 100644 index 0000000..e655719 --- /dev/null +++ b/lazy-lock.json @@ -0,0 +1,8 @@ +{ + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "nvim-tree.lua": { "branch": "master", "commit": "be5b788f2dc1522c73fb7afad9092331c8aebe80" }, + "nvim-web-devicons": { "branch": "master", "commit": "855c97005c8eebcdd19846f2e54706bffd40ee96" }, + "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, + "telescope.nvim": { "branch": "master", "commit": "a4ed82509cecc56df1c7138920a1aeaf246c0ac5" }, + "tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" } +} diff --git a/lua/dkelly/core/init.lua b/lua/dkelly/core/init.lua new file mode 100644 index 0000000..e4489bc --- /dev/null +++ b/lua/dkelly/core/init.lua @@ -0,0 +1,2 @@ +require("dkelly.core.options") +require("dkelly.core.keymaps") diff --git a/lua/dkelly/core/keymaps.lua b/lua/dkelly/core/keymaps.lua new file mode 100644 index 0000000..ca0902c --- /dev/null +++ b/lua/dkelly/core/keymaps.lua @@ -0,0 +1,39 @@ +vim.g.mapleader = " " +local keymap = vim.keymap + +keymap.set("i", "jk", "", { desc = "Exit insert mode with jk" }) +keymap.set("n", "nh", ":nohl", { desc = "Clear search highlights" }) + +keymap.set("n", "+", "", { desc = "Increment number" }) +keymap.set("n", "-", "", { desc = "Decrement number" }) + +-- keymap.set("n", "e", "Explore", { desc = fFile Explore" }) + +-- window management +keymap.set("n", "wv", "v", { desc = "Split window vertically" }) +keymap.set("n", "ws", "s", { desc = "Split window horizontally"}) +keymap.set("n", "w=", "=", { desc = "Make splits equal size" }) +keymap.set("n", "wx", "close", { desc = "Close current split" }) +keymap.set("n", "wh", "h", { desc = "Go to left window" }) +keymap.set("n", "wj", "j", { desc = "Go to window below" }) +keymap.set("n", "wk", "k", { desc = "Go to window above" }) +keymap.set("n", "wl", "l", { desc = "Go to right window" }) + +keymap.set("n", "to", "tabnew", { desc = "Open new tab" }) +keymap.set("n", "tx", "tabclose", { desc = "Close new tab" }) +keymap.set("n", "tn", "tabn", { desc = "Go to next tab" }) +keymap.set("n", "tp", "tabp", { desc = "Go to previous tab" }) +keymap.set("n", "tf", "tabnew %>", { desc = "Open current buffer in new tab" }) + +keymap.set("n", "rk", "resize +5", { desc = "Increase window height" }) +keymap.set("n", "rj", "resize -5", { desc = "Decrease window height" }) +keymap.set("n", "rl", "vertical resize +5", { desc = "Increase window width" }) +keymap.set("n", "rh", "vertical resize -5", { desc = "Decrease window width" }) + +-- fuzzy find +--local builtin = require('telescope.builtin') +--vim.keymap.set('n', 'ff', builtin.find_files, { desc = 'Telescope find files' }) +--vim.keymap.set('n', 'fg', builtin.live_grep, { desc = 'Telescope live grep' }) +--vim.keymap.set('n', 'fb', builtin.buffers, { desc = 'Telescope buffers' }) +--vim.keymap.set('n', 'fh', builtin.help_tags, { desc = 'Telescope help tags' }) + diff --git a/lua/dkelly/core/options.lua b/lua/dkelly/core/options.lua new file mode 100644 index 0000000..b166e88 --- /dev/null +++ b/lua/dkelly/core/options.lua @@ -0,0 +1,33 @@ +vim.cmd("let g:netrw_liststyle = 3") + + +local opt = vim.opt + +opt.relativenumber = true +opt.number = true + +-- tabs & indentation +opt.tabstop = 2 -- 2 spaces for tabs (prettier default) +opt.shiftwidth = 2 -- 2 spaces for indent width +opt.expandtab = true -- expand tab to spaces +opt.autoindent = true -- copy indent from current line when starting new one + +-- search settings +opt.ignorecase = true +opt.smartcase = true + +opt.cursorline = true + +opt.termguicolors = true +opt.background = "dark" +opt.signcolumn = "yes" + +-- backspace +opt.backspace = "indent,eol,start" -- allow backspace on indent, end of line or insert mode start position + +-- clipboard +opt.clipboard:append("unnamedplus") -- use system clipboard as default register + +-- split windows +opt.splitright = true -- split vertical window to the right +opt.splitbelow = true -- split horizantal window to the bottom diff --git a/lua/dkelly/lazy.lua b/lua/dkelly/lazy.lua new file mode 100644 index 0000000..51ba3c8 --- /dev/null +++ b/lua/dkelly/lazy.lua @@ -0,0 +1,14 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup("dkelly.plugins") diff --git a/lua/dkelly/plugins/colorscheme.lua b/lua/dkelly/plugins/colorscheme.lua new file mode 100644 index 0000000..efb1f4d --- /dev/null +++ b/lua/dkelly/plugins/colorscheme.lua @@ -0,0 +1,17 @@ +return { + "folke/tokyonight.nvim", + priority = 1000, + config = function () + require("tokyonight").setup({ + style = "night", + on_colors = function(colors) + colors.bg = "#0d0d0d" -- main background (very dark) + colors.bg_dark = "#1a1a1a" -- sidebars + colors.bg_sidebar = "#1a1a1a" -- match sidebars with bg_dark + colors.bg_float = "#1a1a1a" -- floats get a soft contrast + colors.border = "#3c3c3c" -- add a border tone + end, + }) + vim.cmd("colorscheme tokyonight") + end +} diff --git a/lua/dkelly/plugins/nvim-tree.lua b/lua/dkelly/plugins/nvim-tree.lua new file mode 100644 index 0000000..afcd01a --- /dev/null +++ b/lua/dkelly/plugins/nvim-tree.lua @@ -0,0 +1,26 @@ +return { + "nvim-tree/nvim-tree.lua", + dependencies = { + "nvim-tree/nvim-web-devicons", + }, + config = function() + vim.g.loaded_netrw = 1 + vim.g.loaded_netrwPlugin = 1 + require("nvim-tree").setup({ + view = { + width = 35, + relativenumber = true, + }, + renderer = { + indent_markers = { + enable = true, + }, + }, + }) + local keymap = vim.keymap + keymap.set("n", "ee", "NvimTreeToggle", { desc = "Toggle file explorer" }) + keymap.set("n", "ef", "NvimTreeFindFileToggle", { desc = "Toggle file explorer on current buffer" }) + keymap.set("n", "ec", "NvimTreeCollapse", { desc = "Collapse file explorer" }) + keymap.set("n", "er", "NvimTreeRefresh", { desc = "Refresh file explorer" }) + end, +} diff --git a/lua/dkelly/plugins/telescope.lua b/lua/dkelly/plugins/telescope.lua new file mode 100644 index 0000000..68ba479 --- /dev/null +++ b/lua/dkelly/plugins/telescope.lua @@ -0,0 +1,11 @@ +return { + 'nvim-telescope/telescope.nvim', + dependencies = { 'nvim-lua/plenary.nvim'}, + config = function () + local builtin = require('telescope.builtin') + vim.keymap.set('n', 'ff', builtin.find_files, { desc = 'Telescope find files' }) + vim.keymap.set('n', 'fg', builtin.live_grep, { desc = 'Telescope live grep' }) + vim.keymap.set('n', 'fb', builtin.buffers, { desc = 'Telescope buffers' }) + vim.keymap.set('n', 'fh', builtin.help_tags, { desc = 'Telescope help tags' }) + end +}