Ich möchte in der Lage sein, bestimmte Zeilen in meinem Puffer vor dem Erscheinen zu verbergen (und das Anzeigen umschalten zu können). Ich habe ähnliche Fragen gefunden , aber sie lösen mein Problem nicht. Ich möchte dafür keine Falten verwenden.
Was will ich genau?
Wenn ich ein Dokument öffne, soll Vim keine kommentierten Zeilen einlesen. Es sollte sich so verhalten, als ob diese Zeilen im Dokument überhaupt nicht vorhanden wären, mit nur einer Ausnahme: Ich benötige eine visuelle Anzeige (z. B. in einer zusätzlichen Spalte an der Seite), die mir sagt, dass hier ein Kommentar nicht angezeigt wird.
Beim Drücken einer bestimmten Tastenkombination möchte ich, dass alle Kommentare angezeigt werden (dh normales Vim-Verhalten).
Ich möchte das Dokument mit nicht angezeigten Kommentaren ändern können. Beim Speichern wird das gesamte Dokument mit Kommentaren gespeichert (sie werden immer 1 Zeile über dem Text gespeichert, der sich am Anfang darunter befand).
Warum will ich das?
Es lenkt weniger ab und sieht optisch ansprechender aus. Nehmen Sie .vimrc
zum Beispiel das - Sie können alle Einstellungen schön untereinander haben. Wenn Sie etwas ändern möchten oder nicht sicher sind, warum Sie es so einstellen, schalten Sie einfach Ihre Kommentare um.
Antworten:
Ich weiß nicht, wie ich genau das erreichen soll, was Sie wollen, nur einen Teil.
Sie möchten
~/.vimrc
beispielsweise Text darin ausblenden .Zuerst müssen wir wissen, welche Markierungsgruppe den Text verarbeitet, den Sie ausblenden möchten. Fügen Sie diese Zuordnung zu Ihrem hinzu
~/.vimrc
:Ich habe es von hier genommen .
Setzen Sie als Nächstes den Cursor auf einen Text, den Sie ausblenden möchten, z. B. einen Kommentar. Dann schlagen
F10
.Der Name der Markierungsgruppe sollte in der Befehlszeile angezeigt werden.
Auf meinem System lautet die Ausgabe:
Ich denke, es bedeutet, dass die Highlight-Gruppe für vim-Kommentare ist
vimLineComment
und dass sie mit verknüpft istComment
. Wir möchten also den Text ausblenden, der von der MarkierungsgruppevimLineComment
(oderComment
) verarbeitet wird.Um dies zu erreichen, könnten wir die in vim 7.3 (
:help conceal
) hinzugefügte Funktion zum Verbergen verwenden .Diese Zeile weist vim an, Text zu suchen, dessen Markierungsgruppe ist
vimLineComment
und der mit dem regulären Ausdruck^\".*
(einem Anfang einer Zeile (^
), gefolgt von einem doppelten Anführungszeichen (\"
) gefolgt von einem beliebigen Text (.*
)) übereinstimmt, und ihn überall dort auszublenden und zu ersetzen, wo er gefunden wird (containedin=ALL
) mit dem Zeichen>
(cchar=>
).Das
conceal
Syntaxattribut verbirgt den gewünschten Text, es sei denn, der Cursor befindet sich darauf.Als nächstes weisen wir vim an, den Text vollständig auszublenden, es sei denn, es ist ein benutzerdefiniertes Ersatzzeichen definiert:
Für diese Option gibt es 4 mögliche Werte mit 4 verschiedenen Effekten (siehe
:help conceallevel
).Da wir diese Befehle nicht jedes Mal eingeben möchten, fügen wir einen automatischen Befehl in unser
~/.vimrc
:Schließlich fügen wir eine Zuordnung hinzu, um den Wert der
conceallevel
Option umzuschalten (zwischen 2 und 0; 2 = ausgeblendet, 0 = angezeigt):Das Ergebnis ist, dass der Text beim Drücken angezeigt / ausgeblendet werden sollte
<leader>h
.Sie können auch die Farbe des Ersatzzeichens ändern:
Und Sie können wählen, in welchem Modus ein Kommentar angezeigt wird. Wenn Sie beispielsweise möchten, dass es nur angezeigt wird, wenn Sie sich im Einfügemodus in der Zeile befinden:
Ich weiß jedoch nicht, wie ich all diese versteckten Linien reduzieren soll, wie es die Faltfunktion tut, sorry.
Bearbeiten : eine andere mögliche Lösung.
Sie behalten Ihre Falteinstellungen bei, um die Linien zu reduzieren, die Sie nicht sehen möchten, und Sie verbergen die Titel der Falten, damit Sie nicht abgelenkt werden.
In diesem Code passen wir den Titel der Falten an, indem wir
FoldingTitle()
derfoldtext
Option den Wert geben . Dies bedeutet, dass wir ändern können, wie eine Falte durch diese Funktion aussehen wird. GibtFoldingTitle()
nur ein Symbol zurück, damit Sie wissen, dass es eine Falte gibt (>
vor einigen wiederholten Leerzeichen oder|
abhängig von der Faltebene).Dann definieren wir das Leerzeichen als das Zeichen, mit dem der leere Raum in den Zeilen gefüllt wird:
Vergessen Sie nicht den Platz nach dem Backslash.
Schließlich definieren wir eine Spalte (deren Breite 3 beträgt), die an der Seite des Fensters angezeigt wird und offene und geschlossene Falten anzeigt. Wir passen auch die Farbe der Faltsäule sowie die Farbe der Titel der Falten an. Jede dieser 3 Zeilen ist optional.
quelle
Folded
benötigen die Elemente für meine normalen Falten Farbe. Die einzige Option besteht darin, nur den Falttext für die Linien, die ich ausblenden möchte, mit Leerzeichen zu füllen. Ich werde jedoch weiterhin den unterstrichenen Teil sowie den unterschiedlichen Hintergrund für dieFolded
Objekte sehen - und das kann ich nicht ändern, da ich sie benötige, damit meine normalen Falten funktionieren.Jede mögliche Lösung ist die Verwendung einer minimalistischen Faltleiste, die ich verwendet habe, weil ich nicht die gleiche Lösung finde. Unten habe ich eine Liste von Befehlen für die Erstellung einer minimalistischen Faltleiste, die Sie für versteckte Kommentare verwenden können. In jedem Befehl schreibe ich, was ich tun soll ::
setze foldtext = '+' "für ein + in der Textreferenz für fold
hi Folded ctermbg = NONE "Farbfalzbalken für nichts ändern
: setze fillchars = vert: \ |, fold: \ "(setze ein Leerzeichen) no setze ein ----- in die Faltleiste
Optionale Verwendung zum Verschwinden von Kommentaren
:Hallo! Link Kommentar Ignorieren
Rückverwendung
:Hallo! Link Kommentar Kommentar
quelle