2009-01-13 14 views
10

Ich bin ein paar Mal in den folgenden Fall gelaufen und habe mich gefragt, ob es in Vim einen schnellen Weg gibt, damit umzugehen.Vim Case-Agnostic Regex

Ich werde eine Quelldatei wie die folgende haben:

#ifndef _FOO_H_ 
#define _FOO_H_ 

class Foo { 
    Foo(int foo); 
}; 
#endif 

Und ich würde es auf die folgende umwandeln möchten:

#ifndef _BAR_H_ 
#define _BAR_H_ 

class Bar { 
    Bar(int bar); 
}; 
#endif 

Also, ich möchte alle foo -> bar, aber um die Großschreibung des Originals zu behalten. Im Moment habe ich das mit 3 oder 4 verschiedenen Regexen gemacht, aber es scheint, dass es einen besseren Weg geben sollte. Irgendwelche Ideen?

Antwort

10

This script wird eine Fall-Erhaltung suchen/ersetzen.

Kopieren Sie das Skript in das Plugin-Verzeichnis (~/.vim/plugin), dann tun

:set ic 
:%s/foo/\=KeepCaseSameLen(submatch(0), 'bar')/g 
+0

Sie sollten Ihre Version von Keepcase aktualisieren. Ich habe einen: ErsatzCase-Befehl hinzugefügt, der Substitutionen sehr vereinfacht. :) –

1

Tim Popes Vim Abolish Plugin diese und eine ganze Tonne mehr tun können. :%Subvert/string/new string/g wird Groß-/Kleinschreibung, Groß-/Kleinschreibung usw. beibehalten, und das Plug-in unterstützt auch Wortvarianten mit einer {var1,var2} Syntax. Sehr hilfreich.