Skip to content

Instantly share code, notes, and snippets.

@randomize
Created March 18, 2017 16:17
Show Gist options
  • Save randomize/671df56f71400e5e3e0a27c8f0f6371b to your computer and use it in GitHub Desktop.
Save randomize/671df56f71400e5e3e0a27c8f0f6371b to your computer and use it in GitHub Desktop.
toggle.vim
" Stupid Eugene's plugin that does similar thing to switch.vim
let g:toggle_definitions =
\ [
\ 's/public/private/',
\ 's/private/pretected/',
\ 's/pretected/public/',
\
\ 's/class/struct/',
\ 's/struct/class/',
\
\ 's/OnEnable/OnDisable/',
\ 's/OnDisable/OnEnable/',
\
\ 's/+=/-=/',
\ 's/-=/+=/',
\
\ 's/\cEtrue/false/',
\ 's/\cEfalse/true/'
\ ]
function! Dotoggle()
let saved_cursor = getpos('.')
for tog in g:toggle_definitions
let c = col('.')
let tog = substitute( tog, '\\cS', '\\%<'.(c+1).'c', "g")
let tog = substitute( tog, '\\cs', '\\%<'.c.'c', "g")
let tog = substitute( tog, '\\cE', '\\%>'.(c-1).'c', "g")
let tog = substitute( tog, '\\ce', '\\%>'.c.'c', "g")
try
" echo tog
execute( tog )
break
catch
continue
endtry
endfor
call setpos('.', saved_cursor)
endfunction
" false false true
nmap <space>t :source toggle.vim<CR>:call Dotoggle()<CR>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment