-- River Rooks nvim config -- [[setup]] vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' -- Set to true if you have a Nerd Font installed and selected in the terminal vim.g.have_nerd_font = true vim.g.netrw_liststyle = 3 vim.g.netrw_banner = 1 vim.g.netrw_altv = 1 -- Create the split of the Netrw window to the left vim.g.netrw_winsize = 30 -- Set the width of the "drawer" vim.g.netrw_browse_split = 4 -- Open files in previous window. This emulates the typical "drawer" behaviorkjk -- [[Setting options]] -- See `:help vim.o` -- NOTE: You can change these options as you wish! -- For more options, you can see `:help option-list` -- Make line numbers default vim.o.number = true -- You can also add relative line numbers, to help with jumping. -- Experiment for yourself to see if you like it! vim.o.relativenumber = true -- Don't show the mode, since it's already in the status line vim.o.showmode = false -- Sync clipboard between OS and Neovim. -- Schedule the setting after `UiEnter` because it can increase startup-time. -- Remove this option if you want your OS clipboard to remain independent. -- See `:help 'clipboard'` vim.schedule(function() vim.o.clipboard = 'unnamedplus' end) -- Enable break indent -- Save undo history vim.o.undofile = true -- Case-insensitive searching UNLESS \C or one or more capital letters in the search term vim.o.ignorecase = true vim.o.smartcase = true -- Keep signcolumn on by default vim.o.signcolumn = 'yes' -- Decrease update time vim.o.updatetime = 250 -- Decrease mapped sequence wait time vim.o.timeoutlen = 300 -- Configure how new splits should be opened vim.o.splitright = true vim.o.splitbelow = true vim.o.list = true vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } -- Preview substitutions live, as you type! vim.o.inccommand = 'split' -- Show which line your cursor is on vim.o.cursorline = true -- Minimal number of screen lines to keep above and below the cursor. vim.o.scrolloff = 25 -- if performing an operation that would fail due to unsaved changes in the buffer (like `:q`), -- instead raise a dialog asking if you wish to save the current file(s) -- See `:help 'confirm'` vim.o.confirm = true -- [[Keybinds]] -- See `:help vim.keymap.set()` -- See `:help hlsearch` vim.keymap.set('n', '', 'nohlsearch') -- Diagnostic keymaps vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) vim.keymap.set('t', '', '', { desc = 'Exit terminal mode' }) -- run clear and make in open terminal vim.keymap.set('n','r','TermExec cmd="clear && make"', { desc = '[r]un make in terminal' }) vim.keymap.set('n','n', 'ToggleTerm direction=vertical name=compile size=70', { desc = 'open a [n]ew terminal' }) vim.keymap.set('n','t', 'ToggleTerm', {desc = '[T]oggle all terminals'}) vim.keymap.set('n','l', ':wa') -- TIP: Disable arrow keys in normal mode vim.keymap.set('n', '', 'echo "Use h to move!!"') vim.keymap.set('n', '', 'echo "Use l to move!!"') vim.keymap.set('n', '', 'echo "Use k to move!!"') vim.keymap.set('n', '', 'echo "Use j to move!!"') -- Keybinds to make split navigation easier. -- Use CTRL+ to switch between windows -- -- See `:help wincmd` for a list of all window commands vim.keymap.set('n', '', '', { desc = 'Move focus to the left window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the right window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the lower window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the upper window' }) -- NOTE: Some terminals have colliding keymaps or are not able to send distinct keycodes vim.keymap.set("n", "", "H", { desc = "Move window to the left" }) vim.keymap.set("n", "", "L", { desc = "Move window to the right" }) vim.keymap.set("n", "", "J", { desc = "Move window to the lower" }) vim.keymap.set("n", "", "K", { desc = "Move window to the upper" }) -- [[ Basic Autocommands ]] 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, }) -- [[scripts]] -- Bootstrap lazy.nvim 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 vim.api.nvim_echo({ { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, { out, "WarningMsg" }, { "\nPress any key to exit..." }, }, true, {}) vim.fn.getchar() os.exit(1) end end vim.opt.rtp:prepend(lazypath) -- Make sure to setup `mapleader` and `maplocalleader` before -- loading lazy.nvim so that mappings are correct. -- This is also a good place to setup other settings (vim.opt) vim.g.mapleader = " " vim.g.maplocalleader = "\\" -- Setup lazy.nvim require("lazy").setup({ spec = { -- import your plugins { import = "plugins" }, }, -- Configure any other settings here. See the documentation for more details. -- colorscheme that will be used when installing plugins. install = { colorscheme = { "retrobox" } }, -- automatically check for plugin updates checker = { enabled = true }, }) require('render-markdown').setup({ file_types = { 'markdown', 'quarto' }, render_modes = {'n','c','t'}, link = { enabled = true, render_modes = false, footnote = { enabled = true, icon = '󰯔 ', body = function(ctx) return ctx.text end, superscript = true, prefix = '', suffix = '', }, image = '󰥶 ', email = '󰀓 ', hyperlink = '󰌹 ', highlight = 'RenderMarkdownLink', highlight_title = 'RenderMarkdownLinkTitle', wiki = { enabled = true, icon = '󱗖 ', body = function() return nil end, highlight = 'RenderMarkdownWikiLink', scope_highlight = nil, }, custom = { web = { pattern = '^http', icon = '󰖟 ' }, apple = { pattern = 'apple%.com', icon = ' ' }, discord = { pattern = 'discord%.com', icon = '󰙯 ' }, github = { pattern = 'github%.com', icon = '󰊤 ' }, gitlab = { pattern = 'gitlab%.com', icon = '󰮠 ' }, google = { pattern = 'google%.com', icon = '󰊭 ' }, hackernews = { pattern = 'ycombinator%.com', icon = ' ' }, linkedin = { pattern = 'linkedin%.com', icon = '󰌻 ' }, microsoft = { pattern = 'microsoft%.com', icon = ' ' }, neovim = { pattern = 'neovim%.io', icon = ' ' }, reddit = { pattern = 'reddit%.com', icon = '󰑍 ' }, slack = { pattern = 'slack%.com', icon = '󰒱 ' }, stackoverflow = { pattern = 'stackoverflow%.com', icon = '󰓌 ' }, steam = { pattern = 'steampowered%.com', icon = ' ' }, twitter = { pattern = 'x%.com', icon = ' ' }, wikipedia = { pattern = 'wikipedia%.org', icon = '󰖬 ' }, youtube = { pattern = 'youtube[^.]*%.com', icon = '󰗃 ' }, youtube_short = { pattern = 'youtu%.be', icon = '󰗃 ' }, }, }, })