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)

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.


@niekas, dann \s*zwischen /^und hinzufügen [^.
Romainl

Die letzte Abfrage lautet also : /^\s*import ipdb. Das ist genau das, was ich wollte.
Niekas
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.