--set some aliases to make typing this faster. local cmd = vim.cmd local opt = vim.opt local fn = vim.fn local map = vim.api.nvim_set_keymap --leader key is set through a variable, for some reason. vim.g.mapleader = ';' --this plugin makes startup time a bit faster. To bootsrap configuration, you need to comment this one out, ignore any errors you get, do packersync, then uncomment it. require('impatient') --do package management require('packages') --helper functions local function keyCode(string) return vim.api.nvim_replace_termcodes(str, true, true, true, true) end --options using vim.opt (aliased, of course.) opt.mouse = 'a' opt.lazyredraw = true opt.termguicolors = true opt.autoread = true opt.swapfile = false opt.history = 500 opt.formatoptions = 'rojq' --disable hard text wrapping, will only wrap visually. opt.textwidth = 0 opt.wrapmargin = 0 opt.wrap = true opt.linebreak = true opt.breakindent = true --add ruler to side of screen. opt.number = true --displays cordinates of your cursor in statusbar opt.ruler = true --always leave 5 cells between cursor and side of window. opt.scrolloff = 5 opt.sidescrolloff = 5 --better command line completion opt.wildmenu = true --ignore case in search if search is all lowercase. opt.ignorecase = true opt.smartcase = true --show unfinished commands in statusbar. opt.showcmd = true --regex stuff opt.magic = true --always have a status line opt.laststatus = 2 --tab stuff opt.tabstop = 4 opt.shiftwidth = 0 --zero inherrits tabstop. opt.autoindent = true opt.smartindent = true opt.smarttab = true --space based tabs. -- opt.softtabstop=-1 --negative value inherrits shiftwidth. -- opt.expandtab=true --highlight search results as you type. opt.hlsearch = true opt.incsearch = true --foling stuff opt.foldlevelstart = 5 cmd([[source ~/.config/nvim/foldtext.vimrc]]) opt.foldmethod = 'indent' opt.foldtext = 'minimal_foldtext()' opt.fillchars = 'stl:=,stlnc: ,vert:|,fold:-' opt.foldcolumn = '4' opt.foldenable = true opt.foldignore = '' --sets colorscheme. to get a list of avalible options, do colorscheme vim.cmd 'colorscheme moonfly' --function for venn.nvim -- venn.nvim: enable or disable keymappings function _G.Toggle_venn() local venn_enabled = vim.inspect(vim.b.venn_enabled) if venn_enabled == "nil" then vim.b.venn_enabled = true vim.cmd [[setlocal ve=all]] -- draw a line on HJKL keystokes vim.api.nvim_buf_set_keymap(0, "n", "J", "j:VBox", { noremap = true }) vim.api.nvim_buf_set_keymap(0, "n", "K", "k:VBox", { noremap = true }) vim.api.nvim_buf_set_keymap(0, "n", "L", "l:VBox", { noremap = true }) vim.api.nvim_buf_set_keymap(0, "n", "H", "h:VBox", { noremap = true }) -- draw a box by pressing "f" with visual selection vim.api.nvim_buf_set_keymap(0, "v", "f", ":VBox", { noremap = true }) else vim.cmd [[setlocal ve=]] vim.cmd [[mapclear ]] vim.b.venn_enabled = nil end end --keyboard mappings local opts = { noremap = true, silent = true } --toggle spell check map('n', 'sp', ':setlocal spell!', opts) --[[ --easily create splits map('n', '|', ':vs', opts) ]] --[[ map('n', '-', ':sp', opts) --use ctrl+direction to move between splits. ]] map('n', '', 'h', opts) map('n', '', 'j', opts) map('n', '', 'k', opts) map('n', '', 'l', opts) --toggle folds with space. map('', '', 'za', opts) --clear highlighting with leader+h map('', 'h', ':nohls', opts) --open nvim-tree with leader+t map('n', 't', ':NvimTreeToggle', opts) --open symbols-outline with leader+o map('n', 'o', ':SymbolsOutline', opts) --telescope stuff map('n', 'ff', ':lua require "telescope".extensions.file_browser.file_browser()', opts) map('n', 'fg', ':Telescope live_grep', opts) map('n', 'fb', ':Telescope buffers', opts) map('n', 'fm', ':Telescope marks', opts) map('n', 'fp', ':Telescope registers', opts) map('n', 'fs', ':Telescope spell_suggest', opts) map('n', 'fh', ':Telescope keymaps', opts) map('n', 'fz', ':Telescope current_buffer_fuzzy_find', opts) map('n', 'fgc', ':Telescope git_commits', opts) map('n', 'fgb', ':Telescope git_branches', opts) map('n', 'fgs', ':Telescope git_stash', opts) map('n', 'ft', ':Telescope treesitter', opts) --Treesitter context map('n', 'c', ':TSContextToggle', opts) --tabline stuff (gt and gT are prev/next tab in stock vim) map('n', 'gf', ':TablineBufferNext', opts) map('n', 'gF', ':TablineBufferPrevious', opts) --gitsigns map('n', 'bl', ':Gitsigns toggle_current_line_blame', opts) --trouble plugin. vim.keymap.set("n", "xx", "TroubleToggle", opts) vim.keymap.set("n", "xw", "TroubleToggle workspace_diagnostics", opts) vim.keymap.set("n", "xd", "TroubleToggle document_diagnostics", opts) vim.keymap.set("n", "xl", "TroubleToggle loclist", opts) vim.keymap.set("n", "xq", "TroubleToggle quickfix", opts) vim.keymap.set("n", "lR", "TroubleToggle lsp_references", opts) vim.keymap.set("n", "lD", "TroubleToggle lsp_definitions", opts) -- toggle keymappings for venn using v vim.api.nvim_set_keymap('n', 'v', ":lua Toggle_venn()", { noremap = true })