Something went wrong. Try again.
Personal Neovim Setup
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145local opts = { noremap = true, silent = true }
-- Shorten function namelocal map = vim.keymap.set
-- Modes-- normal_mode = "n",-- insert_mode = "i",-- visual_mode = "v",-- visual_block_mode = "x",-- term_mode = "t",-- command_mode = "c",
-- Normal ---- Better window navigationmap("n", "<C-h>", "<C-w>h", opts)map("n", "<C-j>", "<C-w>j", opts)map("n", "<C-k>", "<C-w>k", opts)map("n", "<C-l>", "<C-w>l", opts)
map("i", "<C-h>", "<Esc><C-w>h", opts)map("i", "<C-j>", "<Esc><C-w>j", opts)map("i", "<C-k>", "<Esc><C-w>k", opts)map("i", "<C-l>", "<Esc><C-w>l", opts)
-- Close buffermap("n", "<leader>x", ":bd<CR>", opts)
-- Naviagate buffersmap("n", "<S-l>", ":bnext<CR>", opts)map("n", "<S-h>", ":bprevious<CR>", opts)
-- Move text: https://vim.fandom.com/wiki/Moving_lines_up_or_down
local sally_up = vim.tbl_deep_extend("force", { desc = "Move sally up" }, opts)local sally_down = vim.tbl_deep_extend("force", { desc = "Move sally down" }, opts)
map("n", "<A-j>", ":m .+1<CR>==", sally_up)map("v", "<A-j>", ":m '>+1<CR>gv=gv", sally_up)map("i", "<A-j>", "<Esc>:m .+1<CR>==gi", sally_up)
map("n", "<A-k>", ":m .-2<CR>==", sally_down)map("v", "<A-k>", ":m '<-2<CR>gv=gv", sally_down)map("i", "<A-k>", "<Esc>:m .-2<CR>==gi", sally_down)
-- Toggle checkbox item in markdown
local toggle_checkbox_opts = vim.tbl_deep_extend("force", { desc = "Toggle checkbox" }, opts)
local function toggle_checkbox(separator) separator = separator or "x"
return function() local line = vim.api.nvim_get_current_line() local unchecked = "%[.%]" local output = string.gsub(line, unchecked, "[" .. separator .. "]")
vim.api.nvim_set_current_line(output) endend
local function v_toggle_checkbox(separator) separator = separator or "x"
return function() local start_line = vim.fn.getpos("'<")[2] local end_line = vim.fn.getpos("'>")[2]
for i = start_line, end_line, 1 do vim.api.nvim_win_set_cursor(0, { i, 0 }) toggle_checkbox(separator)() end endend
-- checkedmap("n", "<C-c><C-c>", toggle_checkbox(), toggle_checkbox_opts)map("v", "<C-c><C-c>", v_toggle_checkbox(), toggle_checkbox_opts)
-- uncheckedmap("n", "<C-c><leader>", toggle_checkbox(" "), toggle_checkbox_opts)map("v", "<C-c><leader>", v_toggle_checkbox(" "), toggle_checkbox_opts)
-- in progressmap("n", "<C-c><C-v>", toggle_checkbox("~"), toggle_checkbox_opts)map("v", "<C-c><C-v>", v_toggle_checkbox("~"), toggle_checkbox_opts)
-- canceledmap("n", "<C-c><C-x>", toggle_checkbox("-"), toggle_checkbox_opts)map("v", "<C-c><C-x>", v_toggle_checkbox("-"), toggle_checkbox_opts)
-- Oil.nvimmap("n", "<leader>o", ":Oil<CR>", { desc = "Open Oil" })map("n", "<leader>.", ":vsplit | Oil<CR>", { desc = "Open Oil vertical" })
-- Split with terminalmap("n", "<leader>;", ":split | term<CR>", { desc = "split terminal" })map("n", "<leader>'", ":vsplit | term<CR>", { desc = "vsplit terminal" })
-- past new linemap("n", "<leader>p", "o<Esc>p", { desc = "Past to a line below" })
--- win navigation for terminalmap("t", "<C-h>", "<C-\\><C-N><C-w>h", opts)map("t", "<C-j>", "<C-\\><C-N><C-w>j", opts)map("t", "<C-k>", "<C-\\><C-N><C-w>k", opts)map("t", "<C-l>", "<C-\\><C-N><C-w>l", opts)
-- autocmd to open terminal in insert modevim.cmd( [[autocmd TermOpen term://* startinsert | setlocal nonumber norelativenumber ]])-- on enter terminal do the samevim.cmd( [[autocmd WinEnter term://* startinsert | setlocal nonumber norelativenumber]])
-- open link in browser-- if n -> esc, yank current link, open in browser-- if v -> get selection, open in browser-- browser must work for macox and linux----local function open_url(url) if not url:match("^https?://") then print("No URL found under cursor: " .. url) return end
local command = vim.fn.has("mac") == 1 and "open" or "xdg-open" vim.fn.jobstart({ command, url }, { detach = true })end
map("n", "gx", function() local url = vim.fn.expand("<cfile>") open_url(url)end, { desc = "Open URL under cursor" })
map("v", "gx", function() local url = vim.fn.getreg('"') open_url(url)end, { desc = "Open selected URL" })