let mapleader = " " " move text buffer in visual mode vnoremap K :m '<-2gv=gv vnoremap J :m '>+1gv=gv " write and quit easier nnoremap w :w nnoremap z :wq nnoremap q :qa nnoremap e :q " windows commands nnoremap pv :wincmd v :Ex :vertical resize 30 nnoremap ps :Rg nnoremap rh :vertical resize +5 nnoremap rl :vertical resize -5 " general custom commands command D filetype detect " commands for opening and compiling various document types command S silent !vshow '%:p' command C !compile "%" " general compile button map :w:!compile "%" && pkill -HUP mupdf " bibtex extra compiler map :w:!latexmk -pdf "%" && pkill -HUP mupdf map :noh map :set spell! map :w:!glosscompile "%" && pkill -HUP mupdf " jumper vnoremap /<++>"_c4l map /<++>"_c4l "copy from / to clipboard vnoremap y "+y vnoremap Y "+Y nmap p "+p nmap P "+P " Use `[g` and `]g` to navigate diagnostics nnoremap [g lua vim.diagnostic.goto_prev() nnoremap ]g lua vim.diagnostic.goto_next() " Use d to manually open diagnostic popup nnoremap d lua vim.diagnostic.open_float() " Remap keys for gotos nnoremap gd lua vim.lsp.buf.definition() nnoremap gy lua vim.lsp.buf.type_definition() nnoremap gi lua vim.lsp.buf.implementation() nnoremap gr lua vim.lsp.buf.references() nnoremap rn lua vim.lsp.buf.rename() " LSP code actions (Extract function, organize imports, etc.) nnoremap a lua vim.lsp.buf.code_action() xnoremap a lua vim.lsp.buf.code_action() " switch (back and forth) to (and from) the last opened file nmap b noremap f :Fern . -drawer -reveal=% -toggle -width=35= function! FernInit() abort nmap \ (fern-my-open-expand-collapse) \ fern#smart#leaf( \ "\(fern-action-open:select)", \ "\(fern-action-expand:stay)", \ "\(fern-action-collapse)", \ ) nmap (fern-my-open-expand-collapse) nmap <2-LeftMouse> (fern-my-open-expand-collapse) nmap n (fern-action-new-path) nmap d (fern-action-remove) nmap m (fern-action-move) nmap M (fern-action-rename) nmap c (fern-action-hidden:toggle) nmap r (fern-action-reload) nmap g (fern-action-mark:toggle) nmap o (fern-action-open) nmap b (fern-action-open:split) nmap v (fern-action-open:vsplit) nmap h (fern-action-collapse) nmap l (fern-action-expand:stay) nmap p (fern-action-preview:toggle) nmap (fern-action-preview:auto:toggle) nmap (fern-action-preview:scroll:down:half) nmap (fern-action-preview:scroll:up:half) nmap < (fern-action-leave) nmap > (fern-action-enter) endfunction " Use `:Format` to format current buffer command! -nargs=0 Format :lua require("conform").format() cabbrev Black Format " Go to tab by number noremap 1 1gt noremap 2 2gt noremap 3 3gt noremap 4 4gt noremap 5 5gt noremap 6 6gt noremap 7 7gt noremap 8 8gt noremap 9 9gt noremap 0 :tablast " auto center view when walking through searches nnoremap n nzzzv nnoremap N Nzzzv " toggle tag bar nmap g :TagbarToggle " please write cmap w!! w !doas tee % function! WinMove(key) let t:curwin = winnr() exec "wincmd ".a:key if (t:curwin == winnr()) if (match(a:key,'[jk]')) wincmd v else wincmd s endif exec "wincmd ".a:key endif endfunction " smart global buffor / window switching nnoremap :call WinMove('h') nnoremap :call WinMove('j') nnoremap :call WinMove('k') nnoremap :call WinMove('l') " source vim config nnoremap sv :source $XDG_CONFIG_HOME/nvim/init.vim nnoremap l :Telescope live_grep nnoremap t :Telescope git_files nnoremap z :Telescope find_files nnoremap :Telescope grep_string " markdown preview mappings nmap mg MarkdownPreview nmap ms MarkdownPreviewStop nmap mt MarkdownPreviewToggle " correct whitespace nnoremap cw :StripWhitespace " move to next / previous trailing whitespace nnoremap ]w :NextTrailingWhitespace nnoremap [w :PrevTrailingWhitespace " spell jump nnoremap ]s ]s nnoremap [s [s nnoremap da :call vimspector#Launch() nnoremap dc :call GotoWindow(g:vimspector_session_windows.code) nnoremap dv :call GotoWindow(g:vimspector_session_windows.variables) nnoremap dw :call vimspector#ClearBreakpoints() nnoremap ds :call GotoWindow(g:vimspector_session_windows.stack_trace) nnoremap do :call GotoWindow(g:vimspector_session_windows.output) nnoremap di :call AddToWatch() nnoremap dx :call vimspector#Reset() nnoremap dX :call vimspector#ClearBreakpoints() nnoremap :call vimspector#StepOut() nnoremap :call vimspector#StepInto() nnoremap :call vimspector#StepOver() nnoremap d_ :call vimspector#Restart() nnoremap dn :call vimspector#Continue() nnoremap drc :call vimspector#RunToCursor() nnoremap dh :call vimspector#ToggleBreakpoint() nnoremap de :call vimspector#ToggleConditionalBreakpoint()