<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>zInformatik &#187; exerne Programme</title>
	<atom:link href="http://zinformatik.de/tag/exerne-programme/feed/" rel="self" type="application/rss+xml" />
	<link>http://zinformatik.de</link>
	<description>Computer, Informatik und Mikrocontroller Blog</description>
	<lastBuildDate>Sat, 22 Oct 2011 09:51:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Filter unter vim &#8211; externe Programme aus vim heraus ausführen</title>
		<link>http://zinformatik.de/tipps-tricks/vim-tipps/filter-unter-vim-externe-programme-aus-vim-heraus-ausfuhren/</link>
		<comments>http://zinformatik.de/tipps-tricks/vim-tipps/filter-unter-vim-externe-programme-aus-vim-heraus-ausfuhren/#comments</comments>
		<pubDate>Wed, 13 May 2009 18:24:14 +0000</pubDate>
		<dc:creator>zimon</dc:creator>
				<category><![CDATA[Ubuntuusers-Planet]]></category>
		<category><![CDATA[vim Tipps]]></category>
		<category><![CDATA[exerne Programme]]></category>
		<category><![CDATA[Filter]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://zinformatik.de/?p=1208</guid>
		<description><![CDATA[<p>vim bietet mit dem Filterkommando <em>!</em> die Möglichkeit externe Programme zu starten. Damit kann man seine Scripte direkt aus vim heraus testen oder mit Konsolenkommandos den Text manipulieren.</p>
<p><strong>Externe Programme Ausfüren</strong><br />
Um das gerade geöffnete Script (was natürlich Ausführungsrechte besitzen muss) zu starten gibt man also folgenden Befehl ein, den man mit ENTER bestätigt:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #000000;">:!./%</span></pre></div></div>

<p>Die Variable <em>%</em> beinhaltet&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>vim bietet mit dem Filterkommando <em>!</em> die Möglichkeit externe Programme zu starten. Damit kann man seine Scripte direkt aus vim heraus testen oder mit Konsolenkommandos den Text manipulieren.</p>
<p><strong>Externe Programme Ausfüren</strong><br />
Um das gerade geöffnete Script (was natürlich Ausführungsrechte besitzen muss) zu starten gibt man also folgenden Befehl ein, den man mit ENTER bestätigt:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #000000;">:!./%</span></pre></div></div>

<p>Die Variable <em>%</em> beinhaltet den aktuellen Dateinamen. Alternativ kann man natürlich auch andere Skripte starten oder den Dateinamen ausschreiben:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #000000;">:!./</span>script<span style="color: #000000;">.</span>pl</pre></div></div>

<p>startet das Script <em>script.pl</em> im aktuellen Ordner.<br />
Bei so gestarteten Programmen wird die Ausgabe des Programms angezeigt. Danach kommt man mit ENTER wieder zurück zu seinem Text. Man kann genausogut ganz gebräuchliche Kommandos wie <em>ps</em>, <em>df</em>, <em>free</em> oder <em>ls</em> ausführen und sich nur die Ausgabe ansehen, wenn man grad nicht die Konsole wechseln will oder kann.<br />
Um die Ausgabe eines Kommandos in seinen Text zu übernehmen kann man das Kommando <em>:r</em> (für read) mit dem Filter kombinieren:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #000000;">:</span>r <span style="color: #000000;">!</span>free</pre></div></div>

<p>fügt die Ausgabe von <em>free</em> in die Datei nach der aktuellen Zeile ein. Ein Quantifizierer kann dabei optional die Zeile angeben, hinter welche die Ausgabe eingefügt werden soll:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #000000;">:</span>4r <span style="color: #000000;">!</span>df <span style="color: #000000;">-</span>h</pre></div></div>

<p>fügt die Ausgabe von <em>df -h</em> hinter die Zeile 4 ein.<br />
Nebenbei bemerkt kann man mit dem read-Kommando auch komplette Dateien einfügen:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #000000;">:</span>r <span style="color: #000000;">~/.</span>vimrc</pre></div></div>

<p>fügt die Datei ~/.vimrc hinter die aktuelle Zeile in die Datei ein.</p>
<p><strong>Text mit externen Programmen manipulieren</strong><br />
Um einen Text mit einem externen Kommando zu bearbeiten kann man z.B. im visuellen Modus einen Teil des Textes markieren und dann</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #000000;">:!</span><span style="color: #25BB4D;">sort</span></pre></div></div>

<p>eingeben um die Zeilen alphabetisch zu sortieren.</p>
<p>Eine andere Möglichkeit ist ein <a title="" href="" target="_self">Bewegungskommando</a> mitzugeben, wodurch das externe Programm auf den Text von der aktuellen Cursorposition bis zum Ende der Bewegung ausgeführt wird. Dabei entfällt der Doppelpunkt:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #000000;">!</span><span style="color: #000000;">&#125;</span><span style="color: #25BB4D;">sort</span></pre></div></div>

<p>sortiert die Zeilen von der aktuellen Cursorposition bis zum Ende des Abschnitts.</p>
<p>Um den gesammten Text mit einem externen Programm zu bearbeiten gibt es die Bereichsangabe <em>%</em>. Das folgende Beispiel formatiert das komplette gerade geöffnete Perlscript mit perltidy:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #000000;">:%!</span>perltidy</pre></div></div>

<p>Ansonsten können Bereiche auch durch ihre Zeilennummern angegeben werden. Im nächsten Beispiel werden die Zeilen 5 bis 10 sortiert:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #000000;">:</span><span style="color: #000000; font-weight:bold;">5</span>,<span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">!</span><span style="color: #25BB4D;">sort</span></pre></div></div>

<p>Auch die <a href="http://zinformatik.de/tipps-tricks/vim-tipps/praktische-vim-mappings/#map_aspell" title="praktische vim Mappings - Rechtschreibprüfung" target="_self" class="liinternal">Rechtschreibprüfung mit aspell</a> nutzt Filter.<br />
Praktisch kann auch die Kombination mit <a href="http://zinformatik.de/linux/keine-angst-vor-awk-ein-schnelleinstieg/" title="Keine Angst vor awk - ein Schnelleinstieg" target="self" class="liinternal">awk</a> sein.</p>
<p>Weitere Informationen über Filter gibt es in der Hilfe, die man mit <em>:h filter</em> aufrufen kann.</p>
]]></content:encoded>
			<wfw:commentRss>http://zinformatik.de/tipps-tricks/vim-tipps/filter-unter-vim-externe-programme-aus-vim-heraus-ausfuhren/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

