Ich benutze GVIM auf Windows zum Schreiben von SF-Romane und ich falte die Kapitel, damit ich sie verstecken kann. Im zusammengeklappten Zustand zeigt das Kapitel "Linien" etwa folgendes:VIM ändern falten Markdown zu Zeilen und Anzahl der Wörter mit vimrc
##1 – Spaceman Spoof Encounters the Watterson........ 115 lines [2.4%] +--+--
Dies ist nützlich, aber nur ein kleines bisschen. Einige Zeilen können nur ein paar Wörter sein, andere mehr als 100 Wörter. Was ich würde es vorziehen, ist eine Zeilenzahl und ein Wort wie diese zählen:
##1 – Spaceman Spoof Encounters the Watterson........ l:115 w:1032 [4.4%] +--+--
mit dem Prozentsatz, dass die Worte sind und nicht für die Leitungen. Jede Hilfe würde sicher geschätzt werden.
Hier ist der Faltabschnitt meiner _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()
Das funktioniert wunderbar simonpierre. Ich habe versucht, es abzustimmen, aber ich fürchte, ich habe nicht genug Punkte, um das zu tun. – tgrignon
Es gibt einen Nachteil, da das Wort zählen in einem Roman (vor allem ein über 100K Wörter) erfordert ziemlich viel Rechenleistung, so gibt es eine erhebliche Verzögerung beim Öffnen Falten, aber das ist es wert, wenn ich versuche herauszufinden, wenn sicher Kapitel sind zu schwer. Ich möchte vielleicht einfach zwei verschiedene _vimrc-Dateien verwenden und sie austauschen. – tgrignon
Ich kann daran arbeiten und dies optimieren: sieht so aus, als ob die Wortzählung mehrmals neu berechnet wird. Ich werde sehen, ob ich das schaffen kann. –