Emulate a typewriter

Showing 1-6 of 6 messages
Emulate a typewriter Tom Link 5/22/09 2:17 AM
Hi,

What would be the best way to emulate this in vim:

http://lifehacker.com/5263560/typewriter-forces-you-to-focus-while-you-write
http://www.lifehackingmovie.com/2009/05/18/typewriter-minimal-text-editor-freeware/

I was thinking of putting vim into insert mode and of remapping all
keys that would get you out of it & of disabling cursor keys and the
like. Any other ideas? Any idea of how to remap all those keys
automatically via vimscript?

Regards,
Thomas.
Re: Emulate a typewriter Andy Wokula 5/22/09 5:40 AM
Tom Link schrieb:

Isn't getchar() the first thing that comes to mind?
but ok: getchar() shows the cursor in the cmdline when waiting for input.

here is a workaround (use incomplete mapping to delay getchar() until
a char is available):


let g:twm_allowed_pat = '^[[:alnum:] \t\r,.!?]$'

" start typewrite mode (stop with CTRL-C):
nmap <Leader>tw <Plug>twm

nmap <script> <Plug>twm i<SID>m_
imap              <Plug>twm <SID>m_

imap <SID>m_<Esc>        <SID>m_
ino <silent> <SID>m_        <C-R>=TwGetchar()<CR>

func! TwGetchar()
    if getchar(1)
        let chr = s:getchar()
    else
        let chr = "\<Plug>"
    endif
    call feedkeys("\<Plug>twm")
    if chr =~ g:twm_allowed_pat
        return chr
    endif
    return ""
endfunc

func! s:getchar()
    let chr = getchar()
    if chr != 0
        let chr = nr2char(chr)
    endif
    return chr
endfunc


<SID>m_ causes a "_" to show up in the text.
<SID>m_<Esc> is mapped to give Vim something to wait for.

Tried on a win32 gVim.

--
Andy

Re: Emulate a typewriter ewfalor 5/22/09 9:38 AM

There's also this link:
http://wondermark.com/519/

--
Erik Falor
Registered Linux User #445632 http://counter.li.org

Re: Emulate a typewriter Tom Link 5/23/09 2:23 AM
> Isn't getchar() the first thing that comes to mind?

Thank you very much for the code. Interesting approach. I had to make
a small change though to make <c-c> abort the typewriter mode.
Re: Emulate a typewriter Tom Link 5/23/09 2:25 AM
> There's also this link:http://wondermark.com/519/

It's funny because it's true. :-)
Re: Emulate a typewriter Liang Li 1/30/14 7:07 AM
Hey Andy,

Your script is awesome! The way that you capitalized on vim's handling of ambiguous mappings to slow down the input loop is pretty awesome. Coolest peice of vimscript I've ever seen.

Don't let it get to your head ;-)

- Leon