I found a tips on wikia, it can autocapitalize first character in sentence. Bellowing is the code in my vimrc. But I found that those mappings in "if" statement can not work. Is there anyone know why ? (The original code does not have the "if" statement. I add it by myself.)
"Inputing '/' cancels capitalizing without delay function! CapNextKey(prev) redraw let input = nr2char(getchar()) let input = (input == '/' ? "\e" : input) if input=~'[.?!\r[:blank:]]' "punctuations, return, spaces exe 'normal! i' . input . "\<Right>" return CapNextKey(input) elseif input=="\e" return "\<del>" elseif a:prev=~'[\r[:blank:]]' return toupper(input) . "\<del>" else return input . "\<del>" endif endfunction function! InsertEnterCheck() let trunc = getline(".")[0:col(".")-2] if col(".")==1 return CapNextKey("\r") elseif trunc=~'[?!.]\s*$\|^\s*$' "ie, 'text.[t]ext' return CapNextKey(trunc[-1:-1]) else return "\<Del>" endif endfunction " FIXME those maps can not run in "if" statement. if &filetype == "markdown" || &filetype == "mail" inoremap <silent> . ._<Left><C-R>=CapNextKey(".")<CR> inoremap <silent> ? ?_<Left><C-R>=CapNextKey("?")<CR> inoremap <silent> ! !_<Left><C-R>=CapNextKey("!")<CR> inoremap <silent> <CR> <CR>_<Left><C-R>=CapNextKey("\r")<CR> nnoremap <silent> o o_<Left><C-R>=CapNextKey("\r")<CR> nnoremap <silent> O O_<Left><C-R>=CapNextKey("\r")<CR> nnoremap <silent> a a_<Left><C-R>=InsertEnterCheck()<CR> nnoremap <silent> A A_<Left><C-R>=InsertEnterCheck()<CR> nnoremap <silent> i i_<Left><C-R>=InsertEnterCheck()<CR> nnoremap <silent> I I_<Left><C-R>=InsertEnterCheck()<CR> endif -- [stardiviner] <fuck you, world!> GPG key ID: 47C32433 IRC(freeenode): Evanescence Twitter: @numbchild Key fingerprint = 9BAA 92BC CDDD B9EF 3B36 CB99 B8C4 B8E5 47C3 2433 http://stardiviner.dyndns-blog.com/author.html
signature.asc
Description: Digital signature