nnoremap yw :call WindowSwap#EasyWindowSwap() unmap ww " --------- SURROUND MAPPINGS --------- " " Surround a word with "quotes" map " ysiw" vmap " c""" " ' Surround a word with 'single quotes' map ' ysiw' vmap ' c'"' " ' Surround a word with 'ticks' map ` ysiw` vmap ` c`"` " --------- SEARCH MAPPINGS --------- " unhilight search nnoremap :nohlsearch " EZ Ack search " nnoremap a :Ack! " nnoremap A :Ack! " --------- CLIPBOARD MAPPINGS --------- " Paste from OS clipboard map v i"+pa vmap v c"+p imap v "+pa " Copy to OS clipboard " vnoremap y "yy :call system('xclip', @y) " map y "yy :call system('xclip', @y) " --------- WINDOW/PANE MAPPINGS --------- map wr r map H :wincmd H map K :wincmd K map L :wincmd L map J :wincmd J map x :wincmd x " resize vertical split to 1/3 or 2/3 size nnoremap s+ :exe "vertical resize " . (winwidth(0) * 5/4) nnoremap s- :exe "vertical resize " . (winwidth(0) * 4/5) " resize horizontal split to 1/3 or 2/3 size nnoremap x+ :exe "resize " . (winheight(0) * 3/2) nnoremap x- :exe "resize " . (winheight(0) * 2/3) " --------- FORMATTING MAPPINGS --------- " indent file map = gg=G `` " format HTML/JSON map fh :%s/>\s*\r map fj :%!python -m json.tool map fjs :call UnMinify() "command! UnMinify call UnMinify() function! UnMinify() %s/{\ze[^\r\n]/{\r/g %s/){/) {/g %s/};\?\ze[^\r\n]/\0\r/g %s/;\ze[^\r\n]/;\r/g %s/[^\s]\zs[=&|]\+\ze[^\s]/ \0 /g normal ggVG= endfunction nmap toi :CocCommand tsserver.organizeImports "" --------- NERD Commenter " Create default mappings let g:NERDCreateDefaultMappings = 0 " Add spaces after comment delimiters by default let g:NERDSpaceDelims = 1 " Use compact syntax for prettified multi-line comments let g:NERDCompactSexyComs = 1 " Align line-wise comment delimiters flush left instead of following code indentation let g:NERDDefaultAlign = 'left' " Set a language to use its alternate delimiters by default let g:NERDAltDelims_java = 1 " Allow commenting and inverting empty lines (useful when commenting a region) let g:NERDCommentEmptyLines = 1 " Enable trimming of trailing whitespace when uncommenting let g:NERDTrimTrailingWhitespace = 1 "Enable NERDCommenterToggle to check all selected lines is commented or not let g:NERDToggleCheckAllLines = 1 nnoremap c :call nerdcommenter#Comment(0,"toggle") vnoremap c :call nerdcommenter#Comment(0,"toggle") nnoremap c$ :call nerdcommenter#Comment(0,"ToEOL") vnoremap c$ :call nerdcommenter#Comment(0,"ToEOL") nmap yf :let @" = expand("%") nmap ut :UndotreeToggle nmap e :e %% " replace currently selected text with default register " without yanking it vnoremap p "_dP nnoremap rp :VimuxOpenRunner :VimuxRunCommand '!!' :call VimuxSendKeys("Enter") "Showing highlight groups " nmap sp :call SynStack() nmap shg :call SynStack() function! SynStack() if !exists("*synstack") return endif echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")') endfunc nnoremap s :SaveSession " copy to attached terminal using the yank(1) script: " https://github.com/sunaku/home/blob/master/bin/yank function! Yank(text) abort let escape = system('yank', a:text) if v:shell_error echoerr escape else call writefile([escape], '/dev/tty', 'b') endif endfunction noremap y y:call Yank(@0) " automatically run yank(1) whenever yanking in Vim " (this snippet was contributed by Larry Sanderson) function! CopyYank() abort call Yank(join(v:event.regcontents, "\n")) endfunction " autocmd TextYankPost * call CopyYank() noremap y call CopyYank() vnoremap y call CopyYank()