2013-11-01 8 views
10

Ich versuche Ruby-Datei zu suchen und alle Methoden zu finden (bevor sie später automatisch repassiert). i regexp In vim, verwenden Sie folgendes:nicht-gierige Multiline-Suche in vim

/\vdef.*(\n.*){-}end 

Doch obwohl ich verwende "{-}", es ist ganze Dateiinhalte auswählt.

+1

I don‘ Ich verstehe, was Sie zusammenbringen wollen. Wie wäre es, wenn es eine 'if ... end'-Bedingung in einer Funktion gibt? – Birei

+1

Ja, ich werde Regexp später entsprechend ändern (wie positive Lookahead für ein anderes def oder etw hinzufügen). Was ich gerade brauche, ist die Art, es nicht-gierig zu suchen. –

Antwort

11

verwendet \_., um das Zeilenumbruchzeichen in den gemeinsamen . aufzunehmen.

/\vdef\_.{-}end 
+2

In meinem Fall hat '' '/ \ vdef \ _. \ {-} end''' funktioniert. – raratiru

5

Versuchen Sie folgenden Regex.

/\vdef(\n|.){-}end 

.* war Täter in Ihrem Fall

+0

können Sie den '. *' Nach 'def' löschen. '\ vdef (\ n |.) {-} end' würde genauso gut funktionieren. – iruvar

+0

@ 1_CR Danke, dass Sie darauf hingewiesen haben. Aktualisiert meine Ans. – jkshah

5

In meiner Version von Vim, müssen Sie die { entkommen, sowie mit \_. wie andere Antworten gesagt haben:

/def\_.\{-}end