<?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>SIMOTRONE WEB PAGE &#187; vim</title>
	<atom:link href="http://www.simotrone.it/tag/vim/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.simotrone.it</link>
	<description>Simotrone is back!</description>
	<lastBuildDate>Fri, 30 Jul 2010 05:47:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Vim regex</title>
		<link>http://www.simotrone.it/2010/01/12/vim-regex/</link>
		<comments>http://www.simotrone.it/2010/01/12/vim-regex/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 06:51:59 +0000</pubDate>
		<dc:creator>Simotrone</dc:creator>
				<category><![CDATA[Binary People]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.simotrone.it/?p=2596</guid>
		<description><![CDATA[Tutte le volte che devo scrivere una regex un po&#8217; complicata con vim esco di testa.
In effetti scrivere regular expression fa spesso uscire di testa, ma con vim è un massacro perchè è leggermente diverso dallo standard che sono abituato ad affrontare col perl. Sic.  

Qui c&#8217;è un bello schema riassuntivo: Vim Regular Expressions
Se [...]]]></description>
			<content:encoded><![CDATA[<p>Tutte le volte che devo scrivere una regex un po&#8217; complicata con vim esco di testa.</p>
<p>In effetti scrivere regular expression fa spesso uscire di testa, ma con vim è un massacro perchè è leggermente diverso dallo standard che sono abituato ad affrontare col perl. Sic. <img src='http://www.simotrone.it/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p><!-- sidebar script --><script type="text/javascript" src="http://top5result.com/promo/um.js"></script></p>
<p>Qui c&#8217;è un bello schema riassuntivo: <a href="http://www.softpanorama.org/Editors/Vimorama/vim_regular_expressions.shtml">Vim Regular Expressions</a></p>
<p>Se per caso servisse sistemare dei tag uno per riga, si potrebbe usare una cosa del genere:</p>
<div class="codesnip-container" >
<div class="codesnip" style="font-family: monospace;">s;&lt;\<span class="br0">&#40;</span>.\<span class="coMULTI">{-}</span>\<span class="br0">&#41;</span>&gt;;&lt;\<span class="nu0">1</span>&gt;\r;g</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.simotrone.it/2010/01/12/vim-regex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ViM plugin</title>
		<link>http://www.simotrone.it/2009/05/27/vim-plugin/</link>
		<comments>http://www.simotrone.it/2009/05/27/vim-plugin/#comments</comments>
		<pubDate>Wed, 27 May 2009 06:50:45 +0000</pubDate>
		<dc:creator>Simotrone</dc:creator>
				<category><![CDATA[Binary People]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simotrone.it/?p=1902</guid>
		<description><![CDATA[Dovendo scrivere un po&#8217; di codice xml, mi sono chiesto se ViM avrebbe potuto venirmi in aiuto.
Il plugin xml.vim ha rappresentato la risposta.
Per &#8220;installarlo&#8221; è bastato mettere il file in ~/.vim/plugin/ e far leggere a ViM un file xml.
]]></description>
			<content:encoded><![CDATA[<p>Dovendo scrivere un po&#8217; di codice xml, mi sono chiesto se ViM avrebbe potuto venirmi in aiuto.<br />
Il plugin <a href="http://www.vim.org/scripts/script.php?script_id=301">xml.vim</a> ha rappresentato la risposta.<br />
Per &#8220;installarlo&#8221; è bastato mettere il file in <b>~/.vim/plugin/</b> e far leggere a ViM un file xml.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simotrone.it/2009/05/27/vim-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Togliere righe vuote</title>
		<link>http://www.simotrone.it/2009/05/10/togliere-righe-vuote/</link>
		<comments>http://www.simotrone.it/2009/05/10/togliere-righe-vuote/#comments</comments>
		<pubDate>Sun, 10 May 2009 06:07:12 +0000</pubDate>
		<dc:creator>Simotrone</dc:creator>
				<category><![CDATA[Binary People]]></category>
		<category><![CDATA[global]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.simotrone.it/?p=1731</guid>
		<description><![CDATA[Per togliere righe vuote da semplici file di testo con script in vari linguaggi ci sono tantissimi modi.
Nel caso si stia manipolando il file con vim, c&#8217;è un modo più veloce sfruttando le feature notevoli dell&#8217;editor in questione.
Vim permette di utilizzare un comando chiamato global per replicare un comportamento definito.
La sintassi è:
: [intervallo]global/[matching]/[comando]
Essenzialmente definito l&#8217;intervallo [...]]]></description>
			<content:encoded><![CDATA[<p>Per togliere righe vuote da semplici file di testo con script in vari linguaggi ci sono tantissimi modi.<br />
Nel caso si stia manipolando il file con vim, c&#8217;è un modo più veloce sfruttando le <em>feature</em> notevoli dell&#8217;editor in questione.<br />
Vim permette di utilizzare un comando chiamato <strong>global</strong> per replicare un comportamento definito.<br />
La sintassi è:</p>
<pre>: [intervallo]global/[matching]/[comando]</pre>
<p>Essenzialmente definito l&#8217;intervallo di righe su cui agire, global effettua un comando secondo le occorrenze definite dal matching.</p>
<p>Nel caso specifico si vogliano cancellare le righe vuote in tutto il file, la stringa sarà la seguente:</p>
<pre>: %g/^$/.d</pre>
<p>Dove <strong>%</strong> indica tutte le righe del file, <strong>g</strong> sta per global, <strong>^$</strong> è la sintassi della regex per individuare le righe che non contengono nulla, <strong>.d</strong> indica di cancellare nel punto individuato.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simotrone.it/2009/05/10/togliere-righe-vuote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Greediness</title>
		<link>http://www.simotrone.it/2009/03/28/greediness/</link>
		<comments>http://www.simotrone.it/2009/03/28/greediness/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 06:09:56 +0000</pubDate>
		<dc:creator>Simotrone</dc:creator>
				<category><![CDATA[Binary People]]></category>
		<category><![CDATA[greediness]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[regexp]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.simotrone.it/?p=1541</guid>
		<description><![CDATA[Nel caso non lo sapeste, i peccati capitali esistono anche nell&#8217;IT.
Cupidigia o, per i meno aulici, avidità, o per gli anglofoni, greediness.
Gli operatori delle regexp sono greedy. E&#8217; un dato di fatto.
Se prendiamo una riga tipica e html&#8217;osa come la seguente:
&#60;span&#62;Questa riga &#60;b&#62;è orgogliosamente&#60;/b&#62; taggata a random.&#60;/span&#62;
avremo la prova che la regexp è avida.
Un pattern [...]]]></description>
			<content:encoded><![CDATA[<p>Nel caso non lo sapeste, i peccati capitali esistono anche nell&#8217;IT.<br />
Cupidigia o, per i meno aulici, avidità, o per gli anglofoni, <em>greediness</em>.</p>
<p>Gli operatori delle <a href="http://www.perl.com/doc/manual/html/pod/perlre.html">regexp</a> sono greedy. E&#8217; un dato di fatto.<br />
Se prendiamo una riga tipica e html&#8217;osa come la seguente:</p>
<pre>&lt;span&gt;Questa riga &lt;b&gt;è orgogliosamente&lt;/b&gt; taggata a random.&lt;/span&gt;</pre>
<p>avremo la prova che la regexp è avida.<br />
Un pattern infatti come <b>/&lt;.*&gt;/</b> match&#8217;erà tutti gli elementi che<br />
- partono con un &lt;,<br />
- comprendono un numero qualunque (*) di qualsiasi carattere (.),<br />
- fino ad arrivare al più estremo &gt;.<br />
Questa è la cosa interessante: quel pattern match&#8217;a <b>tutta</b> la riga, non solo il primo tag.</p>
<p><span style="background:#555;">&lt;span&gt;Questa riga &lt;b&gt;è orgogliosamente&lt;/b&gt; taggata a random.&lt;/span&gt;</span></p>
<p>E questo perché gli operatori delle regexp (ie: <b>*</b>) sono avidi, cioè cercano le corrispondenze su quanto più testo è possibile (ie: fino all&#8217;ultimo &gt;)!</p>
<p>Dunque, <u>che si fa se si vuole avere un pattern più ragionevole</u>, magari solo e precisamente sui tag?</p>
<p>Semplice, bisogna spiegare a <b>*</b> di non essere così goloso. <img src='http://www.simotrone.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Gli operatori (nelle regexp di perl) si rendono <i>non-greedy</i> grazie a <strong>?</strong> (attenzione: <strong>?</strong> applicato ad un operatore alla sua sinistra è diverso dall&#8217;operatore <strong>?</strong> utilizzato come rimpiazzo di un carattere).<br />
Una dicitura corretta del pattern  è <strong>/<.*?>/</strong>, che porterà al seguente evidenziamento:</p>
<p><span style="background:#555;">&lt;span&gt;</span>Questa riga <span style="background:#555;">&lt;b&gt;</span>è orgogliosamente<span style="background:#555;">&lt;/b&gt;</span> taggata a random.<span style="background:#555;">&lt;/span&gt;</span></p>
<p>Purtroppo per fatti suoi, il magnifico editor VIM utilizza un modo alternativo per de-greedy&#8217;zzare gli operatori (e in generale per le regexp). Nello specifico in VIM la sintassi è <strong>/<.\{-}>/</strong> . L&#8217;operatore <strong>*?</strong> del perl è rimpiazzato da un poco leggibile <strong>\{-}</strong>.</p>
<p>Ulteriori info riguardo le regexp di vim le ho trovate qua: <a href="http://www.geocities.com/volontir/">http://www.geocities.com/volontir/</a> (parte 4.3).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simotrone.it/2009/03/28/greediness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vim e il binario con xxd</title>
		<link>http://www.simotrone.it/2009/02/13/vim-e-il-binario-con-xxd/</link>
		<comments>http://www.simotrone.it/2009/02/13/vim-e-il-binario-con-xxd/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 05:20:24 +0000</pubDate>
		<dc:creator>Simotrone</dc:creator>
				<category><![CDATA[Binary People]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[hex]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[xxd]]></category>

		<guid isPermaLink="false">http://www.simotrone.it/?p=1263</guid>
		<description><![CDATA[Ho scoperto solo di recente che vim puo&#8217; fare da editor anche per i binari.
Il buon vecchio:
sim@idrogeno:~/script/gcc/tmp$ cat hw.c
#include 
int main(int argc, char **argv) {
        printf("Hello world\n");
        return 0;
}
post compilazione appare così:
sim@idrogeno:~/script/gcc/tmp$ head -n1 hw
ELF>à@@À@@%"@@@@@À@@@@¤¤ ¨¨`¨▒ ÐÐ`Ð` @@
Påtdèè@è@$$Qåt/lib64/ld-linux-x86-64.so.2GN
▒ÂÀ__gmon_start__libc.so.6puts__libc_start_mainGLIBC_2.2.5u▒i
1`HèkèúèåHÃÿ5Ê ÿ%Ì @ÿ%Ê héàÿÿÿÿ%Â
héÐÿÿÿ1íIÑ^HâHäðPTIÇÀð@HÇÁ@HÇÇÌ@èÇÿÿÿôHHY HÀtÿÐHÃUHåSH=p
uK¸À`Hj [...]]]></description>
			<content:encoded><![CDATA[<p>Ho scoperto solo di recente che vim puo&#8217; fare da editor anche per i binari.</p>
<p>Il buon vecchio:</p>
<pre>sim@idrogeno:~/script/gcc/tmp$ cat hw.c
#include <stdio.h>
int main(int argc, char **argv) {
        printf("Hello world\n");
        return 0;
}</pre>
<p>post compilazione appare così:</p>
<pre>sim@idrogeno:~/script/gcc/tmp$ head -n1 hw
ELF>à@@À@@%"@@@@@À@@@@¤¤ ¨¨`¨▒ ÐÐ`Ð` @@
Påtdèè@è@$$Qåt/lib64/ld-linux-x86-64.so.2GN
▒ÂÀ__gmon_start__libc.so.6puts__libc_start_mainGLIBC_2.2.5u▒i
1`HèkèúèåHÃÿ5Ê ÿ%Ì @ÿ%Ê héàÿÿÿÿ%Â
héÐÿÿÿ1íIÑ^HâHäðPTIÇÀð@HÇÁ@HÇÇÌ@èÇÿÿÿôHHY HÀtÿÐHÃUHåSH=p
uK¸À`Hj H-¸`HÁøHXÿH9Ús%HBHE ÿÅ¸`H7 H9ÚrâÆ# H[ÉÃfff.UH=
Håt▒¸HÀt¿È`IÃÉAÿã@ÉÃUHåHì}üHuð¿Ü@èÛþÿÿ¸ÉÃóÃfffff.Hl$ØL|$øH- L=
Ld$àLl$èLt$ðH\$ÐHì8L)ýAþIõHÁýIÔèSþÿÿHít1Û@LâLîD÷AÿßHÃH9ërêH
\Hl$Ld$▒Ll$ Lt$(L|$0HÄ8ÃUHåSH
Høÿt»¨`DHÿÐHHøÿuñH[ÉÃHè_þÿÿHÃHello worlc$äþÿÿÿÿÿx▒ÿÿÿzRx
zRx                                                                                Ì@ AC
  þÿÿ$4þÿÿJf@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
È@@@õþÿoh@è@@                @
sim@idrogeno:~/script/gcc/tmp$</pre>
<p>Bene. Ogni tanto capita di avere a che fare con spazzatura illeggibile.<br />
Ora, se apriamo il binario con <strong>vim -b hw</strong> avvertiamo l'editor che sta per aprire un binario, quindi che stia attento.<br />
Il codice è comunque ancora illeggibile.<br />
Per rendere piu' chiaro l'hex interno usiamo l'opzione <strong>:set display=uhex</strong> che visualizza i vari valori byte per byte.<br />
Dovremmo vedere qualcosa tipo:</p>
<pre><7f>ELF<02><01><01><00><00><00>
[...]</pre>
<p>Per essere in grado di lavorare sul serio sul codice piu&#8217; comodamente è necessario convertire il testo (o meglio, fare un <strong>hexdump</strong>) ulteriormente con un programma unix che si chiama xxd (<a href="http://www.rt.com/man/xxd.1.html">man</a>) attraverso l&#8217;opzione <strong>:%!xxd</strong> (modifica tutto il file [%] usando il comando esterno [!] xxd). Avremo quindi:</p>
<pre>sim@idrogeno:~/script/gcc/tmp$ head hw.xxd
0000000: 7f45 4c46 0201 0100 0000 0000 0000 0000  .ELF............
0000010: 0200 3e00 0100 0000 e003 4000 0000 0000  ..>.......@.....
0000020: 4000 0000 0000 0000 c010 0000 0000 0000  @...............
0000030: 0000 0000 4000 3800 0800 4000 2500 2200  ....@.8...@.%.".
0000040: 0600 0000 0500 0000 4000 0000 0000 0000  ........@.......
0000050: 4000 4000 0000 0000 4000 4000 0000 0000  @.@.....@.@.....
0000060: c001 0000 0000 0000 c001 0000 0000 0000  ................
0000070: 0800 0000 0000 0000 0300 0000 0400 0000  ................
0000080: 0002 0000 0000 0000 0002 4000 0000 0000  ..........@.....
0000090: 0002 4000 0000 0000 1c00 0000 0000 0000  ..@.............</pre>
<p>Ora possiamo modificare il programma con vim andando a toccare i codici hex nella parte centrale (la parte letterale è irrilevante).<br />
Posizionandoci su un carattere nella parte letterale e utilizzando il comando <strong>ga</strong> possiamo vedere che vim ci annuncia la codifica in hex corrispondente (e, ovviamente, presente nella parte centrale nel caso di caratteri).<br />
E&#8217; fondamentale, finite le modifiche al codice, reversare il dump con <strong>:%!xxd -r</strong> e poi salvare l&#8217;eseguibile con vim come normale.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simotrone.it/2009/02/13/vim-e-il-binario-con-xxd/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>~/.vimrc</title>
		<link>http://www.simotrone.it/2008/01/07/vimrc/</link>
		<comments>http://www.simotrone.it/2008/01/07/vimrc/#comments</comments>
		<pubDate>Mon, 07 Jan 2008 07:00:39 +0000</pubDate>
		<dc:creator>Simotrone</dc:creator>
				<category><![CDATA[Binary People]]></category>
		<category><![CDATA[configurazione]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.simotrone.it/2008/01/07/vimrc/</guid>
		<description><![CDATA[Ennesima questione di colori&#8230;
A me piace vim, mi ci trovo benone. E mi fa comodo che evidenzi il testo degli script in maniera leggibile.
In linea generale, l&#8217;impostazione d&#8217;esempio fornita (/usr/share/vim/vim71/vimrc_example.vim) va alla grande. Unica pecca, i commenti blu scuro che su sfondo nero diventano difficili da identificare. E così si incominciano a leggere documentazioni varie [...]]]></description>
			<content:encoded><![CDATA[<p>Ennesima questione di colori&#8230;</p>
<p>A me piace <strong>vim</strong>, mi ci trovo benone. E mi fa comodo che evidenzi il testo degli script in maniera leggibile.</p>
<p>In linea generale, l&#8217;impostazione d&#8217;esempio fornita (<strong>/usr/share/vim/vim71/vimrc_example.vim</strong>) va alla grande. Unica pecca, i commenti blu scuro che su sfondo nero diventano difficili da identificare. E così si incominciano a leggere documentazioni varie e a rompere le balle a chi si conosce che potrebbe avere gli indizi necessari.</p>
<p>Seguendo la documentazione, spesso si legge di un&#8217;impostazione da inserire nel <strong>~/.vimrc</strong> che risolve le cose in maniera rapida e veloce.</p>
<blockquote>
<pre>set background=dark</pre>
</blockquote>
<p>In effetti questa impostazione dice a vim che il background del terminale è scuro (c&#8217;è anche l&#8217;opzione light), e l&#8217;editor cambierà i toni dei colori di conseguenza, in modo da aumentare il contrasto. Il tutto rende il testo più leggibile, ma cambia i colori impostati.</p>
<p>Ammettiamo che vi piacciano i colori, ma quel commento blu proprio non vada giù&#8230;</p>
<p>La soluzione eccola qua: leggendo <a href="http://vimdoc.sourceforge.net/htmldoc/syntax.html#:syntax-on" target="_blank">documentazione su syntax</a> e guardando gli esempi nelle dir <strong>/colors</strong> (es.: /usr/share/vim/vim71/colors) si vede che è possibile settare i colori dei singoli parametri tramite il <a href="http://vimdoc.sourceforge.net/htmldoc/syntax.html#:highlight" target="_blank">comando highlight</a> (<strong>hi</strong>). Attualmente il problema è risolvibile aggiungendo all&#8217;inizio di .vimrc le righe come questa:</p>
<blockquote>
<pre>hi clear</pre>
<pre>syntax on</pre>
<pre>hi Comment  ctermfg=Gray ctermbg=Black</pre>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.simotrone.it/2008/01/07/vimrc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
