2

我经常使用 VIM 在报纸或博客网站上写评论。

通常有一个最大数量的字符要输入。

如何创建一个计数器(状态栏中的 pe)来查看我在输入时输入的字符(包括空格)?

4

2 回答 2

5

该设置允许使用特殊项目'statusline'评估表达式。%{...}

因此,如果我们可以提出一个返回当前缓冲区中字符数(而不是字节数!)的表达式,我们可以将其合并到状态行中来解决问题。

此命令执行此操作:

:set statusline+=\ %{strwidth(join(getline(1,'$'),'\ '))}

对于带有CJK 字符 strwidth()的文本还不够好,因为它返回的是显示单元格计数,而不是字符计数。如果双角字符是要求的一部分,请改用此改进版本:

:set statusline+=\ %{strlen(substitute(join(getline(1,'$'),'.'),'.','.','g'))}

但请注意,对缓冲区的每一次更改都会评估表达式。

:h 'statusline'


周日下午奖励——光标下的字符位置也可以打包成一个表达式。不适合胆小的人:

:set statusline+=\ %{strlen(substitute(join(add(getline(1,line('.')-1),strpart(getline('.'),0,col('.')-1)),'.'),'.','.','g'))+1}
于 2013-07-28T10:00:20.747 回答
0

通过混合glts 答案这篇文章以及对代码的一些摆弄,我为自己做了以下内容,您可以将其放入~/.vimrc文件中(您需要有 1 秒的偶像光标,以便函数计算单词和字符以及值可以通过修改来改变set updatetime=1000):

let g:word_count = "<unknown>"
let g:char_count = "<unknown>"
function WordCount()
    return g:word_count
endfunction
function CharCount()
    return g:char_count
endfunction
function UpdateWordCount()
    let lnum = 1
    let n = 0
    while lnum <= line('$')
        let n = n + len(split(getline(lnum)))
        let lnum = lnum + 1
    endwhile
    let g:word_count = n
    let g:char_count = strlen(substitute(join(getline(1,'$'),'.'),'.','.','g'))
endfunction
" Update the count when cursor is idle in command or insert mode.
" Update when idle for 1000 msec (default is 4000 msec).
set updatetime=1000
augroup WordCounter
    au! CursorHold,CursorHoldI * call UpdateWordCount()
augroup END
" Set statusline, shown here a piece at a time
highlight User1 ctermbg=green guibg=green ctermfg=black guifg=black
set statusline=%1*                        " Switch to User1 color highlight
set statusline+=%<%F                      " file name, cut if needed at start
set statusline+=%M                        " modified flag
set statusline+=%y                        " file type
set statusline+=%=                        " separator from left to right justified
set statusline+=\ %{WordCount()}\ words,
set statusline+=\ %{CharCount()}\ chars,
set statusline+=\ %l/%L\ lines,\ %P       " percentage through the file

它看起来像这样:

vim 状态栏显示字数和字符数

于 2018-08-31T08:07:01.470 回答