Suchen Sie nach Zeilen, die mit einer bestimmten Zeichenfolge in vim beginnen?

9

Ich habe dieses Code-Snippet:

# import ipdb; ipdb.set_trace()
def foo():
    ...
    import ipdb; ipdb.set_trace()
    ...
    # import ipdb; ipdb.set_trace()

Wie soll ich eine Suchabfrage angeben, damit nur die nicht kommentierten ipdbZeilen gefunden werden?

Ich denke, der Befehl könnte ungefähr so ​​aussehen: /import ipdb/(line start flag)

Niekas
quelle

Antworten:

13

Wie wäre es damit:

/^[^#]*ipdb

Der erste ^verankert die Übereinstimmung am Zeilenanfang, [^#]stimmt mit jedem Zeichen außer a überein #(das ^Mittel, um mit jedem Zeichen außer den angegebenen übereinzustimmen), und das *wiederholt dies 0 oder mehrmals.

Siehe: für weitere Informationen.:help /^ :help /[

Beachten Sie, dass dies mit allen Zeilen übereinstimmt, mit ipdbdenen nicht mit einem Kommentar begonnen wird, einschließlich:

import other_module, ipdb

Wenn Sie nur diejenigen abgleichen möchten, die mit beginnen import ipdb, können Sie Folgendes verwenden:

/^\s*import ipdb

Hier ^wird die Übereinstimmung erneut am Zeilenanfang verankert, es \swerden alle Leerzeichen abgeglichen und dies wird *mindestens 0 Mal wiederholt.

Martin Tournoij
quelle
@niekas, dann \s*zwischen /^und hinzufügen [^.
Romainl
Die letzte Abfrage lautet also : /^\s*import ipdb. Das ist genau das, was ich wollte.
Niekas