Hallo zusammen, habe kleines vi-Problem. Versuche mich immer mal wieder damit, kleine Funktionalitäten des vi bei meiner Arbeit zu nutzen. Da ich momentan einige configs editiere, in denen ich Ersetzungen vornehme, wollte ich das nun auch mal per vi realisieren. Meine Vorgehensweise: ++++++++++++++++++ eins zwei drei ~ ~ :s/zwei/vier/g ++++++++++++++++++ Also, laut dem was ich gelesen habe, sollte dieser Befehl doch global für die gesamte Datei (g) das Wort zwei in vier ändern. Leider liege ich damit falsch, denn ich erhalte stattdessen: ++++++++++++++++++ Pattern not found:zwei ++++++++++++++++++ Lasse ich das g weg, so klappt es in der Zeile, in der der Cursor sich befindet. Für g steht in meinem Nachschlagewerk: ++++++++++++++++++ Flag g Alle Vorkommen von "alt" werden in jeder Zeile zu "neu" geändert (global) ++++++++++++++++++ Was hab ich denn da falsch verstanden? Hope for help, Bernd
Hallo Bernd
Also, laut dem was ich gelesen habe, sollte dieser Befehl doch global für die gesamte Datei (g) das Wort zwei in vier ändern. Leider liege ich damit falsch, denn ich erhalte stattdessen:
Du hast nicht ganz richtig gelesen. Du hast eingegeben dass die Ersetzung nur für eine Zeile stattfindet. Versuchs mal mit :1,$ s/zwei/vier/g dann funktionierts... Andreas
hallo und thx: Am Donnerstag, 3. April 2003 09:51 schrieb Jurreit, Andreas:
Hallo Bernd
Also, laut dem was ich gelesen habe, sollte dieser Befehl doch global für die gesamte Datei (g) das Wort zwei in vier ändern. Leider liege ich damit falsch, denn ich erhalte stattdessen:
Du hast nicht ganz richtig gelesen. Du hast eingegeben dass die Ersetzung nur für eine Zeile stattfindet.
Versuchs mal mit
:1,$ s/zwei/vier/g
dann funktionierts...
Yop, so ists. das war wohl mit [adr1[adr2]] gemeint, hatte ich falsch interpretiert. Kann jetzt ersetzen, wie ich es vorhatte, thx:) Bernd
On Thu, Apr 03, 2003 at 09:51:35AM +0200, Jurreit, Andreas wrote:
:1,$ s/zwei/vier/g
Der Range 1,$ kann in vi mit % abgekürzt werden. Also :%s/zwei/vier/g Ranges koennen Zeilennummern sein ("1,4", "4,$"), oder auch selber Regexe. So ersetzt in eins zwei drei vier fuenf sechs sieben das Kommando /zwei/,/fuenf/s/e/x/g alle Vorkommen von e durch x zwischen den Zeilen zwei und fuenf. Das Resultat ist also eins zwxi drxi vixr fuxnf sechs sieben Kristian
* Kristian Koehntopp schrieb am 03.Apr.2003:
On Thu, Apr 03, 2003 at 09:51:35AM +0200, Jurreit, Andreas wrote:
:1,$ s/zwei/vier/g
Der Range 1,$ kann in vi mit % abgekürzt werden. Also
:%s/zwei/vier/g
Ranges koennen Zeilennummern sein ("1,4", "4,$"), oder auch selber Regexe. So ersetzt in
eins zwei drei vier fuenf sechs sieben
das Kommando
/zwei/,/fuenf/s/e/x/g
alle Vorkommen von e durch x zwischen den Zeilen zwei und fuenf. Das Resultat ist also
eins zwxi drxi vixr fuxnf sechs sieben
Zusätzlich gehen auch noch relative Adressierung. So hätte man das gleiche Ergebnis bei -1,+2/s/e/x/g vorrausgesetzt, man befindet sich in Zeile drei. Bernd -- Bitte die Etikette beachten: http://www.suse-etikette.de.vu/etikette.html Bitte Realnamen angeben, kein Vollquoting, kein Html, PGP oder Visitenkarten benutzen. Signatur mit "-- " abtrennen, bei Antworten "Re: " voranstellen, sonst nichts. |Zufallssignatur 4
On Thu, Apr 03, 2003 at 12:51:05PM +0200, Bernd Brodesser wrote:
Zusätzlich gehen auch noch relative Adressierung. So hätte man das gleiche Ergebnis bei
-1,+2/s/e/x/g
vorrausgesetzt, man befindet sich in Zeile drei.
Oder man arbeitet mit Marken: Gehe auf die Zeile, in der zwei steht, drücke ma. Gehe auf die Zeile, in der fuenf steht, drücke mb. Dann 'a,'bs/e/x/g Kristian
Kristian Koehntopp wrote:
On Thu, Apr 03, 2003 at 12:51:05PM +0200, Bernd Brodesser wrote:
Zusätzlich gehen auch noch relative Adressierung. So hätte man das gleiche Ergebnis bei
-1,+2/s/e/x/g
vorrausgesetzt, man befindet sich in Zeile drei.
Oder man arbeitet mit Marken:
Gehe auf die Zeile, in der zwei steht, drücke ma. Gehe auf die Zeile, in der fuenf steht, drücke mb.
Dann
'a,'bs/e/x/g
oder etwas optisch aufgepeppt: jv4j:s/e/x/g ^^^^ Hint: Für Mausakrobaten gibst auch andere Alternativen ;). -- - maik
Hallo, On 03-Apr-2003 Jurreit, Andreas wrote:
Versuchs mal mit
:1,$ s/zwei/vier/g
dann funktionierts...
Oder :%s/zwei/vier/g Gruess, Heinz. -- Journalisten gegen den Krieg: http://www.pickings.de/tiki/tiki-index.php?page=Krieg http://www.pahlke-online.de/reisenews/ http://www.Pahlke-KunstWebDesign.de/
versuche es mit :1,$s/zwei/vier/g Am Donnerstag, 3. April 2003 09:39 schrieb Bernd Tannenbaum:
Hallo zusammen,
habe kleines vi-Problem. Versuche mich immer mal wieder damit, kleine Funktionalitäten des vi bei meiner Arbeit zu nutzen. Da ich momentan einige configs editiere, in denen ich Ersetzungen vornehme, wollte ich das nun auch mal per vi realisieren. Meine Vorgehensweise:
++++++++++++++++++ eins zwei drei ~ ~
:s/zwei/vier/g
++++++++++++++++++
Also, laut dem was ich gelesen habe, sollte dieser Befehl doch global für die gesamte Datei (g) das Wort zwei in vier ändern. Leider liege ich damit falsch, denn ich erhalte stattdessen:
++++++++++++++++++ Pattern not found:zwei ++++++++++++++++++
Lasse ich das g weg, so klappt es in der Zeile, in der der Cursor sich befindet. Für g steht in meinem Nachschlagewerk:
++++++++++++++++++ Flag g Alle Vorkommen von "alt" werden in jeder Zeile zu "neu" geändert (global) ++++++++++++++++++
Was hab ich denn da falsch verstanden?
Hope for help, Bernd
-- Mit freundlichen Grüßen Frank Markwort 12249 Berlin Ingridpfad 8 Tel.: 030 / 7726128 www.magma24.de
participants (7)
-
B.Brodesser@t-online.de
-
Bernd Tannenbaum
-
Frank.Markwort@t-online.de
-
h.pahlke@nexgo.de
-
Jurreit, Andreas
-
Kristian Koehntopp
-
Maik Holtkamp