let mapleader = " " set modeline set wrap set autoindent set noexpandtab set tabstop=2 set shiftwidth=2 set termguicolors set shortmess+=It set splitbelow splitright set noshowmode set ignorecase set smartcase set timeoutlen=500 set updatetime=100 set smoothscroll set mouse=a set cino=N-s,E-s,l1,g-1,j1 set linebreak " set wrap but don't wrap inside words set viminfo+='1000,n~/.local/nvim/viminfo set guifont=monospace:h7.5:#e-subpixelantialias set linespace=3 set tabpagemax=999 set breakindent set breakindentopt+=list:-1,shift:-2 set showbreak=:\ set formatoptions+=mM set tags^=build/tags set ssop-=options set guicursor=n-v-c-sm:block,i-ci-ve:ver20,r-cr-o:hor05,t:block-TermCursor let g:sneak#label = 1 let g:which_key_map = {} let g:airline_powerline_fonts = 1 let g:minimap_highlight='Visual' let g:python3_host_prog='/usr/bin/python3' let g:DiffColors = 0 let g:AutoPairsMultilineClose = 0 filetype plugin on if exists("g:neovide") nmap :lua vim.g.neovide_scale_factor = vim.g.neovide_scale_factor + 0.1 nmap :lua vim.g.neovide_scale_factor = vim.g.neovide_scale_factor + 0.1 nmap :lua vim.g.neovide_scale_factor = vim.g.neovide_scale_factor - 0.1 nmap :lua vim.g.neovide_scale_factor = vim.g.neovide_scale_factor - 0.1 nmap :lua vim.g.neovide_scale_factor = 1 let g:smoothie_enabled = v:false let g:neovide_scroll_animation_length = 0.16 let g:neovide_floating_shadow = v:false let g:neovide_cursor_animation_length = 0.04 let g:neovide_cursor_trail_size = 0.0 let g:neovide_padding_top=10 let g:neovide_padding_left=10 let g:neovide_padding_right=10 let g:neovide_padding_bottom=10 endif " plugged call plug#begin('~/.config/nvim/plugged') " tim <3 Plug 'tpope/vim-surround' Plug 'tpope/vim-speeddating' Plug 'tpope/vim-eunuch' Plug 'tpope/vim-commentary' " quality of life Plug 'jiangmiao/auto-pairs' Plug 'itchyny/lightline.vim' Plug 'terryma/vim-multiple-cursors' Plug 'liuchengxu/vim-which-key' Plug 'justinmk/vim-sneak' Plug 'mbbill/undotree' Plug 'neoclide/coc.nvim', {'branch': 'release'} Plug 'puremourning/vimspector' Plug 'junegunn/goyo.vim' Plug 'psliwka/vim-smoothie' Plug 'airblade/vim-gitgutter' Plug 'wellle/targets.vim' Plug 'dkarter/bullets.vim' Plug 'editorconfig/editorconfig-vim' Plug 'rickhowe/diffunitsyntax' Plug 'lervag/file-line' Plug 'vim-scripts/AnsiEsc.vim' Plug 'vim-scripts/taglist.vim' " language plugins Plug 'lervag/vimtex' Plug 'hail2u/vim-css3-syntax' Plug 'octol/vim-cpp-enhanced-highlight' Plug 'vim-python/python-syntax' Plug 'dart-lang/dart-vim-plugin' Plug 'bartlomiejdanek/vim-dart' Plug 'HerringtonDarkholme/yats.vim' Plug 'cespare/vim-toml' Plug 'tikhomirov/vim-glsl' Plug 'vim-scripts/syntaxm4.vim' Plug 'elkowar/yuck.vim' Plug 'eraserhd/parinfer-rust', {'do': 'cargo build --release'} Plug 'kaarmu/typst.vim' Plug 'aklt/plantuml-syntax' Plug 'fymyte/rasi.vim' Plug 'habamax/vim-asciidoctor' Plug 'lonkaars/coc-khard' Plug 'sile-typesetter/vim-sile' Plug 'ahf/cocci-syntax' Plug 's3rvac/vim-syntax-jira' " themes Plug 'arzg/vim-colors-xcode' Plug 'romgrk/github-light.vim' Plug 'vv9k/vim-github-dark' Plug 'rose-pine/neovim', {'as': 'rose-pine'} Plug '~/.config/nvim/local/coc-markdown-links' call plug#end() " keybinds tnoremap nnoremap tt :tabnew nnoremap o nnoremap qf (coc-fix-current) nnoremap * yiw:let @/='\<=expand("")\>':set hls nnoremap :m +1 nnoremap :m -2 nnoremap gd :call CocAction('jumpDefinition') nnoremap d :call CocAction('jumpDefinition', 'vsplit') imap imap imap imap command UTF2Latex \ :%s/‘/`/ge | \ :%s/’/'/ge | \ :%s/“/``/ge | \ :%s/”/''/ge | \ :%s/–/--/ge | \ :%s/—/---/ge command UTF2Ascii \ :%s/‘/'/ge | \ :%s/’/'/ge | \ :%s/“/"/ge | \ :%s/”/"/ge | \ :%s/–/--/ge | \ :%s/—/---/ge " leader keybindings nnoremap :WhichKey '' map vo VimspectorContinue map vq VimspectorStop map vr VimspectorRestart map vp VimspectorPause map vb VimspectorToggleBreakpoint map vc VimspectorToggleConditionalBreakpoint map vf VimspectorAddFunctionBreakpoint map vn VimspectorStepOver map vi VimspectorStepInto map vu VimspectorStepOut let g:which_key_map.v = { \ 'name': '+vimspector', \ 'o': 'continue', \ 'q': 'stop', \ 'r': 'restart', \ 'p': 'pause', \ 'b': 'toggle breakpoint', \ 'c': 'toggle conditional breakpoint', \ 'f': 'add function breakpoint', \ 'n': 'step over', \ 'i': 'step into', \ 'u': 'step out' \ } map p "+p map y "+y let g:which_key_map.p = 'x11 paste' let g:which_key_map.y = 'x11 yank' map w :w let g:which_key_map.w = 'write' map dv :VimtexView map dc :VimtexCompile map de :VimtexErrors map dt :VimtexTocToggle let g:which_key_map.d = { \ 'name': '+document', \ 'v': 'view', \ 'c': 'compile', \ 'e': 'errors', \ 't': 'table of contents' \ } map ts :sp term://zshi map tv :vsp term://zshi map tt :tabnew term://zshi let g:which_key_map.t = { \ 'name': '+term', \ 's': 'split', \ 'v': 'vsplit', \ 't': 'tab' \ } map .v :tabnew ~/.config/nvim/init.vim let g:which_key_map['.'] = { \ 'name': '+config', \ 'v': 'vim', \ } map u :UndotreeToggle let g:which_key_map.u = 'toggle undo tree' nnoremap e 0f!xC=system(@-)ddk$ let g:which_key_map.e = 'read and execute after !' nnoremap ] vzt let g:which_key_map[']'] = 'open tag in split' nnoremap [ :call jobstart(['sdk10-dox-open', expand("")], {'detach': v:true}) " cmd maps cnoreabbrev W w cnoreabbrev sudow w !sudo tee % " emacs bindings in vim command-line cnoremap cnoremap cnoremap cnoremap cnoremap " hexokinase let g:Hexokinase_termDisabled = 1 let g:Hexokinase_optOutPatterns = [ 'colour_names' ] " lightline let g:lightline = { \ 'colorscheme': 'auto', \ 'mode_map': { \ 'n' : 'norm', \ 'i' : 'ins', \ 'R' : 'rep', \ 'v' : 'vis', \ 'V' : 'v-l', \ "\": 'v-b', \ 'c' : 'cmd', \ 's' : 'sel', \ 'S' : 's-l', \ "\": 's-b', \ 't': 'term', \ }, \ 'active': { \ 'left': [ \ [ 'mode', 'paste' ], \ [ 'readonly', 'filename', 'modified'], \ ], \ 'right': [ [ 'lineinfo' ] ], \ }, \ 'inactive': { \ 'left': [ \ [ 'readonly', 'filename', 'modified'], \ ], \ 'right': [ [ 'lineinfo' ] ], \ }, \ 'tabline': { \ 'left': [ [ 'tabs' ] ], \ 'right': [ ], \ }, \ 'subseparator': { \ 'left': '', \ 'right': '', \ }, \ } call lightline#init() " vimtex config let g:tex_flavor = 'latex' let g:vimtex_quickfix_open_on_warning = 0 let g:vimtex_imaps_enabled = 0 let g:vimtex_compiler_method = 'latexmk' let g:vimtex_compiler_latexmk_engines = { '_': '' } " TeX quotes autocmd FileType tex let b:surround_{char2nr("q")} = "`\r'" autocmd FileType tex let b:surround_{char2nr('Q')} = "``\r''" autocmd FileType tex let b:AutoPairs = {'(':')', '[':']', '{':'}', "``":"''", "`":"'", '$':'$', '"':'"'} " AutoPairs for plantuml autocmd FileType plantuml let b:AutoPairs = {'(':')', '[':']', '{':'}', '`':'`'} " coc.vim completion and stuff function! CheckBackspace() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction inoremap \ coc#pum#visible() ? coc#pum#next(1) : \ CheckBackspace() ? "\" : \ coc#refresh() inoremap coc#pum#visible() ? coc#pum#prev(1) : "\" function! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction if has("patch-8.1.1564") set signcolumn=number else set signcolumn=yes endif inoremap coc#pum#visible() ? coc#pum#confirm() : "\u\\=coc#on_enter()\" " coc code navigation map cd (coc-definition) map cy (coc-type-definition) map ci (coc-implementation) map cr (coc-references) map cn (coc-rename) let g:which_key_map.c = { \ 'name': '+coc', \ 'd': 'definition', \ 'y': 'type definition', \ 'i': 'implementation', \ 'r': 'references', \ 'n': 'rename' \ } " use for trigger completion inoremap coc#refresh() " auto-comment uit " autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o " which key register dict call which_key#register('', "g:which_key_map") " no line numbers in terminal augroup TerminalStuff " Clear old autocommands au! autocmd TermOpen * setlocal nonumber norelativenumber autocmd TermOpen * set signcolumn=no augroup END " python-syntax " let g:python_highlight_all = 1 let g:python_recommended_style = 0 " autocmd FileType python setlocal noexpandtab au BufRead,BufNewFile *.py set expandtab function! SynStack() if !exists("*synstack") return endif echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")') endfunc " markdown let g:markdown_enable_spell_checking = 0 au FileType markdown set expandtab " asciidoc au FileType asciidoctor set expandtab " binary files augroup Binary au! au BufReadPre *.bin let &bin=1 au BufReadPost *.bin if &bin | %!xxd au BufReadPost *.bin set ft=xxd | endif au BufWritePre *.bin if &bin | %!xxd -r au BufWritePre *.bin endif au BufWritePost *.bin if &bin | %!xxd au BufWritePost *.bin set nomod | endif au BufWritePost *.bin set noeol augroup END " highlight Zephyr .overlay files as devicetree source (dts) augroup devicetree_ft au! au BufRead,BufNewFile *.overlay set syntax=dts au BufRead,BufNewFile *.dtsi set syntax=dts augroup END augroup BibLaTeX " add allowed characters in biblatex labels to word delimiters autocmd! autocmd FileType bib setlocal iskeyword+=:,- augroup END " sneak let g:sneak#use_ic_scs = 0 " fcitx5 autocmd InsertEnter * call system("fcitx5-temp-restore &") autocmd InsertLeave * call system("fcitx5-temp-off &") " colorscheme source $XDG_CONFIG_HOME/nvim/mode.vim " use .exrc files set exrc set secure " file-line let g:file_line_crosshairs = v:false