Wie aktiviere ich automatische Faltungen in Vim?

75

Wie aktiviere ich das automatische Falten in Vim? set foldmethod=syntaxscheint nicht viel von irgendetwas zu tun.

Eric Johnson
quelle

Antworten:

140

Um Falten basierend auf der Syntax zuzulassen, fügen Sie Folgendes hinzu .vimrc:

set foldmethod=syntax
set foldlevelstart=1

let javaScript_fold=1         " JavaScript
let perl_fold=1               " Perl
let php_folding=1             " PHP
let r_syntax_folding=1        " R
let ruby_fold=1               " Ruby
let sh_fold_enabled=1         " sh
let vimsyn_folding='af'       " Vim script
let xml_syntax_folding=1      " XML

Syntaxbasiertes Falten wird in den Syntaxdateien der Sprache definiert, die sich in $ VIM / syntax befinden. In einigen Sprachen sind jedoch keine Faltregeln in die Syntaxdateien integriert. Zum Beispiel Python. Für diese Sprachen müssen Sie etwas von http://vim.sf.net herunterladen, das funktioniert. Andernfalls müssen Sie Falten verwenden, die auf Einrückungen basieren. Um dies effektiv zu tun, sollten Sie Ihrer .vimrc-Datei wahrscheinlich Folgendes hinzufügen:

set foldmethod=indent
set foldnestmax=2

Andere Arten des Faltens

Es gibt 6 Arten von Falten:

manual          manually define folds
indent          more indent means a higher fold level
expr            specify an expression to define folds
syntax          folds defined by syntax highlighting
diff            folds for unchanged text
marker          folds defined by markers in the text

Persönlich verwende ich nur Syntaxfalten. Normalerweise möchte ich nur die Methode falten und nicht jede Einrückungsstufe falten. Inkonsistentes Einrücken und seltsam formatierter Legacy-Code bei der Arbeit machen das Einrücken von Einzügen oft schwierig oder unmöglich. Das Hinzufügen von Markierungen zum Dokument ist mühsam und Personen, die Vim nicht verwenden, werden diese beim Bearbeiten des Dokuments nicht beibehalten. Manuelle Faltungen funktionieren hervorragend, bis jemand Ihren Code in der Quellcodeverwaltung bearbeitet und alle Ihre Falten jetzt an der falschen Stelle sind.

Mehr lesen

  1. Erfahren Sie mehr :help fold-methodsüber die Details der verschiedenen Falzmethoden.
  2. Siehe :help foldingdie Tastaturbefehle lernen für Falten zu manipulieren.
  3. Siehe :help foldsHilfe auf dem gesamten Thema der Faltung.
Eric Johnson
quelle
8
Nun ... das war schnell.
Russell Dias
8
Haben Sie das alles wirklich innerhalb einer Minute nach der Veröffentlichung der Frage eingegeben? +1 für Klarheit, Detailgenauigkeit und Geschwindigkeit!
Cascabel
Vielen Dank für den Austausch Ihrer Erfahrungen! Wissen Sie nicht, wie Sie die C ++ - Faltung aktivieren können?
Vitaly Isaev
Als Referenz: Getestet, dass C / C ++ keinen zusätzlichen let ...=1Befehl benötigt, reicht nur set foldmethod=syntaxaus. dh einige Sprachen benötigen keinen letBefehl.
Johnny Wong
3

JavaScript-Faltung hat auch bei mir nicht funktioniert. Ich fand heraus , dass es plötzlich funktionierte , als ich syntax = javaScript (mit einem Großbuchstaben S) setzte.

Bet Lamed
quelle
1
hehe ich habe das gemacht und plötzlich sind die Farben einfach verschwunden, denke, es ist nicht jedermanns Sache. :) vim version 8.
ArchNoob
Zuerst habe ich das versucht, aber es hat nichts gefaltet und das Syntax-Highlight weggenommen. Dann setze ich syntax = javascript zurück und plötzlich erscheinen alle meine Funktionen gefaltet. Seltsam.
Elig
1

Die Möglichkeit, das Falten in neuen Versionen von Vim zu aktivieren, hat sich geändert (ich verwende Vim 7.4). Jetzt sollten Sie die Datei ~/.vim/ftplugin/javascript.vim(unter Linux) erstellen und Ihre Anweisungen zum Falten des Codes hinzufügen, wie in Eric Johnsons Antwort erläutert. Plugins zur Erkennung und zum Laden von Dateitypen für bestimmte Dateitypen müssen aktiviert werden, indem Sie Folgendes in Folgendes einfügen .vimrc:

filetype plugin on
Diego
quelle
1

Versuchte alle Lösungen hier und keine funktionierte mit NeoVim v0.3.1 Bis ich fand, dass das vim-Javascript- Plugin und das Falten anfingen zu funktionieren.

Geekymartian
quelle