it-swarm.com.de

Wie aktiviere und verwende ich das Falten von Code in Vim?

Wie kann ich die Codefaltung in Vim aktivieren und tun?

Muss ich irgendetwas in ~/.vimrc?

Ich tippe z+a und z+c und z+o und nichts passiert.

Hier ist ein Artikel über das Falten: Code-Falten in Vim .

54

Nein, Sie müssen den Befehl nicht von der Seite einfügen, auf die Sie in Ihrem ~/.vimrc Verknüpft haben. Sie können ihn einfach nach der Ausgabe von : In vim eingeben, um die Eingabeaufforderung zu erhalten .

Wenn Sie jedoch die Zeilen setzen:

set foldmethod=indent   
set foldnestmax=10
set nofoldenable
set foldlevel=2

wie in dem von Ihnen angegebenen Link angegeben, müssen Sie sie in Ihrem ~/.vimrc nicht jedes Mal eingeben, wenn Sie das Falten in einer Datei verwenden möchten. Der set nofoldenable Stellt sicher, dass Dateien beim Öffnen "normal" sind, d. H. Nicht gefaltet.

48
Anthon

Standardmäßig falten

Die Standard-Faltmethode von Vim ist manual, was bedeutet, dass die Falten manuell erstellt werden. Andernfalls kann keine Falte geschlossen oder geöffnet werden zazo, oder zc wie du beschrieben hast. Sie können jedoch eine Falte erstellen, indem Sie zf{motion} im normalen Modus oder zf im visuellen Modus; z.B. zfj Erstellt eine Falte für die aktuelle Zeile und die nächste folgende im Normalmodus .

Falten um indent

Die akzeptierte Antwort von @Anthon beschreibt, wie die Faltmethode auf indent gesetzt wird. d.h. das Falten wird durch die Höhe der Vertiefungen definiert.

Falten um syntax

Auf bequemere Weise können Falten automatisch basierend auf der Sprachsyntax des aktuellen Puffers erstellt werden. Wenn Sie eine Programmiersprache verwenden, nennen wir sie [~ # ~] l [~ # ~] , und Sie haben eine faltbare Definition von [~ # ~] l [~ # ~] (zB Sie haben ein Vim-Plugin installiert, in dem die Faltinformationen von [ ~ # ~] l [~ # ~] ist definiert, wie c.vim für C/C++ oder Python-Modus für Python) müssen Sie nur die Faltmethode auf syntax setzen:

set foldmethod=syntax

Das ist es. Die nützlichsten Befehle zum Arbeiten mit Falten sind:

  • zo öffnet eine Falte am Cursor.
  • zShift+o öffnet alle Falten am Cursor.
  • zc schließt eine Falte am Cursor.
  • zm erhöht den foldlevel um eins.
  • zShift+m schließt alle offenen Falten.
  • zr verringert den foldlevel um eins.
  • zShift+r verringert den foldlevel auf Null - alle Falten sind offen.
48
cartoonist

Sie müssen es nicht systematisch verwenden: Normalerweise wähle ich Falten manuell nach Bewegung oder Abschnitt aus. Zum Beispiel ist das Falten eines Absatzes zfip und das Falten der nächsten 20 Zeilen ist zf20j. Verwenden Sie za zum Umschalten und zd zum Entfernen.

Dies erfordert etwas mehr Arbeit, ermöglicht jedoch, dass Ihr Falten die anstehende Aufgabe widerspiegelt.

15
Marmaduke

Sie können folding in der aktuellen Sitzung wie die Antwort von @ Anthon aktivieren. Wenn Sie es jedoch dauerhaft machen möchten, müssen Sie mindestens diese Zeile in .vimrc Für Faltarbeiten festlegen:

set foldmethod=indent

indent ist eine Art Faltung, Sie können mehr von :help foldmethod sehen.

'foldmethod' 'fdm'      string (default: "manual")
                        local to window
                        {not in Vi}
                        {not available when compiled without the +folding
                        feature}
        The kind of folding used for the current window.  Possible values:
        fold-manual     manual      Folds are created manually.
        fold-indent     indent      Lines with equal indent form a fold.
        fold-expr       expr        'foldexpr' gives the fold level of a line.
        fold-marker     marker      Markers are used to specify folds.
        fold-syntax     syntax      Syntax highlighting items specify folds.
        fold-diff       diff        Fold text that is not changed.

Jedes Mal, wenn Sie eine Datei mit vim öffnen, können Sie sehen, dass der Code nach der von Ihnen festgelegten Methode gefaltet wird. Dann können Sie za, zc, zo verwenden.

4
cuonglm