Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
a_pat
- Beiträge: 167
- Registriert: 11.01.2005 16:54:22
- Wohnort: Luzern
Beitrag
von a_pat » 26.01.2012 23:21:53
Hallo
Ich versuche schon seit einigen Stunden zwei Files mit einem vim Script zu verbinden. Jedoch scheint es, dass ich schon am Anfang kläglich scheitere
Aus dem ersten File will ich jede einzelne Zeile kopieren und im zweiten File jeweils bei einem bestimmten Ort einfügen. Mein Script für's Zeilenkopieren sieht wie folgt aus:
Code: Alles auswählen
:let i = 1
:while i < 10
:for line in getline(i)
: echo line
: let i += 1
:endfor
:endwhile
Die Fehlermeldung ist:
E714: Liste benötigt
Ich glaube, dass ich da etwas total falsch mache. Ich habe mit gvim mein erstes File geöffnet, klicke das script Button an und wähle mein super Skript aus. Und Vim alleine bringt mich noch weniger weit...
-
nepos
- Beiträge: 5238
- Registriert: 05.01.2005 10:08:12
Beitrag
von nepos » 27.01.2012 09:15:46
Verstehe ich das richtig, dass File 1 als kompletter Block an einer bestimmten Stelle in File 2 rein soll?
Wenn ja, brauchts kein Skript. In File 2 in die Zeile gehen, hinter der File 1 rein soll, dann :r File1 und gut is
-
a_pat
- Beiträge: 167
- Registriert: 11.01.2005 16:54:22
- Wohnort: Luzern
Beitrag
von a_pat » 27.01.2012 20:08:42
danke für die hinweise
funktioniert bestens
da ich ja mit euch schon viel weiter gekommen bin, möchte ich gerade nicht auf die auf die mailliste oder googlegroups wechslen.
nepos hat geschrieben:Verstehe ich das richtig, dass File 1 als kompletter Block an einer bestimmten Stelle in File 2 rein soll?
Nö, leider nicht. Ich muss Zeile1 von File1 an eine bestimmte Stelle von File2 kopieren und Zeile2 an eine andere Stelle von File2. Da es knapp 300 Zeilen sind, möchte ich dies scripten
Habt ihr ne Idee wie ich in File2 nach einem Begriff suche und dann darin die ZeileX einfüge??
-
a_pat
- Beiträge: 167
- Registriert: 11.01.2005 16:54:22
- Wohnort: Luzern
Beitrag
von a_pat » 29.01.2012 17:14:42
so, bin nun etwas weiter gekommen:
Code: Alles auswählen
let i = 1
while i < 10
let replace = getline(i)
let i += 1
o muster.sla
let search = 'bla'
execute '%s/' . search . '/' . replace
wq!
endwhile
leider ersetzt
execute'%s' gleich das ganze dokument
und nicht wie gewünscht nur einmal.
geht im script modus komischerweise nicht!!!
-
a_pat
- Beiträge: 167
- Registriert: 11.01.2005 16:54:22
- Wohnort: Luzern
Beitrag
von a_pat » 29.01.2012 21:13:04
Ach soo... das
execute Komando ist nicht das Problem. Sondern die whitespaces vom xml Format
Und jegliches mehr habe ich versucht. Jedoch sind die @ am Anfang der Zeilen noch immer da. Mist.
Versteht jemand, weshalb die globale %s Suchfunktion funktioniert und :s bei den Whitespaces hängen bleibt??
-
Liffi
- Beiträge: 2345
- Registriert: 02.10.2004 01:33:05
Beitrag
von Liffi » 30.01.2012 07:02:35
a_pat hat geschrieben:Ach soo... das
execute Komando ist nicht das Problem. Sondern die whitespaces vom xml Format
Und jegliches mehr habe ich versucht. Jedoch sind die @ am Anfang der Zeilen noch immer da. Mist.
Versteht jemand, weshalb die globale %s Suchfunktion funktioniert und :s bei den Whitespaces hängen bleibt??
Mir ist das Problem noch nicht ganz klar. Kannst du mal ein Minimalbeispiel einer Testdatei posten?
-
a_pat
- Beiträge: 167
- Registriert: 11.01.2005 16:54:22
- Wohnort: Luzern
Beitrag
von a_pat » 30.01.2012 11:44:21
ja gerne
hier ist das scribus xml file:
36215