4RSE2XK6WH6XLSQVXEQURJVTD4UAJ2BQCCNXEOHIZUUXIR2Z2QDQC G7TTS5RTKIEM3MIOO5C7IN4CZUPUULSB4JYNLRFUNXFWMBAJJ6NAC JOC6YTTN3D6C6NBS2JE3AJD6WQQCTIRDXRKVIXLTZAQSQS72A27QC UCFRGI2FBKCZ6WOYUG4J3QDOTCILRXIVYKBDEOM4DWCN7ZG3GZBAC I53WDJDV6QGJYSZK3NLHLNDJHZ5F4UQ4LWVKCN42NUMQ7ABFYD3AC ULP6DAW34XNO47AUQQKZV7YMSM7TQJC2YB6MPZYSXV23X2GBWCPQC D4RRJJZKJI4SMVZDHCUPII42M74W5CXTBW6JVN7D2KUB5ZOIYEXQC 56LWKFVOWIJALZRBEZHUMJ2TRR23MKFQNXT4AHDBF5VHHLPYMSQQC AVT2DSXIYISFKWLX4LJVMFAAVCRTDE4QX7MZ72PXQVSOXTPMYYKAC set undofile " Save undos after file closesset undodir=$HOME/.vim/undo " where to save undo historiesset undolevels=1000 " How many undosset undoreload=10000 " number of lines to save for undo
set undofile " Save undos after file closesset undodir=$HOME/.vim/undo// " where to save undo historiesset undolevels=1000 " How many undosset undoreload=10000 " number of lines to save for undo
vim.cmd.source('~/.vim/vimrc')
vim.opt.tabstop = 3vim.opt.shiftwidth = 3vim.opt.expandtab = truevim.opt.smartindent = truevim.opt.shortmess = "filmnwxosTIcFs"vim.opt.guicursor = "n-v-c:block,i-ci-ve:ver25,r-cr-o:hor20,v:hor20-CursorVisual"vim.opt.laststatus = 2vim.opt.showmode = falsevim.opt.ruler = falsevim.opt.wrapscan = falsevim.opt.ignorecase = truevim.opt.smartcase = truevim.opt.path:append("**")vim.opt.maxmempattern = 200000vim.opt.undofile = truevim.opt.undolevels = 1000vim.opt.undoreload = 10000vim.opt.swapfile = truevim.opt.writebackup = truevim.opt.backup = falsevim.opt.updatetime = 750vim.opt.showmatch = truevim.opt.linebreak = truevim.opt.scrolloff = 7vim.opt.wrap = falsevim.opt.foldmethod = "indent"vim.opt.foldnestmax = 1vim.opt.foldminlines = 1vim.opt.foldlevel = 1vim.opt.list = truevim.opt.listchars = { tab = "· ", trail = "·" }vim.opt.wildmode = { "longest:full", "full" }vim.opt.selection = "old"vim.opt.signcolumn = "yes"vim.opt.number = truevim.opt.relativenumber = truevim.opt.cursorline = truevim.opt.title = true -- implied by "set title"vim.opt.modeline = falsevim.opt.directory = vim.env.HOME .. '/.vim/swapfiles//'vim.opt.undodir = vim.env.HOME .. '/.vim/undo//'vim.opt.fillchars:append({ vert = '|' })vim.opt.suffixesadd = { '.js', '.hs', '.rs', '.py', '.nim', '.go' }vim.opt.mouse = ''
-- disable auto comment continuationvim.api.nvim_create_autocmd('FileType', {pattern = '*',callback = function() vim.opt_local.formatoptions:remove({ 'c', 'r', 'o' }) end,})-- filetype associationsvim.api.nvim_create_autocmd({ 'BufRead', 'BufNewFile' }, {pattern = { '*.sls', '*.sch', '*sc', '*.sps', '*sps7' },command = 'setfiletype scheme',})vim.api.nvim_create_autocmd({ 'BufRead', 'BufNewFile' }, {pattern = '*.sw',command = 'setfiletype swarm',})-- scheme abbreviationvim.api.nvim_create_autocmd('FileType', {pattern = 'scheme',callback = function()vim.cmd('inoreabbrev <buffer> lambda λ')end,})-- remove trailing whitespace on savevim.api.nvim_create_autocmd('BufWritePre', {pattern = '*',callback = function()local l, c = vim.fn.line('.'), vim.fn.col('.')vim.cmd([[%s/\s\+$//e]])vim.fn.cursor(l, c)end,})vim.keymap.set('n', 'Y', 'y$', opts)vim.keymap.set('n', "'", '`', opts)vim.keymap.set('n', '`', "'", opts)-- paste from yank registervim.keymap.set({'n','v'}, '<leader>p', '"0p', opts)vim.keymap.set({'n','v'}, '<leader>P', '"0P', opts)-- global substitutevim.keymap.set('n', '<leader>s', ':%s/', { noremap = true })vim.keymap.set('v', '<leader>s', 'y:%s/<C-r>"/', { noremap = true })-- highlight current wordvim.keymap.set('n', '<leader><leader>', '#*', opts)-- clear search highlightvim.keymap.set('n', '<leader><space>', '<cmd>noh<cr>', opts)vim.keymap.set('n', '<leader><esc>', '<cmd>noh<cr>', opts)vim.keymap.set('n', '<esc>', '<cmd>noh<cr>', opts)-- highlight current selectionvim.keymap.set('v', '<cr>', 'y/<C-r>"<cr>gv<esc>', opts)-- surround selection with delimitersvim.keymap.set('v', '(', 'c()<esc>Pgvo<esc>', opts)vim.keymap.set('v', ')', 'c(<esc>pa)<esc>', opts)vim.keymap.set('v', 'g(', 'c( <esc>pa )<esc>\'[', opts)vim.keymap.set('v', 'g)', 'c( <esc>pa )<esc>', opts)vim.keymap.set('v', '[', 'c[]<esc>Pgvo<esc>', opts)vim.keymap.set('v', 'g[', 'c[ <esc>pa ]<esc>\'[', opts)vim.keymap.set('v', ']', 'c[]<esc>P<esc>', opts)vim.keymap.set('v', 'g]', 'c[ <esc>pa ]<esc>', opts)-- indent and stay in visual modevim.keymap.set('v', '<', '<gv', opts)vim.keymap.set('v', '>', '>gv', opts)-- previous buffervim.keymap.set('n', '<leader><tab>', '<cmd>b#<cr>', opts)-- window managementvim.keymap.set('n', '<C-w>w', '<C-w>p', opts)vim.keymap.set('n', '<C-w><C-w>', '<C-w>p', opts)vim.keymap.set('n', '<C-w>N', '<cmd>vnew<cr>', opts)vim.keymap.set('n', '<C-w>S', '<cmd>vsplit<cr>', opts)vim.keymap.set('n', '<C-w>t', '<cmd>horizontal terminal<cr>', opts)vim.keymap.set('n', '<C-w>T', '<cmd>vertical terminal<cr>', opts)vim.keymap.set('n', '<C-w><cr>', '<cmd>horizontal terminal<cr>', opts)vim.keymap.set('n', '<C-w><S-cr>','<cmd>vertical terminal<cr>', opts)-- terminal escapevim.keymap.set('t', '<C-w>', '<C-\\><C-n><C-w>', opts)-- disable Q ex modevim.keymap.set('n', 'Q', '@@', opts)-- colorscheme tgc togglevim.keymap.set('n', '<leader>c', '<cmd>set tgc!<cr>', opts)-- syntax highlight group under cursorvim.keymap.set('n', '<F10>', function()local s = vim.fn.synID(vim.fn.line('.'), vim.fn.col('.'), 1)print('hi<' .. vim.fn.synIDattr(s, 'name') .. '> ' ..'trans<' .. vim.fn.synIDattr(vim.fn.synID(vim.fn.line('.'), vim.fn.col('.'), 0), 'name') .. '> ' ..'lo<' .. vim.fn.synIDattr(vim.fn.synIDtrans(s), 'name') .. '>')end, opts)-- cursorline togglelocal function cul_on()local g = vim.api.nvim_create_augroup('cul_toggle', { clear = true })vim.api.nvim_create_autocmd({ 'InsertEnter', 'WinLeave', 'FocusLost' },{ group = g, callback = function() vim.opt_local.cursorline = false end })vim.api.nvim_create_autocmd({ 'InsertLeave', 'WinEnter', 'FocusGained' },{ group = g, callback = function() vim.opt_local.cursorline = true end })vim.opt.cursorline = trueendlocal function cul_off()pcall(vim.api.nvim_del_augroup_by_name, 'cul_toggle')vim.opt.cursorline = falseendlocal function cul_toggle()if vim.fn.exists('#cul_toggle') == 1 then cul_off() else cul_on() endendvim.api.nvim_create_user_command('Cul', cul_toggle, {})vim.keymap.set('n', '<leader>C', '<cmd>Cul<cr>', opts)cul_on()
-- numbers togglelocal function numbers_on()local g = vim.api.nvim_create_augroup('numbers_toggle', { clear = true })vim.api.nvim_create_autocmd({ 'InsertLeave', 'WinEnter', 'FocusGained' }, {group = g,callback = function()if vim.bo.buftype ~= 'terminal' thenvim.opt_local.number, vim.opt_local.relativenumber = true, trueendend,})vim.api.nvim_create_autocmd({ 'InsertEnter', 'WinLeave', 'FocusLost' }, {group = g,callback = function()if vim.bo.buftype ~= 'terminal' thenvim.opt_local.number, vim.opt_local.relativenumber = true, falseendend,})vim.cmd('windo set nu rnu')endlocal function numbers_off()pcall(vim.api.nvim_del_augroup_by_name, 'numbers_toggle')vim.cmd('windo set nonu nornu')endlocal function numbers_toggle()local cur = vim.fn.win_getid()if vim.fn.exists('#numbers_toggle') == 1 then numbers_off() else numbers_on() endvim.fn.win_gotoid(cur)endvim.api.nvim_create_user_command('Numbers', numbers_toggle, {})vim.keymap.set('n', '<leader>N', '<cmd>Numbers<cr>', opts)numbers_off()-- signcolumn / diff togglevim.keymap.set('n', '<leader>D', function()local cur = vim.fn.win_getid()vim.cmd("windo execute 'setlocal signcolumn=' . (&signcolumn ==# 'no' ? 'auto' : 'no')")vim.fn.win_gotoid(cur)vim.cmd('redraw!')vim.api.nvim_echo({{ vim.wo.signcolumn == 'no' and 'diffs off' or 'diffs on', '' }}, false, {})end, opts)-- :W -> :wvim.api.nvim_create_user_command('W', 'w', {})
vim.cmd([[
-- limelight configvim.g.limelight_conceal_ctermfg = 240vim.g.limelight_conceal_guifg = '#666666'vim.g.limelight_default_coefficient = 1.0vim.g.limelight_paragraph_span = 0vim.g.limelight_bop = '^\n'vim.g.limelight_eop = '^\n'vim.g.limelight_priority = -1vim.keymap.set('n', '<leader>L', '<cmd>Limelight!!<cr>', opts)vim.keymap.set('n', '<leader>I', '<cmd>IlluminateToggleBuf<cr>', opts)
let g:limelight_conceal_ctermfg = 240let g:limelight_conceal_guifg = '#666666'let g:limelight_default_coefficient = 1.0let g:limelight_paragraph_span = 0let g:limelight_bop = '^\n'let g:limelight_eop = '^\n'let g:limelight_priority = -1nnoremap <leader>L :Limelight!!<cr>nnoremap <leader>I :IlluminateToggleBuf<cr>let g:focused = 0function FocusToggle()let g:focused = 1 - g:focusedif g:focused == 1:silent! call FocusOn():silent! call NumbersOff():silent! call YeyOn():Goyo 120:echo 'focus on'else:silent! call FocusOff():silent! call YeyOff():Goyo!:echo 'focus off'endifendfunction
-- yey (center-on-move) togglelocal yey = falselocal function yey_on()vim.keymap.set('n', 'j', 'jzz', opts)vim.keymap.set('n', 'k', 'kzz', opts)vim.keymap.set('n', 'G', 'Gzz', opts)yey = truevim.api.nvim_echo({ { 'yey on', '' } }, false, {})endlocal function yey_off()pcall(vim.keymap.del, 'n', 'j')pcall(vim.keymap.del, 'n', 'k')pcall(vim.keymap.del, 'n', 'G')yey = falsevim.api.nvim_echo({ { 'yey off', '' } }, false, {})endlocal function yey_toggle()if yey then yey_off() else yey_on() endendvim.api.nvim_create_user_command('Yey', yey_toggle, {})vim.keymap.set('n', '<leader>Y', yey_toggle, opts)
command Focus call FocusToggle()nnoremap <leader>O :Focus<cr>
-- focus togglelocal focused = falselocal function focus_on()yey_on()vim.cmd('Goyo 120')endlocal function focus_off()yey_off()vim.cmd('Goyo!')endlocal function focus_toggle()focused = not focusedif focused thenfocus_on()vim.api.nvim_echo({ { 'focus on', '' } }, false, {})elsefocus_off()vim.api.nvim_echo({ { 'focus off', '' } }, false, {})endendvim.api.nvim_create_user_command('Focus', focus_toggle, {})vim.keymap.set('n', '<leader>O', focus_toggle, opts)
let g:yey = 0
-- per-buffer autosave togglevim.g.auto_save = 0 -- keep for vim-auto-save plugin compatlocal function buffer_autosave_toggle()local cur = vim.b.auto_savevim.b.auto_save = (cur == nil or cur == 0) and 1 or 0local state = vim.b.auto_save == 1 and 'autosave on' or 'autosave off'vim.api.nvim_echo({ { state, '' } }, false, {})endvim.api.nvim_create_user_command('BufferAutoSave', buffer_autosave_toggle, {})vim.keymap.set('n', '<leader>a', buffer_autosave_toggle, opts)
function YeyOn()let g:yey = 1:nmap j jzz:nmap k kzz:nmap G Gzz:echo 'yey on'endfunctionfunction YeyOff()let g:yey = 0:unmap j:unmap k:unmap G:echo 'yey off'endfunctionfunction YeyToggle()if g:yey == 0:call YeyOn()else:call YeyOff()endifendfunctioncommand Yey call YeyToggle()nnoremap <leader>Y :Yey<cr>let g:auto_save = 0function BufferAutoSaveToggle()if exists('b:auto_save')let b:auto_save = !b:auto_saveelselet b:auto_save = 1endifif b:auto_save == 1echo 'autosave on'elseecho 'autosave off'endifendfunctioncommand BufferAutoSave call BufferAutoSaveToggle()nnoremap <leader>a :BufferAutoSave<cr>]])
TelescopeSelection = { fg = 'none', bg = 'none' },TelescopeSelectionCaret = { fg = '#79d4d5', bg = 'none' },TelescopeMultiSelection = { fg = 'none', bg = '#202020' },TelescopeNormal = { fg = 'none', bg = '#262626' },TelescopeBorder = { fg = 'none', bg = 'none' },TelescopePromptBorder = { fg = 'none', bg = '#202020' },TelescopeResultsBorder = { fg = 'none', bg = '#262626' },TelescopePreviewBorder = { fg = 'none', bg = '#262626' },TelescopeMatching = { fg = '#79d4d5', bg = 'none' },TelescopePromptPrefix = { fg = 'none', bg = '#202020' },TelescopePromptNormal = { fg = 'none', bg = '#202020' },TelescopePromptTitle = { fg = 'none', bg = '#202020' },TelescopePreviewTitle = { fg = '#262626', bg = 'none' },TelescopeResultsTitle = { fg = '#202020', bg = 'none' },
TelescopeSelection = { fg = nil, bg = nil },TelescopeSelectionCaret = { fg = '#79d4d5', bg = nil },TelescopeMultiSelection = { fg = nil, bg = '#202020' },TelescopeNormal = { fg = nil, bg = '#262626' },TelescopeBorder = { fg = nil, bg = 'none' },TelescopePromptBorder = { fg = nil, bg = '#202020' },TelescopeResultsBorder = { fg = nil, bg = '#262626' },TelescopePreviewBorder = { fg = nil, bg = '#262626' },TelescopeMatching = { fg = '#79d4d5', bg = nil },TelescopePromptPrefix = { fg = nil, bg = '#202020' },TelescopePromptNormal = { fg = nil, bg = '#202020' },TelescopePromptTitle = { fg = nil, bg = '#202020' },TelescopePreviewTitle = { fg = '#262626', bg = nil },TelescopeResultsTitle = { fg = '#202020', bg = nil },
vim.keymap.set('n', '<leader>T', '<cmd>Telescope<cr>', opts)vim.keymap.set('n', '<leader>t', builtin.resume, opts)vim.keymap.set('n', '<leader>?', builtin.help_tags, opts)vim.keymap.set('n', '<leader>F', builtin.find_files, opts)vim.keymap.set('n', '<leader>f', zero_picker, opts)vim.keymap.set('n', '<leader>g', builtin.git_commits, opts)vim.keymap.set('n', '<leader>G', builtin.git_bcommits, opts)vim.keymap.set('n', '<leader>v', builtin.live_grep, opts)vim.keymap.set('n', '<leader>/', builtin.grep_string, opts)vim.keymap.set('n', '<leader>k', builtin.lsp_dynamic_workspace_symbols, opts)vim.keymap.set('n', '<leader>K', builtin.lsp_definitions, opts)vim.keymap.set('n', '<leader>b', builtin.buffers, opts)vim.keymap.set('n', '<leader>d', builtin.diagnostics, opts)vim.keymap.set('n', '<leader>j', builtin.jumplist, opts)vim.keymap.set('n', '<leader>r', builtin.registers, opts)vim.keymap.set('n', '<leader>m', builtin.marks, opts)vim.keymap.set('n', '<leader>q', builtin.quickfix, opts)vim.keymap.set('n', '<leader>l', builtin.loclist, opts)
vim.keymap.set('n', '<leader>T', '<cmd>Telescope<cr>', opts)vim.keymap.set('n', '<leader>t', telescope_builtin.resume, opts)vim.keymap.set('n', '<leader>?', telescope_builtin.help_tags, opts)vim.keymap.set('n', '<leader>F', telescope_builtin.find_files, opts)vim.keymap.set('n', '<leader>f', zero_picker, opts)vim.keymap.set('n', '<leader>g', telescope_builtin.git_commits, opts)vim.keymap.set('n', '<leader>G', telescope_builtin.git_bcommits, opts)vim.keymap.set('n', '<leader>v', telescope_builtin.live_grep, opts)vim.keymap.set('n', '<leader>/', telescope_builtin.grep_string, opts)vim.keymap.set('n', '<leader>k', telescope_builtin.lsp_dynamic_workspace_symbols, opts)vim.keymap.set('n', '<leader>K', telescope_builtin.lsp_definitions, opts)vim.keymap.set('n', '<leader>b', telescope_builtin.buffers, opts)vim.keymap.set('n', '<leader>d', telescope_builtin.diagnostics, opts)vim.keymap.set('n', '<leader>j', telescope_builtin.jumplist, opts)vim.keymap.set('n', '<leader>r', telescope_builtin.registers, opts)vim.keymap.set('n', '<leader>m', telescope_builtin.marks, opts)vim.keymap.set('n', '<leader>q', telescope_builtin.quickfix, opts)vim.keymap.set('n', '<leader>l', telescope_builtin.loclist, opts)