vim oder gvim scripting

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
a_pat
Beiträge: 167
Registriert: 11.01.2005 16:54:22
Wohnort: Luzern

vim oder gvim scripting

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...

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: vim oder gvim scripting

Beitrag von Liffi » 27.01.2012 07:46:37

Versuch mal:

Code: Alles auswählen

let line = getline(i)
for funktioniert afaik nur mit einer Liste, du holst aber nur 1 Zeile.

Und falls es dir nicht hilft, solltest du es auf der vim mailing list[1] oder der vim_use[2] Group versuchen.

[1]http://www.vim.org/maillist.php
[2]https://groups.google.com/group/vim_use

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Re: vim oder gvim scripting

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

Re: vim oder gvim scripting

Beitrag von a_pat » 27.01.2012 20:08:42

danke für die hinweise :)
Liffi hat geschrieben:

Code: Alles auswählen

let line = getline(i)
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??

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: vim oder gvim scripting

Beitrag von Liffi » 27.01.2012 21:07:40

a_pat hat geschrieben: Habt ihr ne Idee wie ich in File2 nach einem Begriff suche und dann darin die ZeileX einfüge??
Mit match[1] suchen, mit setline[2] die Zeile setzen?
[1]http://vimdoc.sourceforge.net/htmldoc/eval.html#match()
[2]http://vimdoc.sourceforge.net/htmldoc/eval.html#setline()

a_pat
Beiträge: 167
Registriert: 11.01.2005 16:54:22
Wohnort: Luzern

Re: vim oder gvim scripting

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.

Code: Alles auswählen

:s/search/replace
geht im script modus komischerweise nicht!!!

a_pat
Beiträge: 167
Registriert: 11.01.2005 16:54:22
Wohnort: Luzern

Re: vim oder gvim scripting

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 :evil:

Code: Alles auswählen

gg=G
:$
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

Re: vim oder gvim scripting

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 :evil:

Code: Alles auswählen

gg=G
:$
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

Re: vim oder gvim scripting

Beitrag von a_pat » 30.01.2012 11:44:21

ja gerne :)

hier ist das scribus xml file:

NoPaste-Eintrag36215

Antworten