-- Set as the leader key -- See `:help mapleader` -- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used) 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 require 'opt' require 'keymap' require 'autocmd' require 'lazy_init' -- " Run the Code Lens action on the current line -- nmap cl (coc-codelens-action) -- -- " Map function and class text objects -- " NOTE: Requires 'textDocument.documentSymbol' support from the language server -- xmap if (coc-funcobj-i) -- omap if (coc-funcobj-i) -- xmap af (coc-funcobj-a) -- omap af (coc-funcobj-a) -- xmap ic (coc-classobj-i) -- omap ic (coc-classobj-i) -- xmap ac (coc-classobj-a) -- omap ac (coc-classobj-a) -- -- " Remap and to scroll float windows/popups -- " if has('nvim-0.4.0') || has('patch-8.2.0750') -- " nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" -- " nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" -- " inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" -- " inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" -- " vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" -- " vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" -- " endif -- -- " Use CTRL-S for selections ranges -- " Requires 'textDocument/selectionRange' support of language server -- nmap (coc-range-select) -- xmap (coc-range-select) -- -- " Add `:Format` command to format current buffer -- command! -nargs=0 Format :call CocActionAsync('format') -- -- " Add `:Fold` command to fold current buffer -- command! -nargs=? Fold :call CocAction('fold', ) -- -- " Add `:OR` command for organize imports of the current buffer -- command! -nargs=0 OR :call CocActionAsync('runCommand', 'editor.action.organizeImport') -- -- " Add (Neo)Vim's native statusline support -- " NOTE: Please see `:h coc-status` for integrations with external plugins that -- " provide custom statusline: lightline.vim, vim-airline -- set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} -- -- -- " Mappings for CoCList -- " Show all diagnostics -- nnoremap a :CocList diagnostics -- " Manage extensions -- nnoremap e :CocList extensions -- " Show commands -- nnoremap c :CocList commands -- " Find symbol of current document -- nnoremap o :CocList outline -- " Search workspace symbols -- nnoremap s :CocList -I symbols -- " Do default action for next item -- nnoremap j :CocNext -- " Do default action for previous item -- nnoremap k :CocPrev -- " Resume latest coc list -- nnoremap p :CocListResume -- -- " }}} -- -- " Emmet --- {{{ -- " Toggle emmet completion using with em -- let g:emmet_completion = 0 -- function ToggleEmmet() -- if g:emmet_completion -- echo "Emmet completion off!" -- let g:user_emmet_expandabbr_key=',' -- iunmap -- let g:emmet_completion = 0 -- else -- echo "Emmet completion on!" -- let g:user_emmet_expandabbr_key='' -- imap emmet#expandAbbrIntelligent("\") -- let g:emmet_completion = 1 -- endif -- endfunction -- nnoremap em :call ToggleEmmet() -- " }}} -- -- " Markdown --- {{{ -- " Conceal markdown text -- set conceallevel=3 -- " }}} -- -- " AutoPairs --- {{{ -- let g:AutoPairsFlyMode = 0 -- let g:AutoPairsShortcutBackInsert = '' " Use to insert the closing parentheses if it jumped ahead by mistake -- " }}} -- -- " CHADTree --- {{{ -- let g:chadtree_settings = { -- \ 'theme': { -- \ 'icon_glyph_set': 'devicons', -- \ 'text_colour_set': 'env', -- \ 'icon_colour_set': 'github', -- \ "discrete_colour_map": { -- \ "black": "#21222c", -- \ "red": "#ff5555", -- \ "green": "#50fa7b", -- \ "yellow": "#f1fa8c", -- \ "blue": "#bd93f9", -- \ "magenta": "#ff79c6", -- \ "cyan": "#8be9fd", -- \ "white": "#f8f8f2", -- \ "bright_black": "#6272a4", -- \ "bright_red": "#ff6e6e", -- \ "bright_green": "#69ff94", -- \ "bright_yellow": "#ffffa5", -- \ "bright_blue": "#d6acff", -- \ "bright_magenta": "#ff92df", -- \ "bright_cyan": "#a4ffff", -- \ "bright_white": "#ffffff" -- \ } -- \ } -- \ } -- " }}} -- -- " Commentary --- {{{ -- " function s:set_commentary_format() -- " echo "running command" -- " if &filetype =~ 'vue\|html\|svelte' -- " if searchpair('<\(script\|style\)', '', '', 'Wn') -- " let b:commentary_format="// %s" -- " else -- " let b:commentary_format=&commentstring -- " endif -- " endif -- " endfunction -- -- " xnoremap gc :call set_commentary_format()Commentary -- " nnoremap gc :call set_commentary_format()Commentary -- " onoremap gc :call set_commentary_format()Commentary -- " nnoremap gcc :call set_commentary_format()Commentary -- " nnoremap cgc :call set_commentary_format()Commentary -- " nnoremap cgu :call set_commentary_format()CommentaryCommentary -- " }}} -- -- " Easymotion --- {{{ -- let g:EasyMotion_do_mapping = 0 " Disable default mappings -- -- map (easymotion-prefix) -- " Jump to anywhere you want with minimal keystrokes, with just one key binding. -- " `s{char}{label} -- nmap s (easymotion-overwin-f) -- -- " Turn on case-insensitive feature -- let g:EasyMotion_smartcase = 1 -- -- " JK motions: Line motions -- map j (easymotion-j) -- map k (easymotion-k) -- " }}} -- -- " }}} -- -- " PHP --- {{{ -- " function! RunPHPUnitTest() -- " cd %:p:h -- " normal! T yw -- " let result = system("phpunit --filter " . @" . " " . bufname("%")) -- " split __PHPUnit_Result__ -- " normal! ggdG -- " setlocal buftype=nofile -- " call append(0, split(result, '\v\n')) -- " cd - -- " endfunction -- -- " nnoremap :call RunPHPUnitTest() -- " }}} -- -- " Moving around --- {{{ -- "Use capital H and L to move to the start and end of lines -- nnoremap H ^ -- nnoremap L $ -- -- " }}} -- -- " Operator mappings --- {{{ -- onoremap in( :normal! f(vi( -- onoremap il( :normal! F)vi( -- onoremap an( :normal! f(va( -- onoremap al( :normal! F)va( -- onoremap an{ :normal! f{vi{ -- onoremap al{ :normal! F}vi -- " }}} -- -- " Abbreviations --- {{{ -- iabbrev adn and -- iabbrev waht what -- iabbrev tehn then -- iabbrev tihs this -- iabbrev teh the -- iabbrev Teh The -- " }}} -- -- " Auto-Commands --- {{{ -- -- augroup modes -- autocmd! -- autocmd FocusLost * call feedkeys("\") "Go to normal mode when moving away -- autocmd BufNewFile * call feedkeys("i") "Go to insert mode when starting a new file -- augroup END -- -- "Recompile suckless software when updating config -- augroup suckless -- autocmd BufWritePost ~/.local/src/dwmblocks/config.h !cd ~/.local/src/dwmblocks/; doas make install && { killall -q dwmblocks;setsid -f dwmblocks } -- autocmd BufWritePost ~/.local/src/dwm/config.h !cd ~/.local/src/dwm/; doas make clean install -- autocmd BufWritePost ~/.local/src/st/config.h !cd ~/.local/src/st/; doas make clean install -- " }}} -- -- " Notes and tips -- " - press 'zz' to instantly center the line where the cursor is located. -- " - You can increment numbers with . -- " - To operate on multiple lines use to select the lines, to go to -- " insert mode, perform edit, press . -- " - Use the command :r to paste the output of a command to the buffer.