Configuration for my NixOS based systems and Home Manager
at shizuri 170 lines 5.7 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 10vim.opt.background = "light" 11--vim.opt.background = "dark" 12 13-- Formatting and vim config 14vim.opt.expandtab = true 15vim.opt.tabstop = 4 16vim.opt.shiftwidth = 4 17--vim.opt.termguicolors = true 18vim.opt.cursorcolumn = true 19vim.opt.cursorline = true 20vim.opt.hidden = true 21vim.opt.colorcolumn = "120" 22vim.opt.spelllang = "en_us" 23vim.opt.number = false 24vim.opt.relativenumber = false 25-- I don't like word wrapping 26vim.opt.wrap = false 27-- Show whitespace as dots 28vim.opt.lcs = vim.opt.lcs + "space:·" 29vim.opt.list = true 30vim.opt.textwidth = 88 31vim.cmd [[ colorscheme alabaster ]] 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--Toggle background 81keymap("n", "<leader>bg", function() if vim.o.background == "light" then vim.o.background = "dark" else vim.o.background = "light" end end, noremap) 82-- Easier breaking from edit modes 83keymap("n", ";;", "<Esc>", noremap) 84keymap("v", ";;", "<Esc>", noremap) 85keymap("i", ";;", "<Esc>", noremap) 86keymap("t", "<Esc>", "<C-\\><C-n>", noremap) 87-- Tab Navigation 88keymap("n", "<leader>tn", "<cmd>tabnew<CR>", noremap) 89keymap("n", "<leader>tc", "<cmd>tabclose<CR>", noremap) 90keymap("n", "<leader><tab>", "<cmd>tabnext<CR>", noremap) 91keymap("n", "<leader>tt", "<cmd>tabnext<CR>", noremap) 92 93-- buffer navigation 94keymap("n", "<leader>h", "<C-w>h", noremap) 95keymap("n", "<leader>j", "<C-w>j", noremap) 96keymap("n", "<leader>k", "<C-w>k", noremap) 97keymap("n", "<leader>l", "<C-w>l", noremap) 98keymap("n", "<leader>bn", "<cmd>bnext<CR>", noremap) 99keymap("n", "<leader>bp", "<cmd>bprev<CR>", noremap) 100-- close buffer and put previous into current window 101keymap("n", "<leader>bq", "<cmd>bp <BAR> bd #<CR>", noremap) 102-- list buffers 103keymap("n", "<leader>bl", "<cmd>ls<cr>", noremap) 104-- splits 105keymap("n", "<leader>vs", "<cmd>vsplit<cr>", noremap) 106keymap("n", "<leader>ss", "<cmd>split<cr>", noremap) 107keymap("n", "<leader>hs", "<cmd>split<cr>", noremap) 108 109-- Toggle Line Numbers 110keymap("n", "<leader>n", "<cmd>set number! number?<CR>", silentnoremap) 111keymap("n", "<leader>N", "<cmd>set relativenumber! relativenumber?<CR>", silentnoremap) 112 113-- Edit this file 114keymap("n", "<leader>ec", "<cmd>e $MYVIMRC<CR>", silentnoremap) 115keymap("n", "<leader>sc", "<cmd>source $MYVIMRC<CR>", silentnoremap) 116 117-- Clear highlights 118keymap("n", "<C-c>", "<cmd>noh<CR>", silentnoremap) 119 120-- Telescope shortcuts 121keymap("n", "<leader>ff", "<cmd>Telescope find_files<CR>", silentnoremap) 122keymap("n", "<leader>fg", "<cmd>Telescope live_grep<CR>", silentnoremap) 123keymap("n", "<leader>fb", "<cmd>Telescope buffers<CR>", silentnoremap) 124keymap("n", "<C-p>", "<cmd>Telescope buffers<CR>", silentnoremap) 125keymap("n", "<leader>fh", "<cmd>Telescope help_tags<CR>", silentnoremap) 126 127-- Remap arrow keys for page navigation 128keymap("n", "<Up>", "<C-y>", silentnoremap) 129keymap("n", "<Down>", "<C-e>", silentnoremap) 130keymap("n", "<Left>", "zh", silentnoremap) 131keymap("n", "<Right>", "zl", silentnoremap) 132 133-- Telescope 134keymap({ "n", "i", "v" }, "<C-t>", "<cmd>Telescope<CR>", silentnoremap) 135 136-- LSP Documentation viewer 137keymap("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", silentnoremap) 138 139-- Lf 140keymap("n", "<leader>L", "<cmd>Lf<CR>", silentnoremap) 141 142-- Neogit 143keymap("n", "<leader>g", "<cmd>Neogit<CR>", silentnoremap) 144 145-- Autoformat! 146vim.api.nvim_create_user_command("Format", function(args) 147 local range = nil 148 if args.count ~= -1 then 149 local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1] 150 range = { 151 start = { args.line1, 0 }, 152 ["end"] = { args.line2, end_line:len() }, 153 } 154 end 155 require("conform").format({ async = true, lsp_format = "fallback", range = range }) 156end, { range = true }) 157keymap("n", "<C-n>", "<cmd>Format<CR>", silentnoremap) 158 159-- Python Specific 160vim.g.python3_host_prog = vim.fn.expand("~/.envs/nvim/bin/python3") 161 162-- ######################## 163-- # Require other configs # 164-- ######################## 165-- LSP 166require("lsp") 167 168if vim.uv.fs_stat(vim.fn.stdpath("config") .. "/lua/local.lua") then 169 require("local") 170end