summaryrefslogtreecommitdiff
path: root/plugin
diff options
context:
space:
mode:
Diffstat (limited to 'plugin')
-rw-r--r--plugin/keymaps.lua40
-rw-r--r--plugin/opts.lua118
2 files changed, 158 insertions, 0 deletions
diff --git a/plugin/keymaps.lua b/plugin/keymaps.lua
new file mode 100644
index 0000000..c22f149
--- /dev/null
+++ b/plugin/keymaps.lua
@@ -0,0 +1,40 @@
+vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv", { desc = "Moves Line Down" })
+vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv", { desc = "Moves Line Up" })
+vim.keymap.set("n", "<C-d>", "<C-d>zz", { desc = "Scroll Down" })
+vim.keymap.set("n", "<C-u>", "<C-u>zz", { desc = "Scroll Up" })
+vim.keymap.set("n", "n", "nzzzv", { desc = "Next Search Result" })
+vim.keymap.set("n", "N", "Nzzzv", { desc = "Previous Search Result" })
+
+vim.keymap.set("n", "<leader><leader>[", "<cmd>bprev<CR>", { desc = "Previous buffer" })
+vim.keymap.set("n", "<leader><leader>]", "<cmd>bnext<CR>", { desc = "Next buffer" })
+vim.keymap.set("n", "<leader><leader>l", "<cmd>b#<CR>", { desc = "Last buffer" })
+vim.keymap.set("n", "<leader><leader>d", "<cmd>bdelete<CR>", { desc = "delete buffer" })
+
+-- Remap for dealing with word wrap
+vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
+vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
+
+-- Diagnostic keymaps
+vim.keymap.set("n", "<leader>e", vim.diagnostic.open_float, { desc = "Open floating diagnostic message" })
+vim.keymap.set("n", "<leader>q", vim.diagnostic.setloclist, { desc = "Open diagnostics list" })
+
+vim.keymap.set({ "v", "x", "n" }, "<leader>y", '"+y', { noremap = true, silent = true, desc = "Yank to clipboard" })
+vim.keymap.set(
+ { "n", "v", "x" },
+ "<leader>Y",
+ '"+yy',
+ { noremap = true, silent = true, desc = "Yank line to clipboard" }
+)
+vim.keymap.set({ "n", "v", "x" }, "<leader>p", '"+p', { noremap = true, silent = true, desc = "Paste from clipboard" })
+vim.keymap.set(
+ "i",
+ "<C-p>",
+ "<C-r><C-p>+",
+ { noremap = true, silent = true, desc = "Paste from clipboard from within insert mode" }
+)
+vim.keymap.set(
+ "x",
+ "<leader>P",
+ '"_dP',
+ { noremap = true, silent = true, desc = "Paste over selection without erasing unnamed register" }
+)
diff --git a/plugin/opts.lua b/plugin/opts.lua
new file mode 100644
index 0000000..942443a
--- /dev/null
+++ b/plugin/opts.lua
@@ -0,0 +1,118 @@
+-- vim.opt.list = true
+-- vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' }
+-- vim.opt.listchars:append("space:⋅")
+-- Set highlight on search
+-- vim.opt.hlsearch = false
+
+require("vim._core.ui2").enable()
+vim.cmd.packadd("nvim.undotree")
+-- vim.cmd.packadd("nvim.difftool")
+
+vim.o.showmode = false
+vim.o.showcmd = false
+vim.o.winborder = "single"
+
+vim.opt.hlsearch = true
+vim.keymap.set("n", "<Esc>", "<cmd>nohlsearch<CR>")
+
+-- Preview substitutions live, as you type!
+vim.opt.inccommand = "split"
+
+-- Minimal number of screen lines to keep above and below the cursor.
+vim.opt.scrolloff = 3
+
+-- Make line numbers default
+vim.wo.number = true
+vim.o.cursorline = true
+
+-- Disable mouse mode
+vim.o.mouse = ""
+
+-- Indent
+vim.o.smarttab = true
+-- vim.o.smartindent = true
+-- vim.o.indentexpr = true
+vim.o.autoindent = true
+vim.opt.cpoptions:append("I")
+vim.o.tabstop = 4
+vim.o.softtabstop = 4
+vim.o.shiftwidth = 4
+vim.o.expandtab = true
+
+-- stops line wrapping from being confusing
+vim.o.wrap = true
+vim.o.linebreak = true
+vim.o.breakindent = true
+
+-- Save undo history
+vim.o.undofile = false
+vim.o.title = true
+vim.o.swapfile = false
+
+-- Case-insensitive searching UNLESS \C or capital in search
+vim.o.ignorecase = true
+vim.o.smartcase = true
+
+-- Keep signcolumn on by default
+vim.wo.signcolumn = "yes"
+vim.wo.relativenumber = true
+vim.opt.lazyredraw = true
+
+-- Decrease update time
+vim.o.updatetime = 250
+vim.o.timeoutlen = 300
+
+-- Set completeopt to have a better completion experience
+vim.o.completeopt = "menu,preview,noselect"
+
+-- NOTE: You should make sure your terminal supports this
+vim.o.termguicolors = true
+
+-- remove empty buffer text
+vim.opt.shortmess:append("I")
+
+vim.g.netrw_liststyle = 0
+vim.g.netrw_banner = 0
+
+-- [[ Highlight on yank ]]
+-- See `:help vim.highlight.on_yank()`
+local highlight_group = vim.api.nvim_create_augroup("YankHighlight", { clear = true })
+vim.api.nvim_create_autocmd("TextYankPost", {
+ callback = function()
+ vim.hl.on_yank()
+ end,
+ group = highlight_group,
+ pattern = "*",
+})
+
+local augroup = vim.api.nvim_create_augroup("UserConfig", {})
+
+-- [[ Disable auto comment on enter ]]
+-- See :help formatoptions
+vim.api.nvim_create_autocmd("FileType", {
+ desc = "remove formatoptions",
+ group = augroup,
+ callback = function()
+ vim.opt.formatoptions:remove({ "c", "r", "o" })
+ end,
+})
+
+vim.api.nvim_create_autocmd("FileType", {
+ group = augroup,
+ pattern = "help",
+ callback = function()
+ vim.bo.bufhidden = "unload"
+ vim.cmd.wincmd("L")
+ end,
+})
+
+-- -- Create directories when saving files
+-- vim.api.nvim_create_autocmd("BufWritePre", {
+-- group = augroup,
+-- callback = function()
+-- local dir = vim.fn.expand('<afile>:p:h')
+-- if vim.fn.isdirectory(dir) == 0 then
+-- vim.fn.mkdir(dir, 'p')
+-- end
+-- end,
+-- })