Ich bin ziemlich neu in VIM, habe aber in der letzten Woche versucht, mich selbst zu unterrichten, aber ich stoße auf ein Problem, das sich als ziemlich frustrierend erwiesen hat:
Derzeit verwende ich hauptsächlich VIM, um Notizen zu machen, und verwende die Faltfähigkeit von VIM, um meine Arbeit weniger überladen zu machen. Ich bin jedoch auf ein Problem gestoßen, bei dem sich jeder Aufzählungspunkt, der über meinen festgelegten Zeilenumbruch hinausgeht, in sich selbst faltet. Um es klarer zu machen:
Ich möchte nicht, dass einzelne Aufzählungszeichen gefaltet werden.
Ich habe das Problem anscheinend auf die Art und Weise zurückgeführt, in der mein Text eingerückt ist: Da das Falten standardmäßig auf Einrückungsebene erfolgt, werden meine Aufzählungszeichen gefaltet, da die zweite Zeile stärker eingerückt ist. Ich nehme an, es gibt wahrscheinlich vage Möglichkeiten, dieses Problem zu lösen: VIM anweisen, zu falten, wenn der Einzug in der nächsten Zeile größer 1 ist, oder die Art und Weise zu behandeln, wie Aufzählungszeichen völlig anders gewickelt werden.
Wie können diese Lösungen implementiert werden?
Ich benutze ein Plugin namens Workflowish , also hier ist mein vimrc:
set tw=100
set formatoptions=tcq
set com=fb:*
set spell
set spelllang=de
colorscheme synic
set fileencoding=utf8
execute pathogen#infect()
syntax on
filetype plugin indent on
Und hier ist, was das Plugin selbst einstellt:
setlocal foldlevel=1
setlocal foldenable
setlocal sw=2 sts=2
setlocal expandtab
setlocal foldtext=WorkflowishFoldText()
setlocal foldmethod=expr
setlocal foldexpr=WorkflowishCompactFoldLevel(v:lnum)
setlocal autoindent
Antworten:
Leider gibt es keine Möglichkeit, dies ohne die Unterstützung des Plugins zu tun. (Art von.)
Die wichtigsten Zeilen hier sind:
Das erste bedeutet "Verwenden Sie den Wert von
'foldexpr'
, um den Falzpegel jeder Linie zu bestimmen". Mit der zweiten Option wird diese Option festgelegt, um den Wert einer im Plugin definierten Funktion zu verwenden.Das Falten in Vim basiert auf Faltstufen. In
foldmethod=expr
wird jeder Zeile eine Falzstufe (eine Ganzzahl) von der zugewiesen'foldexpr'
. Diese Ebenen bestimmen, wo die Falten beginnen und enden.Lösung 1 : Schreiben Sie eine neue
'foldexpr'
.Dies kann aufrufen
WorkflowishCompactFoldLevel()
, aber den Wert so anpassen, dass mehrzeilige Aufzählungszeichen nicht gefaltet werden. Ich werde dies jedoch als Übung belassen, da ich denke, dass dies der falsche Ansatz ist. Was uns bringt zu:Lösung 2 : Machen Sie die Funktionsweise jetzt kein Problem.
Ich denke, das eigentliche Problem ist nicht, dass diese Falten existieren, sondern dass sie Ihnen im Weg stehen. Können Sie beschreiben, was Sie tun, damit Sie überhaupt bemerken, dass diese Falten vorhanden sind? Möglicherweise müssen Sie Ihren Start
'foldlevel'
fürft=workflowish
Puffer entsprechend einstellen .Im Idealfall würden Sie nicht bemerken, dass diese Falten vorhanden sind, bis Sie tatsächlich versucht haben, eine zu schließen.
quelle
autocmd BufWinLeave *.* mkview
undautocmd BufWinEnter *.* silent loadview
. Es scheint jetzt zu funktionieren!