Configuration for my NixOS based systems and Home Manager
at mikoto 168 lines 5.5 kB view raw
1-- Leader 2vim.g.mapleader = ";" 3vim.g.maplocalleader = "," 4-- These need to happend before we load plugins 5-- Load Plugins 6require("plugins") 7-- Config for Nord, which I usually use 8-- vim.g.nord_italic = false 9-- vim.g.nord_bold = false 10-- vim.opt.background = "light" 11vim.opt.background = "dark" 12vim.cmd[[colorscheme nord]] 13 14-- Formatting and vim config 15vim.opt.expandtab = true 16vim.opt.tabstop = 4 17vim.opt.shiftwidth = 4 18--vim.opt.termguicolors = true 19vim.opt.cursorcolumn = true 20vim.opt.cursorline = true 21vim.opt.hidden = true 22vim.opt.colorcolumn = "120" 23vim.opt.spelllang = "en_us" 24vim.opt.number = false 25vim.opt.relativenumber = false 26-- I don't like word wrapping 27vim.opt.wrap = false 28-- Show whitespace as dots 29vim.opt.lcs = vim.opt.lcs + "space:·" 30vim.opt.list = true 31vim.opt.textwidth = 88 32 33-- Force OSC-52 34vim.g.clipboard = { 35 name = 'OSC 52', 36 copy = { 37 ['+'] = require('vim.ui.clipboard.osc52').copy('+'), 38 ['*'] = require('vim.ui.clipboard.osc52').copy('*'), 39 }, 40 paste = { 41 ['+'] = require('vim.ui.clipboard.osc52').paste('+'), 42 ['*'] = require('vim.ui.clipboard.osc52').paste('*'), 43 }, 44} 45 46-- CTags 47vim.opt.tags = vim.opt.tags + vim.fn.expand("~/.local/tmp/ctags") + 48 vim.fn.expand("~/repos/gerbil/src/TAGS") 49 50-- Conjure 51 52-- Gerbil Scheme 53local set_gerbil = function() 54 vim.g["conjure#client#scheme#stdio#command"] = "gxi" 55 vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "%d*> " 56 vim.g["conjure#client#scheme#stdio#value_prefix_pattern"] = false 57end 58set_gerbil() 59vim.api.nvim_create_user_command("ConjureGerbil", set_gerbil, {}) 60 61-- Chibi-scheme 62local set_chibi = function() 63 vim.g["conjure#client#scheme#stdio#command"] = "chibi-scheme -R" 64 vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "=> $?" 65 vim.g["conjure#client#scheme#stdio#value_prefix_pattern"] = true 66end 67vim.api.nvim_create_user_command("ConjureChibi", set_chibi, {}) 68-- Chicken Scheme 69local set_chicken = function() 70 vim.g["conjure#client#scheme#stdio#command"] = "csi -quiet -:c" 71 vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "\n-#;%d-> " 72 vim.g["conjure#client#scheme#stdio#value_prefix_pattern"] = true 73end 74vim.api.nvim_create_user_command("ConjureChicken", set_chicken, {}) 75 76-- KEYMAPS 77local keymap = vim.keymap.set 78local noremap = { noremap = true } 79local silentnoremap = { noremap = true, silent = true } 80-- Easier breaking from edit modes 81keymap("n", ";;", "<Esc>", noremap) 82keymap("v", ";;", "<Esc>", noremap) 83keymap("i", ";;", "<Esc>", noremap) 84keymap("t", "<Esc>", "<C-\\><C-n>", noremap) 85-- Tab Navigation 86keymap("n", "<leader>tn", "<cmd>tabnew<CR>", noremap) 87keymap("n", "<leader>tc", "<cmd>tabclose<CR>", noremap) 88keymap("n", "<leader><tab>", "<cmd>tabnext<CR>", noremap) 89keymap("n", "<leader>tt", "<cmd>tabnext<CR>", noremap) 90 91-- buffer navigation 92keymap("n", "<leader>h", "<C-w>h", noremap) 93keymap("n", "<leader>j", "<C-w>j", noremap) 94keymap("n", "<leader>k", "<C-w>k", noremap) 95keymap("n", "<leader>l", "<C-w>l", noremap) 96keymap("n", "<leader>bn", "<cmd>bnext<CR>", noremap) 97keymap("n", "<leader>bp", "<cmd>bprev<CR>", noremap) 98-- close buffer and put previous into current window 99keymap("n", "<leader>bq", "<cmd>bp <BAR> bd #<CR>", noremap) 100-- list buffers 101keymap("n", "<leader>bl", "<cmd>ls<cr>", noremap) 102-- splits 103keymap("n", "<leader>vs", "<cmd>vsplit<cr>", noremap) 104keymap("n", "<leader>ss", "<cmd>split<cr>", noremap) 105keymap("n", "<leader>hs", "<cmd>split<cr>", noremap) 106 107-- Toggle Line Numbers 108keymap("n", "<leader>n", "<cmd>set number! number?<CR>", silentnoremap) 109keymap("n", "<leader>N", "<cmd>set relativenumber! relativenumber?<CR>", silentnoremap) 110 111-- Edit this file 112keymap("n", "<leader>ec", "<cmd>e $MYVIMRC<CR>", silentnoremap) 113keymap("n", "<leader>sc", "<cmd>source $MYVIMRC<CR>", silentnoremap) 114 115-- Clear highlights 116keymap("n", "<C-c>", "<cmd>noh<CR>", silentnoremap) 117 118-- Telescope shortcuts 119keymap("n", "<leader>ff", "<cmd>Telescope find_files<CR>", silentnoremap) 120keymap("n", "<leader>fg", "<cmd>Telescope live_grep<CR>", silentnoremap) 121keymap("n", "<leader>fb", "<cmd>Telescope buffers<CR>", silentnoremap) 122keymap("n", "<C-p>", "<cmd>Telescope buffers<CR>", silentnoremap) 123keymap("n", "<leader>fh", "<cmd>Telescope help_tags<CR>", silentnoremap) 124 125-- Remap arrow keys for page navigation 126keymap("n", "<Up>", "<C-y>", silentnoremap) 127keymap("n", "<Down>", "<C-e>", silentnoremap) 128keymap("n", "<Left>", "zh", silentnoremap) 129keymap("n", "<Right>", "zl", silentnoremap) 130 131-- Telescope 132keymap({ "n", "i", "v" }, "<C-t>", "<cmd>Telescope<CR>", silentnoremap) 133 134-- LSP Documentation viewer 135keymap("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", silentnoremap) 136 137-- Lf 138keymap("n", "<leader>L", "<cmd>Lf<CR>", silentnoremap) 139 140-- Neogit 141keymap("n", "<leader>g", "<cmd>Neogit<CR>", silentnoremap) 142 143-- Autoformat! 144vim.api.nvim_create_user_command("Format", function(args) 145 local range = nil 146 if args.count ~= -1 then 147 local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1] 148 range = { 149 start = { args.line1, 0 }, 150 ["end"] = { args.line2, end_line:len() }, 151 } 152 end 153 require("conform").format({ async = true, lsp_format = "fallback", range = range }) 154end, { range = true }) 155keymap("n", "<C-n>", "<cmd>Format<CR>", silentnoremap) 156 157-- Python Specific 158vim.g.python3_host_prog = vim.fn.expand("~/.envs/nvim/bin/python3") 159 160-- ######################## 161-- # Require other configs # 162-- ######################## 163-- LSP 164require("lsp") 165 166if vim.uv.fs_stat(vim.fn.stdpath("config") .. "/lua/local.lua") then 167 require("local") 168end