diff options
author | Justine Smithies <justine@smithies.me.uk> | 2025-10-07 21:05:44 +0100 |
---|---|---|
committer | Justine Smithies <justine@smithies.me.uk> | 2025-10-07 21:05:44 +0100 |
commit | 8e62d28cf8b662512d222c464c5ea2469045d7a3 (patch) | |
tree | 926ecc9995ad1bd406ecf5f49034e9c71bed3c33 /.config/nvim/lua/config | |
parent | b417b248c874cba7ddf6ded78273df584a81931d (diff) |
Initial commit
Diffstat (limited to '.config/nvim/lua/config')
-rw-r--r-- | .config/nvim/lua/config/autocmd.lua | 43 | ||||
-rw-r--r-- | .config/nvim/lua/config/globals.lua | 2 | ||||
-rw-r--r-- | .config/nvim/lua/config/init.lua | 44 | ||||
-rw-r--r-- | .config/nvim/lua/config/keymaps.lua | 37 | ||||
-rw-r--r-- | .config/nvim/lua/config/options.lua | 51 |
5 files changed, 177 insertions, 0 deletions
diff --git a/.config/nvim/lua/config/autocmd.lua b/.config/nvim/lua/config/autocmd.lua new file mode 100644 index 0000000..6f90977 --- /dev/null +++ b/.config/nvim/lua/config/autocmd.lua @@ -0,0 +1,43 @@ +local autocmd = vim.api.nvim_create_autocmd -- Create autocommand + +-- Remove end of buffer ~ on buffer enter +autocmd('BufEnter', { + pattern = '*', + command = "let &fcs='eob: '" +}) + +-- Turn off line numbers and signcolumn on entering terminal +autocmd("TermOpen", { + callback = function() + vim.opt_local.number = false + vim.opt_local.relativenumber = false + vim.opt_local.signcolumn = 'no' + end, + desc = "Disable line numbers and signcolumnn in terminal", +}) + +-- Insert mode on entering terminal +autocmd('TermOpen', { + pattern = '*', + command = 'startinsert' +}) + +-- Insert mode off on Terminal exit +autocmd('BufLeave', { + pattern = 'term://*', + command = 'stopinsert' +}) + +-- Close terminal buffer on process exit +autocmd('TermClose', { + pattern = 'term://*', + command = 'call nvim_input("<CR>")' +}) + +-- Replacement for vim-highlightedyank +autocmd("TextYankPost", { + desc = "Highlight selection on yanked text", + callback = function() + vim.highlight.on_yank({ higroup = 'IncSearch', timeout = 500 }) + end, +}) diff --git a/.config/nvim/lua/config/globals.lua b/.config/nvim/lua/config/globals.lua new file mode 100644 index 0000000..2e2e702 --- /dev/null +++ b/.config/nvim/lua/config/globals.lua @@ -0,0 +1,2 @@ +vim.g.mapleader = " " +vim.g.maplocalleader = " " diff --git a/.config/nvim/lua/config/init.lua b/.config/nvim/lua/config/init.lua new file mode 100644 index 0000000..2b6e039 --- /dev/null +++ b/.config/nvim/lua/config/init.lua @@ -0,0 +1,44 @@ +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", -- latest stable release + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + +require('config.globals') +require('config.options') +require('config.keymaps') +require('config.autocmd') + +local opts = { + defaults = { + lazy = true, + }, + install = { + colorscheme = { "gruvbox" } + }, + rtp = { + disabled_plugins = { + "gzip", + "matchit", + "matchparen", + "netrw", + "netrwPlugin", + "tarPlugin", + "tohtml", + "tutor", + "zipPlugin", + } + }, + change_detection = { + notify = true + }, +} + +require("lazy").setup('plugins', opts) diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua new file mode 100644 index 0000000..81436ff --- /dev/null +++ b/.config/nvim/lua/config/keymaps.lua @@ -0,0 +1,37 @@ +local keymap = vim.keymap + +local opts = { noremap = true, silent = true } + +-- DIRECTORY NAVIGATION ------------------------------------------------------ +keymap.set("n", "<leader>m", ":NvimTreeFocus<CR>", opts) +keymap.set("n", "<leader>f", ":NvimTreeToggle<CR> :NvimTreeRefresh<CR>", { silent = true }) +keymap.set("n", "<C-k>", "<C-w>k", opts) -- NAVIGATE [^] UP +keymap.set("n", "<C-h>", "<C-w>h", opts) -- NAVIGATE [<] LEFT +keymap.set("n", "<C-l>", "<C-w>l", opts) -- NAVIGATE [>] RIGHT +keymap.set("n", "<C-j>", "<C-w>j", opts) -- NAVIGATE [v] DOWN + +-- WINDOW MANAGEMENT --------------------------------------------------------- +keymap.set("n", "<leader>sv", ":vsplit<CR>", opts) -- SPLIT VERTICALLY +keymap.set("n", "<leader>sh", ":split<CR>", opts) -- SPLIT HORIZONTALLY + +-- INDENT -------------------------------------------------------------------- +keymap.set("v", "<", "<gv") +keymap.set("v", ">", ">gv") + +-- COMMENTS ------------------------------------------------------------------ +keymap.set("n", "<C-c>", "gcc", { noremap = false }) +keymap.set("v", "<C-c>", "gcc", { noremap = false }) + +-- MOVE SELECTED LINES --------------------------------------------------------- +keymap.set("v", "J", ":m '>+1<CR>gv=gv") +keymap.set("v", "K", ":m '<-2<CR>gv=gv") + +-- Open a terminal in nvim +keymap.set("n", "<leader>vt", ":vert term<CR>", opts) -- Terminal vertically +keymap.set("n", "<leader>ht", ":term<CR>", opts) -- Terminal Horizontally + +-- Toggle Nvim Tree +keymap.set("n", "<F7>", ":NvimTreeToggle<CR>", {}) + +-- Toggle Indent Blank Line +keymap.set("n", "<F8>", ":IBLToggle<CR>", {}) diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua new file mode 100644 index 0000000..bd00264 --- /dev/null +++ b/.config/nvim/lua/config/options.lua @@ -0,0 +1,51 @@ +-- disable netrw at the very start of your init.lua -------------------------- +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 + +local opt = vim.opt + +-- TAB/INDENT ---------------------------------------------------------------- +opt.tabstop = 2 +opt.shiftwidth = 2 +opt.softtabstop = 2 +opt.expandtab = true +opt.smartindent = true +opt.wrap = false + +-- SEARCH -------------------------------------------------------------------- +opt.incsearch = true +opt.ignorecase = true +opt.smartcase = true +opt.hlsearch = false + +-- APPEARANCE ---------------------------------------------------------------- +opt.number = true +opt.relativenumber = false +opt.termguicolors = true +--opt.colorcolumn = "100" +opt.signcolumn = "auto" +opt.cmdheight = 1 +opt.scrolloff = 10 +opt.completeopt = "menuone,noinsert,noselect" +opt.cursorline = true -- Highlight the active cursor line + +-- MISC ---------------------------------------------------------------------- +opt.hidden = true +opt.errorbells = false +opt.swapfile = false +opt.backup = false +opt.undodir = vim.fn.expand("~/.config/nvim/undodir//") +opt.undofile = true +opt.backspace = "indent,eol,start" +opt.splitright = true +opt.splitbelow = true +opt.autochdir = false +opt.modifiable = true +opt.encoding = "UTF-8" +opt.guicursor = "n-v-c:block,i-ci-ve:block,r-cr:hor20,o:hor50,a:blinkwait700-blinkoff400-blinkon250-Cursor/lCursor,sm:block-blinkwait175-blinkoff150-blinkon175" +opt.termguicolors = true + +-- APPEND -------------------------------------------------------------------- +opt.mouse:append('a') +opt.iskeyword:append("-") +opt.clipboard:append("unnamedplus") |