Tom Link schrieb:
> 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.
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
--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---