vi - Ausgabe eines Shell Programms einfuegen
Hallo, mit ':!ls' kann ich das ls Kommando in vim absetzen. Man bekommt das Ergebnis, und nach Bestätigung ist man wieder im Editor. Aber: wie kann ich die Ausgabe in die Datei, welche ich gerade editiere pipen? Habe weder in Google noch in der vi Editor Pocket Reference etwas gefunden. Ciao Sascha -- sa at programmers-world dot com http://www.livingit.de Boomarks online: http://www.mobile-bookmarks.info Soon available in english Mail geschrieben: Montag, den 07. Juli 2003 um 11:58
Sascha Andres wrote:
Hallo,
mit ':!ls' kann ich das ls Kommando in vim absetzen. Man bekommt das Ergebnis, und nach Bestätigung ist man wieder im Editor. Aber: wie kann ich die Ausgabe in die Datei, welche ich gerade editiere pipen?
Habe weder in Google noch in der vi Editor Pocket Reference etwas gefunden.
HI, ist ganz einfach mit : . ! ls dann bekommst du den Output an der Stelle wo sich der Cursor befindet . gruss Adam
* On Mon, 07 Jul 2003 at 12:00 +0200, Sascha Andres wrote:
mit ':!ls' kann ich das ls Kommando in vim absetzen. Man bekommt das Ergebnis, und nach Bestätigung ist man wieder im Editor. Aber: wie kann ich die Ausgabe in die Datei, welche ich gerade editiere pipen?
Ich markiere zu diesem Zweck immer vorher mit v ein Leerzeichen o.ä., dann wird der externe Befehl als Filter verwendet (man kann dann auch mehrere Zeilen markieren nud diese so sortieren). Möglicherweise gibts aber auch noch eine andere Möglichkeit, das ohne Markierung zu machen - Bitte um Info, würd mich auch interessieren :-) /apm -- GPG welcome, request public key: mailto:adalbert+key@lopez.at
Adalbert Michelic wrote:
* On Mon, 07 Jul 2003 at 12:00 +0200, Sascha Andres wrote:
mit ':!ls' kann ich das ls Kommando in vim absetzen. Man bekommt das Ergebnis, und nach Bestätigung ist man wieder im Editor. Aber: wie kann ich die Ausgabe in die Datei, welche ich gerade editiere pipen?
Ich markiere zu diesem Zweck immer vorher mit v ein Leerzeichen o.ä., dann wird der externe Befehl als Filter verwendet (man kann dann auch mehrere Zeilen markieren nud diese so sortieren). Möglicherweise gibts aber auch noch eine andere Möglichkeit, das ohne Markierung zu machen - Bitte um Info, würd mich auch interessieren :-)
:help read :r[ead] !{cmd} -- - maik
On Mon, 2003-07-07 at 12:00, Sascha Andres wrote:
mit ':!ls' kann ich das ls Kommando in vim absetzen. Man bekommt das Ergebnis, und nach Bestätigung ist man wieder im Editor. Aber: wie kann ich die Ausgabe in die Datei, welche ich gerade editiere pipen?
lass das : weg also <ESC> !lls (warum ich den ersten Buchstaben nach dem ! immer zweimal eintippen muß, weiß ich aber auch nicht... V.
* Volker Kroll schrieb am 07.Jul.2003:
On Mon, 2003-07-07 at 12:00, Sascha Andres wrote:
mit ':!ls' kann ich das ls Kommando in vim absetzen. Man bekommt das Ergebnis, und nach Bestätigung ist man wieder im Editor. Aber: wie kann ich die Ausgabe in die Datei, welche ich gerade editiere pipen?
lass das : weg
also <ESC> !lls (warum ich den ersten Buchstaben nach dem ! immer zweimal eintippen muß, weiß ich aber auch nicht...
Oh, Vorsicht! Erst einmal, mit dem <ESC> kommt man in den COMMAND-Mode, da sollte man immer sein. Bei vi ist dies der Standardmode, der Eingabemode muß man explizit mit i, I, a, A, o, O oder ählichem gelangen. Bis hier hin natürlich imho. Der ! Befehl braucht noch eine Bewegung. Allerdings kann er nur ganze Zeilen. l ist ein Buchtabe nach rechts, daher nimmt er die ganze aktuelle Zeile. Mit G wäre es bis zum Dateiende. Es ist hier also nur Zufall, hat nichts mit dem darauffolgenden Befehl zu tun. Bernd -- Was ist quoten? Quoten ist das Zitieren aus einer mail, der man antwortet. Und wie macht man es richtig? Zitate werden mit "> " gekennzeichnet. Nicht mehr als nötig zitieren. Vor den Abschnitten das Zitat, auf das man sich bezieht, mit einer Zeile Abstand oben und unten. |Zufallssignatur 12
On Mon, 2003-07-07 at 12:55, Bernd Brodesser wrote:
* Volker Kroll schrieb am 07.Jul.2003:
On Mon, 2003-07-07 at 12:00, Sascha Andres wrote:
also <ESC> !lls (warum ich den ersten Buchstaben nach dem ! immer zweimal eintippen muß, weiß ich aber auch nicht...
Oh, Vorsicht! Der ! Befehl braucht noch eine Bewegung. Allerdings kann er nur ganze Zeilen. l ist ein Buchtabe nach rechts, daher nimmt er die ganze aktuelle Zeile. Mit G wäre es bis zum Dateiende.
ah! Danke, wieder was gelernt, und das obwohl ich den ganzen Tag mit vi arbeite.... V.
* Sascha Andres schrieb am 07.Jul.2003:
mit ':!ls' kann ich das ls Kommando in vim absetzen. Man bekommt das Ergebnis, und nach Bestätigung ist man wieder im Editor. Aber: wie kann ich die Ausgabe in die Datei, welche ich gerade editiere pipen?
Wenn Du !! wird die ganze Zeile, auf der sich der Cursor befindet als Standardeingabe genommen und durch die Standardausgabe ersetzt. Du kannst auch !} sagen, und dann wird alles bis zum Abschnittsende genommen, oder mit !G bis zum Dateieinde usw. Die gleichen Bewegungsbefehle wie auch mit d, also dd für eine Zeile löschen, d} bis zum Abschnittsende usw. Allerdings gehen nur Befehle die über ganze Zeilen gehen, also nicht Wortende oder so. Es geht auch, indem Du es mit : machst und dann wie üblich ein Bereich auswählst. also etwa mit Suchmuster, absolute oder relative Zeilennummer. Etwas wie folgt: :/Muster1/,/Muster2/ ! Befehl - Hier wird alles zwischen dem Auftreten von Muster1 und Muster2 einschließlich als Standardeingabe des Befehls genommen und durch die Standardausgabe ersetzt. :12,25 ! Befehl - Hier werden die Zeilen 12 bis 25 als Standardeingabe genommen und durch die Standardausgabe ersetzt. :-3,+4 ! Befehl Hier wird alles von drei Zeilen vor dem Cursor bis zu 4 Zeilen nach dem Cursor ersetzt. :/Muster1/-3, 25 ! Befehl Hier wird alles von drei Zeilen vor dem ersten auftreten von Muster bis zu Zeile 25 einschließlich durch die Ausgabe des Befehls ersetzt. :87, $ ! Befehl von Zeile 87 bis zum Ende wird ersetzt. :. ! Befehl nur die aktuelle Zeile wird ersetzt. :., 17 ! Befehl von der aktuellen Zeile bis zu Zeile 17 wird ersetzt. :1, . ! Befehl von erster Zeile bis aktuelle Zeile wird ersetzt. :.,$ ! Befehl von aktueller Zeile bis Dateiende wird ersetzt. :% ! Befehl Die ganze Datei wird ersetzt. Das was ersetzt wird, wird als Standardeingabe genommen und durch die Standardausgabe des Befehls ersetzt. Wenn man in der unteren Zeile nach dem : !! statt ! eingibt, so wird der letzte Befehl genommen. Bernd -- Alle meine Signaturen sind rein zufällig und haben nichts mit dem Text oder dem Schreiber zu tun, dem ich antworte. Falls irgendwelche Unrichtigkeiten dabei sein sollten, so bedauere ich das. Es wäre nett, wenn Du mich benachrichtigen würdest. |Zufallssignatur 0
Hi, vielen Dank für die vielen Antworten. Hat sehr geholfen. Dank auch für die umfangreiche Erläuterung mit den Bereichen Bernd. Sascha -- sa at programmers-world dot com http://www.livingit.de Boomarks online: http://www.mobile-bookmarks.info Soon available in english Mail geschrieben: Montag, den 07. Juli 2003 um 13:43
Hi, Am 07.07.2003 12:00 schrieb Sascha Andres:
Hallo,
mit ':!ls' kann ich das ls Kommando in vim absetzen. Man bekommt das Ergebnis, und nach Bestätigung ist man wieder im Editor. Aber: wie kann ich die Ausgabe in die Datei, welche ich gerade editiere pipen?
Habe weder in Google noch in der vi Editor Pocket Reference etwas gefunden.
Ciao Sascha
vi :r!ls -Joerg
participants (7)
-
Adalbert Michelic
-
Adam Jendrosek
-
B.Brodesser@t-online.de
-
Joerg Zimmermann
-
Maik Holtkamp
-
Sascha Andres
-
Volker Kroll