【发布时间】:2017-05-21 14:22:36
【问题描述】:
我在 Windows 上使用 GVIM 来编写科幻小说,我将章节折叠起来,以便将它们隐藏起来。折叠时,“行”章节显示如下:
##1 – Spaceman Spoof Encounters the Watterson........ 115 lines [2.4%] +--+--
这很有用,但只有一点点。有些行可能只有几个词,而另一些则可能超过 100 个词。我更喜欢这样的行数和字数:
##1 – Spaceman Spoof Encounters the Watterson........ l:115 w:1032 [4.4%] +--+--
百分比是单词而不是行。任何帮助都将不胜感激。
这是我_vimrc的折叠部分:
function! MarkdownFolds()
let thisline = getline(v:lnum)
if match(thisline, '^##') >= 0
return ">2"
elseif match(thisline, '^#') >= 0
return ">1"
else
return "="
endif
endfunction
setlocal foldmethod=expr
setlocal foldexpr=MarkdownFolds()
function! MarkdownFoldText()
"get first non-blank line
let fs = v:foldstart
while getline(fs) =~ '^\s*$' | let fs = nextnonblank(fs + 1)
endwhile
if fs > v:foldend
let line = getline(v:foldstart)
else
let line = substitute(getline(fs), '\t', repeat(' ', &tabstop), 'g')
endif
let w = winwidth(0) - &foldcolumn - (&number ? 8 : 0)
let foldSize = 1 + v:foldend - v:foldstart
let foldWords = v:foldend,v:foldstart!wc -w
let foldSizeStr = " " . foldSize . " lines "
let foldWordsStr = " " . foldWords . " w "
let foldLevelStr = repeat("+--", v:foldlevel)
let lineCount = line("$")
let foldPercentage = printf("[%.1f", (foldSize*1.0)/lineCount*100) . "%] "
" let expansionString = "."
let expansionString = repeat(".", w - strwidth(foldSizeStr.line.foldLevelStr.foldPercentage))
return line . expansionString . foldSizeStr . foldPercentage . foldLevelStr
" return line . expansionString . foldSizeStr . foldPercentage . foldWordsStr . foldLevelStr
" return line . "......" . foldSizeStr . foldPercentage . foldLevelStr
endfunction
setlocal foldtext=MarkdownFoldText()
【问题讨论】: