Skip to content

Instantly share code, notes, and snippets.

@takac
Created July 15, 2013 15:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takac/6001114 to your computer and use it in GitHub Desktop.
Save takac/6001114 to your computer and use it in GitHub Desktop.
Start of vim script to stop repeating movement keys
command! HardTimeOn call HardTimeOn()
command! HardTimeOff call HardTimeOff()
fun! HardTimeOff()
silent! nunmap <buffer> h
silent! nunmap <buffer> j
silent! nunmap <buffer> k
silent! nunmap <buffer> l
silent! nunmap <buffer> -
silent! nunmap <buffer> +
endf
fun! HardTimeOn()
nnoremap <buffer> <silent> <expr> j GoAgain() ? "j" : TooSoon()
nnoremap <buffer> <silent> <expr> k GoAgain() ? "k" : TooSoon()
nnoremap <buffer> <silent> <expr> + GoAgain() ? "+" : TooSoon()
nnoremap <buffer> <silent> <expr> - GoAgain() ? "-" : TooSoon()
nnoremap <buffer> <silent> <expr> l GoAgain() ? "l" : TooSoon()
nnoremap <buffer> <silent> <expr> h GoAgain() ? "h" : TooSoon()
endf
" Timeout in seconds
let g:hardtime_timeout = 1
let s:lasttime = 0
fun! GoAgain()
let now = GetNow()
if now > s:lasttime + g:hardtime_timeout
let s:lasttime = now
return 1
else
return 0
endif
endf
fun! TooSoon()
echo "Too Soon\r"
return ""
endf
fun! GetNow()
return localtime()
endf
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment