Fast word count function in Vim

后端 未结 16 2074
后悔当初
后悔当初 2020-12-08 00:27

I am trying to display a live word count in the vim statusline. I do this by setting my status line in my .vimrc and inserting a function into it. The idea of this function

16条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-08 01:09

    In case someone else is coming here from Google, I modified Abslom Daak's answer to work with Airline. I saved the following as

    ~/.vim/bundle/vim-airline/autoload/airline/extensions/pandoc.vim

    and added

    call airline#extensions#pandoc#init(s:ext)

    to extensions.vim

    let s:spc = g:airline_symbols.space
    
    function! airline#extensions#pandoc#word_count()
    if mode() == "s"
        return 0
    else
        let s:old_status = v:statusmsg
        let position = getpos(".")
        let s:word_count = 0
        exe ":silent normal g\"
        let stat = v:statusmsg
        let s:word_count = 0
        if stat != '--No lines in buffer--'
            let s:word_count = str2nr(split(v:statusmsg)[11])
            let v:statusmsg = s:old_status
        end
        call setpos('.', position)
        return s:word_count 
    end
    endfunction
    
    function! airline#extensions#pandoc#apply(...)
    if &ft == "pandoc"
        let w:airline_section_x = "%{airline#extensions#pandoc#word_count()} Words"
    endif
    endfunction
    
    function! airline#extensions#pandoc#init(ext)
    call a:ext.add_statusline_func('airline#extensions#pandoc#apply')
    endfunction
    

提交回复
热议问题