Ich habe eine Ruby-Code-Datei in vi geöffnet, es gibt Zeilen auskommentiert mit #
:
class Search < ActiveRecord::Migration
def self.up
# create_table :searches do |t|
# t.integer :user_id
# t.string :name
# t.string :all_of
# t.string :any_of
# t.string :none_of
# t.string :exact_phrase
#
# t.timestamps
# end
end
def self.down
# drop_table :searches
end
end
Angenommen, ich möchte alle Zeilen im ersten def ... end
Abschnitt auskommentieren . Was ist ein effizienter Weg, dies in Vim zu tun?
Im Allgemeinen suche ich nach einer einfachen und flüssigen Möglichkeit, Zeilen zu kommentieren und zu kommentieren. Hier habe ich es mit Ruby-Code zu tun, aber es könnte JavaScript ( //
) oder Haml ( -#
) sein.
Antworten:
Ich benutze das NERD Commenter Skript . Sie können Kommentare in Ihrem Code einfach kommentieren, kommentieren oder umschalten.
Wie in den Kommentaren erwähnt :
quelle
=begin
und=end
kommentiert.Für diese Aufgaben verwende ich die meiste Zeitblockauswahl .
Setzen Sie den Cursor auf das erste
#
Zeichen, drücken Sie CtrlV(oder CtrlQfür gVim) und gehen Sie bis zur letzten kommentierten Zeile nach unten und drücken Sie x, um alle#
Zeichen vertikal zu löschen .Das Kommentieren eines Textblocks ist fast dasselbe:
VISUAL BLOCK
Modus versetzt.INSERT
Modus versetzt wird, und drücken Sie dann #. Dadurch wird der ersten Zeile ein Hash hinzugefügt.#
Zeichen in alle anderen ausgewählten Zeilen eingefügt.Geben Sie für die abgespeckte Version von vim, die standardmäßig mit debian / ubuntu geliefert wird,
: s/^/#
stattdessen den dritten Schritt ein (verbleibende Hervorhebungen des ersten Zeichens jeder Zeile können mit entfernt werden:nohl
).Hier sind zwei kleine Bildschirmaufnahmen als visuelle Referenz.
Kommentar:
Kommentar:
quelle
n
(wobei n num Zeilen - 1 ist), j,n
(wobei n num Anzahl der Länge der Kommentarzeichenfolge - 1 ist), l, x.So kommentieren Sie Blöcke in vim aus:
%
So kommentieren Sie Blöcke in vim aus:
Wenn Sie mehrere Zeichen auswählen möchten, verwenden Sie eines oder kombinieren Sie diese Methoden:
quelle
Manchmal bin ich in eine Remote-Box geraten, in der meine Plugins und .vimrc mir nicht helfen können, oder manchmal versteht NerdCommenter das falsch (z. B. in HTML eingebettetes JavaScript).
In diesen Fällen ist der integrierte
norm
Befehl eine Low-Tech-Alternative , mit der nur beliebige vim-Befehle in jeder Zeile in Ihrem angegebenen Bereich ausgeführt werden. Zum Beispiel:Kommentieren mit
#
:Dies fügt am Anfang jeder Zeile "#" ein. Beachten Sie Folgendes: Wenn Sie Folgendes eingeben: Der Bereich wird ausgefüllt, sodass er wirklich so aussieht
:'<,'>norm i#
Kommentar aus
#
:Dadurch wird das erste Zeichen jeder Zeile gelöscht. Wenn ich einen 2-
:norm xx
Zeichen -Kommentar wie // verwendet hätte, würde ich einfach beide Zeichen löschen.Wenn die Kommentare wie in der Frage des OP eingerückt sind, können Sie Ihre Löschung wie folgt verankern:
Dies bedeutet "Gehe zum ersten Nicht-Leerzeichen und lösche dann ein Zeichen". Beachten Sie, dass diese Technik im Gegensatz zur Blockauswahl auch dann funktioniert, wenn die Kommentare einen ungleichmäßigen Einzug aufweisen!
Hinweis : Da Sie
norm
buchstäblich nur reguläre vim-Befehle ausführen, sind Sie nicht auf Kommentare beschränkt, sondern können auch jede Zeile komplex bearbeiten. Wenn Sie das Escape-Zeichen als Teil Ihrer Befehlssequenz benötigen, geben Sie Strg-V ein und drücken Sie die Escape-Taste (oder noch einfacher, zeichnen Sie einfach ein schnelles Makro auf und verwenden Sie dann die Norm, um dieses Makro in jeder Zeile auszuführen).Hinweis 2 : Sie können natürlich auch ein Mapping hinzufügen, wenn Sie häufig etwas verwenden
norm
. Wenn Sie beispielsweise die folgende Zeile in ~ / .vimrc einfügen, können Siectrl-n
statt:norm
nach der visuellen Auswahl eingebenAnmerkung 3 : Bare-Bones-Vim hat manchmal nicht die
norm
Befehl kompiliert. Verwenden Sie daher unbedingt die verbesserte Version, dh normalerweise / usr / bin / vim, nicht / bin / vi(Vielen Dank an @Manbroski und @rakslice für die Verbesserungen in dieser Antwort)
quelle
:norm ^x
. Diese Methode hat im Allgemeinen den Vorteil, mit Regionsauswahl zu arbeiten (z. B.vi{
wird in geschweiften Klammern ausgewählt). Solche Textobjekt-Selektoren funktionieren nicht mitVisual Block
./bin/vi
ist das Vim 7.2, aber es ist ein anderer Build als/usr/bin/vim
und es hat Funktionen wie diese deaktiviert .vip
, um einen ganzen Absatz auszuwählen.Ich habe folgendes in meinem
.vimrc
:Jetzt können Sie
,cc
eingeben, um eine Zeile und zu kommentieren,cu
eingeben, um eine Zeile (funktioniert sowohl im normalen als auch im visuellen Modus).(Ich habe es vor vielen Jahren von einer Website gestohlen, daher kann ich nicht mehr vollständig erklären, wie es funktioniert :). Es gibt einen Kommentar, in dem er erklärt wird.)
quelle
Geben Sie an, welche Zeilen in vim kommentiert werden sollen:
Zeigen Sie die Zeilennummern an:
dann
oder dieses:
quelle
:%s/^/#/g
alle Zeilen auskommentiert werden? Ich fragte mich das Prozentzeichen%
va{
oder mitvar
für Rubin.So mache ich das:
Gehen Sie zum ersten Zeichen in der ersten Zeile, die Sie auskommentieren möchten.
Hit Ctrl+ qin gVim oder Ctrl+ vin VIM, dann gehen Sie erste Zeichen auf den Linien zu wählen, um Stellung zu nehmen .
Drücken Sie dann cund fügen Sie das Kommentarzeichen hinzu.
Das Kommentieren funktioniert genauso, geben Sie einfach ein Leerzeichen anstelle des Kommentarzeichens ein.
quelle
c
löscht auch das erste Zeichen. CMS Antwort hat es richtig, dh drücken,I
dann die Kommentarzeichen eingeben und dannEsc
(dies ist auf Windows Vim)ESC
zweimal nach dem Drücken drückenc
und das sollte den Trick machenIch habe mir eine einfache Ergänzung zu meiner .vimrc-Datei ausgedacht, die ziemlich gut funktioniert und einfach erweitert werden kann. Sie fügen der comment_map und ihrem Kommentarleiter einfach einen neuen Dateityp hinzu.
Ich habe den normalen und visuellen Modi eine Zuordnung hinzugefügt, aber Sie können sie nach Belieben neu zuordnen. Ich bevorzuge nur eine Funktion zum Umschalten. Man trägt mehrere Mappings etc.
Hinweis:
Ich verwende keine Rückrufe oder Hooks für die Dateitypen / das Laden, da ich finde, dass sie den Start von Vim mehr verlangsamen als die
.vimrc
statische Funktion / Map, aber das ist nur meine Präferenz. Ich habe auch versucht, es einfach und performant zu halten. Wenn Sie automatische Befehle verwenden, müssen Sie sicherstellen, dass diese in eine automatische Befehlsgruppe eingefügt werden. Andernfalls werden die Rückrufe mehrmals pro geladener Datei zum Dateityp hinzugefügt und führen zu erheblichen Leistungseinbußen.quelle
<leader><Space>
Erklärung unten?\zs
und\ze
Regex-Trick gemacht, der Code wurde etwas kleiner. Sie können es hier sehenKommentare umschalten
Wenn alles , was Sie brauchen , ist Toggle Kommentare würde ich eher mit gehen commentary.vim von tpope .
Installation
Erreger:
vim-plug:
Vundle:
Weitere Anpassung
Fügen Sie dies Ihrer .vimrc-Datei hinzu:
noremap <leader>/ :Commentary<cr>
Sie können jetzt Kommentare umschalten, indem Sie
Leader
+ drücken/
, genau wie bei Sublime und Atom.quelle
Verwenden Sie Strg-V, um Textrechtecke auszuwählen: Gehen Sie zum ersten
#
Zeichen, geben Sie Ctrl+ ein V, bewegen Sie sich einmal nach rechts und dann nach unten bis zum Ende der Kommentare. Gebenx
Sie nun Folgendes ein : Sie löschen alle#
Zeichen, gefolgt von einem Leerzeichen.quelle
Hier ist ein Abschnitt von mir
.vimrc
:Im normalen und visuellen Modus kann ich drücken ,ic, um Kommentare einzufügen und Kommentare ,rczu entfernen.
quelle
.vimrc
.map
deckt normale und visuelle Modi ab, so dass Sie dievmap
Linien nicht benötigenafter/ftplugin/ruby.vim
.<leader>ic
und<leader>rc
Ich benutze vim 7.4 und das funktioniert bei mir.
Angenommen, wir kommentieren / kommentieren 3 Zeilen.
Kommentieren:
wenn die Leitung hat keinen Tabulator / Leerzeichen am Anfang:
ctrl + V
dannjjj
dannshift + I (cappital i)
dann//
dann ,esc esc
wenn die Leitung hat Tabulator / Leerzeichen am Anfang noch können Sie die oben oder Swap für tun
c
:ctrl + V
dannjjj
dannc
dann//
dannesc esc
zu uncomment:
Wenn die Zeilen am Anfang keine Tabulator / Leerzeichen haben:
ctrl + V
dannjjj
dannll (lower cap L)
dannc
wenn die Linien Tabulator / Leerzeichen am Anfang, dann Raum , den Sie über und
esc
ctrl + V
dannjjj
dannll (lower cap L)
dannc
dannspace
dannesc
quelle
Ich verwende gerne das tcomment-Plugin: http://www.vim.org/scripts/script.php?script_id=1173
Ich habe gc und gcc zugeordnet, um eine Zeile oder einen hervorgehobenen Codeblock zu kommentieren. Es erkennt den Dateityp und funktioniert sehr gut.
quelle
Mit 30 Antworten vor mir werde ich versuchen, eine noch einfachere Lösung zu finden: Fügen Sie
#
am Anfang der Zeile ein ein. Gehen Sie dann eine Zeile nach unten und drücken Sie Punkt (.
). Zur Wiederholung, nichtj
,.
,j
,.
, etc ... zu uncomment, entfernen ein#
(Sie können schlagenx
die über#
), und tut das Gegenteil mitk
,.
usw ...quelle
I#<Esc>j
in den Puffer schreiben - sagen wirc
- und dann tun10@c
, oder wie viele Zeilen zu Ihnen passen.So kommentieren Sie die folgenden drei Zeilen in vi aus:
Platzieren Sie den Cursor über dem oberen linken
#
Symbol und drücken Sie CtrlV. Dies versetzt Sie in den visuellen Blockmodus. Drücken Sie den Abwärtspfeil oder Jdreimal, um alle drei Zeilen auszuwählen. Dann drücken Sie D. Alle Kommentare verschwinden. Zum Rückgängigmachen drücken Sie U.So kommentieren Sie die folgenden drei Zeilen in vi:
Platzieren Sie den Cursor über dem oberen linken Zeichen und drücken Sie CtrlV. Dies versetzt Sie in den visuellen Blockmodus. Drücken Sie dreimal ↓oder J, um alle drei Zeilen auszuwählen. Dann drücken:
I//Esc
Das ist eine Hauptstadt I, // und Escape.
Wenn Sie drücken ESC, erhalten alle ausgewählten Zeilen das von Ihnen angegebene Kommentarsymbol.
quelle
Ja, es gibt bereits 33 (meist sich wiederholende) Antworten auf diese Frage.
Hier ist ein weiterer Ansatz zum Kommentieren von Zeilen in Vim: Bewegungen . Die Grundidee besteht darin, Zeilen mit der gleichen Methode wie das Ziehen eines Absatzes durch Eingabe zu kommentieren oder zu kommentieren
yip
oder Löschen von 2 Zeilen durch Eingabedj
.Mit diesem Ansatz können Sie Folgendes tun:
ccj
die nächsten 2 Zeilen zu kommentieren undcuk
sie zu kommentieren ;cci{
einen Block auskommentieren undcui{
auskommentieren;ccip
einen ganzen Absatz auskommentieren undcuip
auskommentieren.ccG
alles bis zur letzten Zeilecugg
auskommentieren und alles bis zur ersten Zeile auskommentieren.Sie benötigen lediglich 2 Funktionen, die über Bewegungen ausgeführt werden , und 2 Zuordnungen für jede Funktion. Zunächst die Zuordnungen:
(Siehe das Handbuch über den
g@
Bediener und dieoperatorfunc
Variable.)Und jetzt die Funktionen:
Ändern Sie die obigen regulären Ausdrücke nach Ihrem Geschmack, wo sich die befinden
#
sollten:quelle
Wenn Sie die Zeilennummern bereits kennen,
n,ms/# //
würde das funktionieren.quelle
Ich markiere die erste und letzte Zeile (ma und mb) und mache dann: 'a,' bs / ^ # //
quelle
Ich benutze EnhancedCommentify . Es kommentiert alles, was ich brauchte (Programmiersprachen, Skripte, Konfigurationsdateien). Ich benutze es mit Visual-Mode-Bindungen. Wählen Sie einfach den Text aus, den Sie kommentieren möchten, und drücken Sie co / cc / cd.
quelle
Ich kombinierte die Antwort von Phil und jqno und machte Kommentare mit Leerzeichen:
quelle
Es gibt dieses lebensverändernde Plugin
tpope
namensvim-commentary
https://github.com/tpope/vim-commentary
Dieses Plugin bietet :
Verwendung :
:<,'>
:<,'>Commentary
und drücken Sie Enter.quelle
vim-commentary
(wie alle Plugins von tpope) hat den Bonus, idiomatisch zu sein.gc
= "Kommentar gehen",gcap
= "Kommentar kommentieren" usw.Diese Antwort ist am nützlichsten, wenn Sie keine Plugins installieren können, Ihre Kommentarzeichen jedoch den vorhandenen Einrückungsstufen folgen sollen.
Diese Antwort ist hier auf 1) den richtigen Code zeigen , in eine Paste
.vimrc
zu erhaltenvim 7.4+
Block zu tun zu kommentieren / uncommenting während Einrückungsebene mit 1 Verknüpfung im visuellen Modus zu halten und 2) es zu erklären. Hier ist der Code:Wie es funktioniert:
let b:commentChar='//'
: Dadurch wird eine Variable in vim erstellt. Dasb
hier bezieht sich auf den Bereich, der in diesem Fall im Puffer enthalten ist, dh die aktuell geöffnete Datei. Ihre Kommentarzeichen sind Zeichenfolgen und müssen in Anführungszeichen gesetzt werden. Die Anführungszeichen sind nicht Teil dessen, was beim Umschalten von Kommentaren ersetzt wird.autocmd BufNewFile,BufReadPost *...
: Autobefehle werden für verschiedene Dinge ausgelöst. In diesem Fall werden diese ausgelöst, wenn eine neue Datei oder die gelesene Datei mit einer bestimmten Erweiterung endet. Nach dem Auslösen führen Sie den folgenden Befehl aus, mit dem wir dencommentChar
Dateityp abhängig ändern können. Es gibt andere Möglichkeiten, dies zu tun, aber sie sind für Anfänger (wie mich) verwirrender.function! Docomment()
: Funktionen werden beginnend mitfunction
und endend mit deklariertendfunction
. Funktionen müssen mit einem Großbuchstaben beginnen. Das!
stellt sicher, dass diese Funktion alle vorherigen Funktionen überschreibt, die wieDocomment()
bei dieser Version von definiert wurdenDocomment()
. Ohne das!
hatte ich Fehler, aber das könnte daran liegen, dass ich neue Funktionen über die vim-Befehlszeile definiert habe.execute '''<,''>s/^\s*/&'.escape(b:commentChar, '\/').' /e'
: Execute ruft einen Befehl auf. In diesem Fall wird ausgeführtsubstitute
, was einen Bereich annehmen kann (standardmäßig ist dies die aktuelle Zeile), z. B.%
für den gesamten Puffer oder'<,'>
für den hervorgehobenen Abschnitt.^\s*
ist Regex, um mit dem Anfang einer Zeile übereinzustimmen, gefolgt von einer beliebigen Anzahl von Leerzeichen, an die dann (aufgrund von&
) angehängt wird . Das.
hier wird für die Verkettung von Zeichenfolgen verwendet, daescape()
es nicht in Anführungszeichen gesetzt werden kann.escape()
Ermöglicht es Ihnen, Zeichen zu maskierencommentChar
, die den Argumenten entsprechen (in diesem Fall\
und/
), indem Sie ihnen ein vorangestellt haben\
. Danach verketten wir erneut mit dem Ende unserersubstitute
Zeichenfolge, die diee
Flagge. Mit dieser Flagge können wir lautlos versagen. Wenn wir also in einer bestimmten Zeile keine Übereinstimmung finden, werden wir nicht darüber schreien. Insgesamt können wir in dieser Zeile ein Kommentarzeichen gefolgt von einem Leerzeichen kurz vor dem ersten Text einfügen, was bedeutet, dass wir unsere Einrückungsstufe beibehalten.execute '''<,''>s/\v(^\s*)'.escape(b:commentChar, '\/').'\v\s*/\1/e'
: Dies ähnelt unserem letzten großen langen Befehl. Einzigartig in diesem Fall haben wir\v
, was sicherstellt, dass wir unserem nicht entkommen müssen()
, und1
was sich auf die Gruppe bezieht, die wir mit unserem gebildet haben()
. Grundsätzlich stimmen wir mit einer Zeile überein, die mit einer beliebigen Anzahl von Leerzeichen beginnt, und dann mit unserem Kommentarzeichen, gefolgt von einer beliebigen Anzahl von Leerzeichen, und wir behalten nur den ersten Satz von Leerzeichen bei. Auch hiere
können wir unbemerkt fehlschlagen , wenn wir auf dieser Linie keinen Kommentar Charakter haben.let l:line=getpos("'<")[1]
: Dies setzt eine Variable ähnlich wie bei unserem Kommentarzeichen,l
bezieht sich jedoch auf den lokalen Bereich (lokal für diese Funktion).getpos()
erhält in diesem Fall die Position des Beginns unserer Hervorhebung und[1]
bedeutet, dass wir uns nur um die Zeilennummer kümmern, nicht um andere Dinge wie die Spaltennummer.if match(getline(l:line), '^\s*'.b:commentChar)>-1
: Sie wissen, wieif
funktioniert.match()
prüft, ob das erste Ding das zweite enthält, also greifen wir zu der Zeile, in der wir mit der Hervorhebung begonnen haben, und prüfen, ob sie mit Leerzeichen gefolgt von unserem Kommentarzeichen beginnt.match()
Gibt den Index zurück, in dem dies zutrifft, und-1
wenn keine Übereinstimmungen gefunden wurden. Daif
alle Zahlen ungleich Null als wahr ausgewertet werden, müssen wir unsere Ausgabe vergleichen, um festzustellen, ob sie größer als -1 ist. Der Vergleich invim
gibt 0 zurück, wenn falsch, und 1, wenn wahr, wasif
gesehen werden soll, um richtig zu bewerten.vnoremap <silent> <C-r> :<C-u>call Comment()<cr><cr>
:vnoremap
bedeutet, den folgenden Befehl im visuellen Modus zuzuordnen, ihn jedoch nicht rekursiv zuzuordnen (dh keine anderen Befehle zu ändern, die möglicherweise auf andere Weise verwendet werden). Grundsätzlich sollten Sie als Anfänger immernoremap
sicherstellen, dass Sie nichts kaputt machen.<silent>
bedeutet "Ich will nicht deine Worte, nur deine Taten" und sagt, dass nichts in die Kommandozeile gedruckt werden soll.<C-r>
ist das, was wir abbilden, was in diesem Fall Strg + r ist (beachten Sie, dass Sie Cr bei dieser Zuordnung im normalen Modus weiterhin für "Wiederherstellen" verwenden können).C-u
ist ein bisschen verwirrend, aber im Grunde stellt es sicher, dass Sie Ihre visuelle Hervorhebung nicht aus den Augen verlieren (gemäß dieser Antwort beginnt Ihr Befehl damit'<,'>
, was wir wollen).call
weist vim hier lediglich an, die von uns genannte Funktion auszuführen, und<cr>
bezieht sich auf das Drücken derenter
Taste. Wir müssen es einmal drücken, um die Funktion tatsächlich aufzurufen (andernfalls haben wir nurcall function()
in der Befehlszeile getippt , und wir müssen es erneut drücken, damit unsere Stellvertreter den ganzen Weg durchlaufen (nicht wirklich sicher, warum, aber was auch immer).Wie auch immer, hoffentlich hilft das. Dies erfordert alles, was mit markiert
v
istV
, oderC-v
prüft, ob die erste Zeile kommentiert ist. Wenn ja, versuchen Sie, alle markierten Zeilen zu kommentieren. Wenn nicht, fügen Sie jeder Zeile eine zusätzliche Ebene mit Kommentarzeichen hinzu. Dies ist mein gewünschtes Verhalten; Ich wollte nicht nur umschalten, ob jede Zeile im Block kommentiert wurde oder nicht, also funktioniert es perfekt für mich, nachdem ich mehrere Fragen zu diesem Thema gestellt habe.quelle
Ich benutze Tim Popes Vim-Kommentar- Plugin.
quelle
Sie können vim-comment von tpope ( https://github.com/tpope/vim-commentary) verwenden ) wie folgt verwenden:
Rufen Sie den visuellen Modus auf, indem Sie drücken
Dann drücken
Jetzt müssen Sie nur noch die Eingabetasten eingeben:
Dadurch wird die gesamte Auswahl auskommentiert, um die Wiederholungstasten zu kommentieren:
quelle
Hier ist ein grundlegender Einzeiler basierend auf dem
C-v
folgendenI
oben skizzierte Verfahren.Dieser Befehl (
:Comment
) fügt eine ausgewählte Zeichenfolge am Anfang aller ausgewählten Zeilen hinzu.Fügen Sie diese Zeile zu Ihrer hinzu
.vimrc
, um einen Befehl zu erstellen, der ein einzelnes Argument akzeptiert und das Argument am Anfang jeder Zeile in der aktuellen Auswahl platziert.ZB wenn der folgende Text ausgewählt ist:
und Sie führen dies aus :
:Comment //
, das Ergebnis wird sein:quelle
Ausgehend von den Ideen in den Antworten hier habe ich meine eigene Kommentarfunktion gestartet. Kommentare werden ein- und ausgeschaltet. Es kann Dinge wie behandeln
//print('blue'); //this thing is blue
und schaltet nur den ersten Kommentar um. Darüber hinaus werden Kommentare und ein einzelnes Leerzeichen hinzugefügt, genau dort, wo sich das erste Nicht-Leerzeichen befindet und nicht ganz am Anfang der Zeile. Außerdem werden die Leerzeichen nicht unnötig kopiert, sondern es werden Zooms (: h \ zs als Hilfe) verwendet, um diese zusätzliche Arbeit beim Kommentieren und Einrücken von Zeilen zu vermeiden. Hoffe, es hilft einigen Minimalisten da draußen. Vorschläge sind willkommen.quelle
Ich benutze Kommentare.vim von Jasmeet Singh Anand (gefunden auf vim.org),
Es funktioniert mit C, C ++, Java, PHP [2345], Proc, CSS, HTML, HTML, XML, XHTML, Vim, Vimrc, SQL, Sh, Ksh, Csh, Perl, Tex, Fortran, ml, Caml, Ocaml, vhdl, haskel und normale dateien
Es kommentiert und entkommentiert Zeilen in verschiedenen Quelldateien sowohl im normalen als auch im visuellen Modus
Verwendungszweck:
quelle
Die schnellste und intuitivste Methode von allen besteht darin, die Zeilen neu
)
zu kommentieren und dann(
zu kommentieren . Probieren Sie es aus und Sie werden nicht zurückkehren.In Ruby oder Bash mit 2-Leerzeichen:
In C / C ++ oder PHP mit 4 Leerzeichen:
Nachteile sind, dass Sie verlieren
(
und)
Satzbewegungen ausführen (aber dortdas
ausfüllen können), und dass Sie gelegentlich auf das Auswählen und Ersetzen oder CtrlVauf die Bearbeitung langer Abschnitte zurückgreifen . Aber das ist ziemlich selten.Und im C-Stil lassen sich die langen Kommentare am besten behandeln mit:
... was sich gut mit der Verwendung
V[move]gq
zum Wiederherstellen des Zeilenumbruchs kombinieren lässt .quelle
Dieser einfache Ausschnitt stammt aus meiner .vimrc:
Es ist für // - Kommentare, aber Sie können es leicht für andere Zeichen anpassen. Sie können autocmd verwenden, um einen Leader festzulegen, wie von jqno vorgeschlagen.
Dies ist eine sehr einfache und effiziente Methode, um auf natürliche Weise mit Bereichen und dem visuellen Modus zu arbeiten.
quelle
Ich mag
/* ... */
(C ansi Kommentare), also hier ist es mein Trick für dich. Sie können es natürlich anpassen, um es in verschiedenen Fällen zu verwenden.Kommentar mit / * ... * /
Wählen Sie den Text aus (gehen Sie zum Anfang, starten Sie den visuellen Block, springen Sie mit
}
):Geben Sie den Befehl ein, der in der Auswahl angewendet werden soll
Der Befehl sieht folgendermaßen aus:
:'<,'>norm i /* ^[$a */
Siehe (i *) für Details.
Kommentieren Sie das / * ... * / aus
Wählen Sie den Text aus (wie zuvor oder auf andere Weise):
Geben Sie den Befehl ein, der in der Auswahl angewendet werden soll
Der Befehl sieht folgendermaßen aus:
:'<,'>norm :s-\s*/\*\s*-^M$bbld$
Siehe (ii *) für Details.
Ergebnis
Effekt ist Kommentare Zeile für Zeile:
Wird (und umgekehrt):
Es ist besser, es als etwas
map
oder@reg
in Ihrem zu speichern.vimrc
, weil es viel zu tippen ist. Wenn Sie einen einzelnen/*
und*/
den gesamten Block bevorzugen , verwenden Sie:Kommentar mit einem einzelnen / * * / den gesamten Block
Speichern Sie es in einem Register, indem Sie es beispielsweise
qc
am Anfang eines Absatzes aufzeichnen , um zu kommentieren:und vergiss nicht noch
q
einmal, um die Aufnahme zu beenden.Siehe (iii *) für Details.
Kommentieren Sie ein einzelnes / * * / aus einem Block aus
Speichern Sie es beispielsweise im Register
@u
. Platzieren Sie den Cursor an einer beliebigen Stelle im Block und:Speichern Sie das Register, indem Sie den
q
Befehl beenden .Siehe (iv *) für Details.
Ergebnis
Effekt ist ein einzelner Kommentar für mehrere Zeilen:
Wird (und umgekehrt):
Erklärungen
(i *) Es funktioniert, indem
norm
der Befehl in jeder ausgewählten Zeile wiederholt angewendet wird. Der Befehl fügt einfach a ein/*
, findet das Ende dieser Zeile und endet mit dem Einfügen von a*/
(ii *) Es wird auch verwendet
norm
, um das Suchen / Ersetzen in jeder Zeile zu wiederholen. Suchespaces /* spaces
und ersetze durch nichts. Danach findet das Ende der Zeile, zwei Wörter zurück, rechts einen Buchstaben, bis zum Ende löschen.(iii *) Wählt den Absatz durch aus
v}
, löscht ihn, fügt einen Kommentar zum Öffnen und Schließen ein, bewegt sich in die Mitte und fügt den gelöschten Block ein.(iv *) Irgendwo in der Mitte findet rückwärts a
/*
, löscht es; findet vorwärts a*/
, löscht es.quelle