Fast word count function in Vim

后端 未结 16 2037
后悔当初
后悔当初 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:25

    Here is a refinement of Abslom Daak's answer that also works in visual mode.

    function! WordCount()
      let s:old_status = v:statusmsg
      let position = getpos(".")
      exe ":silent normal g\"
      let stat = v:statusmsg
      let s:word_count = 0
      if stat != '--No lines in buffer--'
        if stat =~ "^Selected"
          let s:word_count = str2nr(split(v:statusmsg)[5])
        else
          let s:word_count = str2nr(split(v:statusmsg)[11])
        end
        let v:statusmsg = s:old_status
      end
      call setpos('.', position)
      return s:word_count 
    endfunction
    

    Included in the status line as before. Here is a right-aligned status line:

    set statusline=%=%{WordCount()}\ words\

提交回复
热议问题