Ich habe kürzlich festgestellt, dass meine vimrc
Zeilen jetzt mehr als 400 Zeilen lang sind (was meiner Meinung nach zu viel ist, um das zu reduzieren), und um das Navigieren, Lesen und Bearbeiten zu vereinfachen, habe ich mich entschlossen, das Konzept des Falzens in vim (welches) zu untersuchen Ich war nicht vertraut mit) .
- Ich habe versucht, die Faltmethode auf einzustellen,
indent
aber das Ergebnis hat mir nicht gefallen (es war meistens zu chaotisch, weil ein großer Teil von mirvimrc
nicht wirklich eingerückt ist). - Ich habe auch versucht zu Satz
foldmethod
zuexpr
undsyntax
aber ich war nicht in der Lage etwas richtig zu falten. - Hier
diff
scheint die Verwendung als Faltmethode nicht relevant zu sein. (Oder wenn es so ist, habe ich nicht verstanden, wie man es benutzt) - Im Moment verwende ich die
marker
Methode, die mich aufgrund der"{{{
und"}}}
-Zeichen, die ich in der Datei als "verrauscht" empfand, nicht ganz zufrieden stellt .
Daher würde ich gerne wissen, ob es bewährte Methoden oder allgemeine Richtlinien für das ordnungsgemäße Falten von a gibtvimrc
.
Anmerkung 1: Wie wir alle wissen, ist SO kein Forum und nicht dazu gemacht, persönliche Meinungen zu sammeln, und das ist auch nicht das, wonach ich suche: Natürlich haben einige Leute ihre Vorlieben, aber ich möchte gerne wissen, warum Marker (zum Beispiel) verbessern die Lesbarkeit mehr als die Verwendung von Einrückungen.
Anmerkung 2: Auch mein Hauptziel ist es, mein Wissen vimrc
so klar wie möglich zu machen. Wenn es also andere Best Practices gibt, um ein Nettes zu schaffen, vimrc
bin ich gespannt darauf.
Edit 1: Ich hätte genau sagen sollen, dass meine vimrc
bereits in Abschnitte (und manchmal Unterabschnitte) unterteilt ist, wobei die wichtigsten sind
- Allgemeine Optionen
- Plugins (enthält einen Unterabschnitt für jedes Plugin und seine Konfiguration)
- Zuordnungen
- Navigation (enthält auch Unterabschnitt)
- Farbe
- etc...
Und genau diese Struktur hat mich zum Falten gebracht: Ich denke, dass es ziemlich praktisch ist, nur den Abschnitt ausgeben zu können, der mich an einem bestimmten Punkt interessiert.
Edit 2: Antwort Erwähnung von Unterteilungen der vimrc
in mehreren Dateien sind gültig, aber als persönliche Präferenz würde ich lieber Falten verwenden, weil ich denke, es ist einfacher, nur eine Datei im Git-Repo zu pflegen, die meine Punktedateien enthält. Das ist nur eine persönliche Präferenz und ich bin mir bewusst, dass es auch möglich ist, diesen Ansatz zu verwenden, aber ich würde es vorziehen, zu falten.
"{{{
ist die "vim like"Antworten:
Ich habe folgende -Modelines am unteren Rand meiner ,
vimrc
die ich von godlygeek kopiert, dem Autor von tabellarischen :Dadurch wird jede Zeile, die mit 2+ beginnt
"
, gefaltet. Je mehr desto"
tiefer ist die Falte. Auf diese Weise können Sie bei Bedarf Abschnitte unterteilen.quelle
>extra number of "
( Startlevel, das durch die Zahl nach <in dieser Zeile festgelegt wird) oder'='
(Level der vorherigen Zeile verwenden) gesetzt. Die Bedeutung ist zu finden unterfold-expr
Es ist eine gute Idee, zuerst Ihre eigenen Kategorien in Ihrer
.vimrc
(wie eine Liste mit Unterlisten und Unterlisten) zu definieren und all Ihre Plugins / Einstellungen / Funktionen zu den jeweiligen Kategorien hinzuzufügen. In Kombination mit individuellem Falten kann dies großartig funktionieren:Das obige Beispiel zeigt mögliche Kategorien, die ich für die Strukturierung meiner hilfreich finde
.vimrc
. Es werden die folgenden benutzerdefinierten Falzeinstellungen verwendet:Verwenden Sie die folgende Syntax, um Ihre eigenen Kategorien und Unterkategorien zu definieren:
Die Kategorie der obersten Ebene kann sehr einfach erstellt werden, wenn Sie Vim-Snippets verwenden (z. B. mit UltiSnips ): Erweitern Sie einfach das
box
oderbbox
das von Vim-Snippets bereitgestellte Snippet (schreiben Siebox
oderbbox
und drücken Sie den Auslöser zum Erweitern).Um Falten noch schneller zu öffnen und zu schließen, drücken Sie zweimal die Leertaste:
Auf diese Weise haben Sie eine gut strukturierte,
.vimrc
die leicht navigiert werden kann.quelle
Ich verwende meine Primärdatei
vimrc
als Verknüpfung zu mehreren anderen kategorisierten Dateien, wobei jede nach Belieben ausgewählt wird, z. B. Vim-Optionen in einer Datei, Plugin-Einstellungen in einer anderen.Als direktere Antwort auf die OP-Frage verwende ich die Markierungsmethode, aber zum größten Teil auf der rechten Seite mit Abstand und in der Nähe von mehr Kategorien als Einzelpersonen. Ich mache jedes Plugin separat.
quelle
vimrc
in verschiedenen Dateien zu "trennen" , weil (IMO) dies die Komplexität erhöht und die Wartung erschwert. Was meinen Sie mit "mit Abstand zur rechten Seite"?" {{{
mit so vielen Leerzeichen wie Ihrem,textwidth
so dass die Markierungen in der Nähe der rechten Ränder sind. Ich habe auch eine personalisierte FoldText-Funktion in der Datei folding.vim. Ich bevorzuge separate Dateien, damit mein Git nur eine bestimmte Art von Mod pro Commit repo.Man könnte sagen, dass "Best Practice" in erster Linie eine Ansichtssache ist, :) aber es gibt zwei Ansätze, die (1) offensichtlich Sinn machen und (2) auf alle Konfigurationsdateien angewendet werden können, nicht nur auf die von Vim: Falten nach logischen Abschnitten und Unterabschnitte (oder noch tiefer, wenn Sie sich mutig fühlen), und teilen Sie Ihre Konfiguration in mehrere kleinere Dateien und
:source
-en Sie diese.Ich persönlich bevorzuge das Falten, weil es den Zugang erleichtert und mir trotzdem eine gewisse Hierarchie bietet, von der ich lernen kann. Faltungsfunktionen und
autocmd
s auf innerster Ebene sind ebenfalls eine gute Idee, da diese "natürliche" logische Einheiten bilden.marker
Folding ist für all dies am sinnvollsten, da sich logische Hierarchien nicht unbedingt in Einzugsebenen oder in Syntaxhervorhebungen widerspiegeln. Ich erhöhe auchfoldcolumn
, was mir einen visuellen Hinweis gibt, wo ich bin:foldtext
Nebenbei bemerkt, diese Funktion (eine Modifikation einer ähnlichen Funktion von Drew Neil, IIRC) ist für mich sinnvoller als die Standardfunktion:Bei der anderen Methode besteht das Hauptproblem beim Teilen von Dateien darin, Dinge zu finden und von einer Datei zur anderen zu wechseln. Eine sehr gute Möglichkeit, beide zu adressieren, ist die Verwendung eines Plugins wie CtrlSF , CtrlP oder Ähnliches. Aber wahrscheinlich verwenden Sie sowieso schon eine davon.
quelle
marker
. In der Tat ist das Anpassenfoldcolumn
eine nette Sache, ich werde sehen, welcher Wert am besten zu meinem Bedarf passt. Ich teile auch Ihre Meinung zu den geteilten Dateien, aber ich wusste nicht, dassCtrlSF
ich es mir ansehen werde, auch wenn ich ziemlich zufrieden binCtrlP
.fdm
auffoldtext
undMyFoldText()
aber es scheint , als ob es nicht der richtige Weg , es zu benutzen.CtrlSF
funktioniert am besten mit ag oder ack , bei denen es sich im Wesentlichen um spezialisierte Versionen von handeltgrep
.foldtext
ist keine benutzerdefinierte Faltmethode, sondern eine Funktion zum Ändern des Aussehens von gefaltetem Text. Die letzte Zeile in meinem Code - Schnipsel zeigt , wie es verwendet wird :set foldtext=MyFoldText()
.Grundlegende Best Practices:
Teilen Sie in Abschnitte:
Kommentiere jeden Abschnitt / binde ihn neu
(sichern Sie Ihr
.vimrc
oder_vimrc
auf Github)Nur meine persönliche Präferenz. Vielleicht hilft nicht so viel.
quelle
Inspiriert von der Antwort von @ PeterRincker , habe ich Folgendes entworfen, um ATX-Header zu verwenden. Fügen Sie es am Ende Ihrer
.vimrc
quelle
Wenn Sie große Funktionen wie ich haben, können Sie dies verwenden, um Ihre Funktionen zu falten:
Und füge diese Modeline zu deinem Vimrc hinzu:
quelle
Erweiterung der Idee von @Peter Rincker und @ go2null. Wenn Sie die Falzoptionen nicht in Vim Modeline einstellen möchten. Mit dem folgenden Befehl können Sie die Faltmethode und den Faltausdruck festlegen.
Ich habe kleine Änderungen vorgenommen, um die ursprüngliche Antwort so zu gestalten, dass sie als regulärer vim-Befehl funktioniert (kein Escapezeichen, aber doppelte Anführungszeichen müssen maskiert werden).
Wenn Ihnen die lange
foldexpr
Zeichenfolge nicht gefällt , können wir eine Funktion dafür definieren:Ersetzen Sie dann die autocmd-Zeile ungefähr
foldexpr
umquelle