Manchmal bin ich in einer entfernten Box gelandet, in der mir meine Plugins und .vimrc nicht helfen können, oder NerdCommenter macht manchmal etwas falsch (z.B. JavaScript eingebettet in HTML).
In diesen Fällen ist eine Low-Tech-Alternative der eingebaute norm
Befehl, der einfach beliebige vim-Befehle in jeder Zeile in dem von Ihnen angegebenen Bereich ausführt. Zum Beispiel:
Kommentierung mit #
:
1. visually select the text rows (using V as usual)
2. :norm i#
Dies fügt "#" am Anfang jeder Zeile ein. Beachten Sie, dass bei der Eingabe von : der Bereich ausgefüllt wird, so dass es in Wirklichkeit wie folgt aussieht :'<,'>norm i#
Unkommentiert #
:
1. visually select the text as before (or type gv to re-select the previous selection)
2. :norm x
Dadurch wird das erste Zeichen jeder Zeile gelöscht. Wenn ich einen 2-Zeichen-Kommentar wie // verwendet hätte, würde ich einfach Folgendes tun :norm xx
um beide Zeichen zu löschen.
Wenn die Kommentare wie in der Frage des Auftraggebers eingerückt sind, können Sie Ihre Löschung wie folgt verankern:
:norm ^x
was bedeutet: "Gehe zum ersten Zeichen ohne Leerzeichen und lösche dann ein Zeichen". Beachten Sie, dass diese Technik im Gegensatz zur Blockauswahl auch dann funktioniert, wenn die Kommentare eine ungleichmäßige Einrückung aufweisen!
Hinweis : Seit norm
ist buchstäblich nur das Ausführen von normalen Vim-Befehlen, Sie sind nicht auf Kommentare beschränkt, Sie können auch komplexe Bearbeitungen in jeder Zeile vornehmen. Wenn Sie das Escape-Zeichen als Teil Ihrer Befehlssequenz benötigen, geben Sie ctrl-v ein und drücken Sie dann die Escape-Taste (oder noch einfacher, zeichnen Sie einfach ein schnelles Makro auf und verwenden Sie dann norm, um dieses Makro in jeder Zeile auszuführen).
Anmerkung 2 : Sie können natürlich auch ein Mapping hinzufügen, wenn Sie sich mit norm
eine Menge. Wenn Sie zum Beispiel die folgende Zeile in ~/.vimrc einfügen, können Sie Folgendes eingeben ctrl-n
anstelle von :norm
nachdem Sie Ihre visuelle Auswahl getroffen haben
vnoremap <C-n> :norm
Anmerkung 3 : Bare-bones vim hat manchmal nicht die norm
Befehl kompiliert, also stellen Sie sicher, dass Sie die verbesserte Version verwenden, d.h. typischerweise /usr/bin/vim, nicht /bin/vi
(Dank an @Manbroski und @rakslice für Verbesserungen, die in diese Antwort eingeflossen sind)
51 Stimmen
Die akzeptierte Antwort sollte in eine der Antworten geändert werden, die eine detaillierte Anleitung enthält, wie man Blöcke zum Kommentieren und Löschen von Kommentaren ohne die Verwendung eines Plugins erstellen kann. Die aktuell akzeptierte Antwort ist im Grunde nur ein Link zu einem Plugin eines Drittanbieters.
0 Stimmen
Die am besten bewertete Antwort erwähnt keine Plugins, @rationalis Ihr Kommentar ist irreführend, könnten Sie ihn bitte entweder korrigieren oder entfernen, danke.
0 Stimmen
Angemessene Antwort sollte sein Magnus Antwort
0 Stimmen
Ideal wäre eine Lösung, bei der ein Hotkey die Kommentare entweder für die Zeile, auf der der Cursor steht, oder für die ausgewählten Zeilen ein- und ausschalten kann. Alles andere ist meiner Meinung nach zu viel Aufwand.