Skip to content

Instantly share code, notes, and snippets.

@wellle
Created November 14, 2013 00:12
Show Gist options
  • Save wellle/7458953 to your computer and use it in GitHub Desktop.
Save wellle/7458953 to your computer and use it in GitHub Desktop.
" pairs
for mapmode in [ "o", "x" ]
for delimiter in [ "{}", "()", "[]", "<>" ]
let opening = delimiter[0]
let closing = delimiter[1]
for modifier in [ "i", "a" ]
for trigger in [ opening, closing ]
execute mapmode . "noremap <silent> " . modifier . "n" . trigger . " :<C-U>normal! f" . opening . "v" . modifier . closing . "<CR>"
execute mapmode . "noremap <silent> " . modifier . "l" . trigger . " :<C-U>normal! F" . closing . "v" . modifier . opening . "<CR>"
endfor
endfor
endfor
" single (text objects like da. delete one dot)
for delimiter in [ "_", ".", ":", ",", ";", "<bar>", "/", "<bslash>", "*" ]
execute mapmode . "noremap <silent> i" . delimiter . " :<C-U>normal! t" . delimiter . "vT" . delimiter . "<CR>"
execute mapmode . "noremap <silent> a" . delimiter . " :<C-U>normal! f" . delimiter . "vT" . delimiter . "<CR>"
execute mapmode . "noremap <silent> in" . delimiter . " :<C-U>normal! f" . delimiter . "lvt" . delimiter . "<CR>"
execute mapmode . "noremap <silent> an" . delimiter . " :<C-U>normal! f" . delimiter . "lvf" . delimiter . "<CR>"
execute mapmode . "noremap <silent> il" . delimiter . " :<C-U>normal! F" . delimiter . "hvT" . delimiter . "<CR>"
execute mapmode . "noremap <silent> al" . delimiter . " :<C-U>normal! F" . delimiter . "vT" . delimiter . "<CR>"
endfor
" double (text objects like dan" delete both quotes)
" doesn't handle one surrounding whitespace like da" does
for delimiter in [ "\"", "'", "`" ]
execute mapmode . "noremap <silent> in" . delimiter . " :<C-U>normal! f" . delimiter . "lvt" . delimiter . "<CR>" | " same as above
execute mapmode . "noremap <silent> an" . delimiter . " :<C-U>normal! f" . delimiter . "vf" . delimiter . "<CR>" | " same as above
execute mapmode . "noremap <silent> il" . delimiter . " :<C-U>normal! F" . delimiter . "hvT" . delimiter . "<CR>"
execute mapmode . "noremap <silent> al" . delimiter . " :<C-U>normal! F" . delimiter . "vF" . delimiter . "<CR>"
endfor
endfor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment