VIM: Faltkugelspitzen

7

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:

VIM I. Geben Sie hier die Bildbeschreibung ein

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
montauk
quelle
Das klingt nach einem Problem, das Sie dem Autor des Plugins vorlegen sollten, nicht hier.
Ingo Karkat
Ich habe es bereits getan, aber selbst wenn ich es ohne das Plugin versuche, bleibt das gleiche Problem bestehen, daher glaube ich, dass es Plugin-unabhängig ist.
Montauk

Antworten:

4

Leider gibt es keine Möglichkeit, dies ohne die Unterstützung des Plugins zu tun. (Art von.)

Die wichtigsten Zeilen hier sind:

setlocal foldmethod=expr
setlocal foldexpr=WorkflowishCompactFoldLevel(v:lnum)

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=exprwird 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ür ft=workflowishPuffer entsprechend einstellen .

Im Idealfall würden Sie nicht bemerken, dass diese Falten vorhanden sind, bis Sie tatsächlich versucht haben, eine zu schließen.

Peeja
quelle
Vielen Dank für Ihre ausführliche Antwort! Besonders Ihre zweite Lösung war sehr hilfreich. Ich bin mir nicht ganz sicher, ob dies ein zu "hackiger" Weg ist, um mein Problem zu lösen, aber ich habe gerade die folgenden Zeilen zu meiner .vimrc hinzugefügt: autocmd BufWinLeave *.* mkviewund autocmd BufWinEnter *.* silent loadview. Es scheint jetzt zu funktionieren!
Montauk
Huh, ich habe noch nie Ansichten verwendet. Ordentlich!
Peeja