<?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>Code42 &#187; Vim</title>
	<atom:link href="http://code42.pl/kategoria/vim/feed/" rel="self" type="application/rss+xml" />
	<link>http://code42.pl</link>
	<description>Wielkie Pytanie o Życie, Kod i całą resztę</description>
	<lastBuildDate>Wed, 25 Jan 2012 14:16:01 +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>Vim: łatwe zwiększanie/zmnieszanie liczb i liter</title>
		<link>http://code42.pl/2011/04/17/vim-latwe-zwiekszaniezmnieszanie-liczb-i-liter/</link>
		<comments>http://code42.pl/2011/04/17/vim-latwe-zwiekszaniezmnieszanie-liczb-i-liter/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 10:01:40 +0000</pubDate>
		<dc:creator>zergu</dc:creator>
				<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://code42.pl/?p=909</guid>
		<description><![CDATA[Vim pozwala na łatwe zwiększanie lub zmniejszanie liczb, które mamy w trybie edycji pod kursorem poprzez skróty CTRL-A (zwiększanie) i CTRL-X (zmniejszanie). Kiedy i jak to działa? Vim może operować na 4 zestawach znaków: liczby dziesiętne, liczby ósemkowe, liczby szesnastkowe, litery. Liczby ósemkowe Vim rozpoznaje po zerach początkowych. Przykładowo: 01 jest zwiększane do 02, 007 [...]


Podobne wpisy:<ol><li><a href='http://code42.pl/2010/01/13/vim-dopelnianie-dowolnego-tekstu-np-slow-kluczowych-php/' rel='bookmark' title='Vim: dopełnianie dowolnego tekstu (np. słów kluczowych PHP)'>Vim: dopełnianie dowolnego tekstu (np. słów kluczowych PHP)</a></li>
<li><a href='http://code42.pl/2009/01/26/vim-edycja-plikow-php/' rel='bookmark' title='Krótko: Vim i powolna edycja plików PHP'>Krótko: Vim i powolna edycja plików PHP</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://code42.pl/wp-content/uploads/plus-minus1.png" alt="" title="plus-minus" width="150" height="74" class="alignright size-full wp-image-913" /></p>
<p>Vim pozwala na łatwe zwiększanie lub zmniejszanie liczb, które mamy w trybie edycji pod kursorem poprzez skróty <code>CTRL-A</code> (zwiększanie) i <code>CTRL-X</code> (zmniejszanie).</p>
<h2>Kiedy i jak to działa?</h2>
<p>Vim może operować na 4 zestawach znaków:</p>
<ul>
<li>liczby dziesiętne,</li>
<li>liczby ósemkowe,</li>
<li>liczby szesnastkowe,</li>
<li>litery.</li>
</ul>
<p>Liczby ósemkowe Vim rozpoznaje po zerach początkowych. Przykładowo: <code>01</code> jest zwiększane do <code>02</code>, <code>007</code> do <code>010</code>. Liczy szesnastkowe Vim rozpozna, jeśli zaczynają się od <code>0x</code> lub <code>0X</code> — tym samym zwiększenie wygląda przykładowo tak: <code>0xff</code> → <code>0x100</code>. Pozostałe liczby traktowane są jako dziesiętne, a operacje na nich są dość intuicyjne.</p>
<p>Ponadto Vim może zwiększać pojedyncze litery: <code>'a'</code> zostanie zwiększone do <code>'b'</code>, jednak próbując zwiększyć <code>'aa'</code> zmieni się tylko litera pod kursorem, a nie całe słowo. </p>
<h2>Przejmujemy kontrolę</h2>
<p>Za pomocą opcji <code>:set nrformats</code> (skrót <code>nf</code>) możemy wyłączyć lub włączyć rozpoznawanie liter, liczb ósemkowych i szesnastkowych. Dostępne opcje to:</p>
<ul>
<li>alpha,</li>
<li>octal,</li>
<li>hex.</li>
</ul>
<p>Liczby dziesiętne zawsze są rozpoznawane.</p>
<p>Moje ustawienie w <code>.vimrc</code> to:<br />
<code>set nrformats=alpha,hex</code><br />
Różni się ono od domyślnego przede wszystkim wyłączeniem zwiększania ósemkowego, gdyż dużo częściej operuję na słowach typu <code>006</code>, <code>007</code>, <code>008</code> niż liczbach ósemkowych. Inaczej mówiąc zmieniam z <code>007</code> na <code>008</code>, a nie na <code>010</code>.</p>
<h2>Uwagi</h2>
<ul>
<li>Skróty <code>CTRL-A</code>, <code>CTRL-X</code> mogą operować na ujemnych liczbach dziesiętnych.</li>
<li>Możliwe jest wielokrotne zwiększenie, przez podanie liczby wykonań zaraz przez skrótem. Przykładowo mając pod kursorem cyfrę <code>0x01</code> i wklepując <code>17&lt;CTRL-A&gt;</code> otrzymamy <code>0x12</code>.</li>
</ul>


<p>Podobne wpisy:<ol><li><a href='http://code42.pl/2010/01/13/vim-dopelnianie-dowolnego-tekstu-np-slow-kluczowych-php/' rel='bookmark' title='Vim: dopełnianie dowolnego tekstu (np. słów kluczowych PHP)'>Vim: dopełnianie dowolnego tekstu (np. słów kluczowych PHP)</a></li>
<li><a href='http://code42.pl/2009/01/26/vim-edycja-plikow-php/' rel='bookmark' title='Krótko: Vim i powolna edycja plików PHP'>Krótko: Vim i powolna edycja plików PHP</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://code42.pl/2011/04/17/vim-latwe-zwiekszaniezmnieszanie-liczb-i-liter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vim: dopełnianie dowolnego tekstu (np. słów kluczowych PHP)</title>
		<link>http://code42.pl/2010/01/13/vim-dopelnianie-dowolnego-tekstu-np-slow-kluczowych-php/</link>
		<comments>http://code42.pl/2010/01/13/vim-dopelnianie-dowolnego-tekstu-np-slow-kluczowych-php/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 15:35:04 +0000</pubDate>
		<dc:creator>zergu</dc:creator>
				<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://code42.pl/?p=439</guid>
		<description><![CDATA[Vim posiada dwa bardzo przydatne skróty klawiszowe: ctrl-n oraz ctrl-p. Obydwa służą do dopełniania słów, pierwszy zaczyna szukać za kursorem, drugi przed nim. Domyślnie, Vim korzysta ze słów z bieżącego pliku oraz z wszystkich otwartych buforów. Można jednak tę funkcjonalność rozszerzyć dodając własny słownik. Sam słownik, to zwykły plik tekstowy, w którym słowa są oddzielone białymi znakami. Posiada [...]


Podobne wpisy:<ol><li><a href='http://code42.pl/2009/03/26/vim-znajdowanie-plikow-w-podkatalogach/' rel='bookmark' title='Vim: Znajdowanie plików w podkatalogach'>Vim: Znajdowanie plików w podkatalogach</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Vim posiada dwa bardzo przydatne skróty klawiszowe: <kbd>ctrl-n</kbd> oraz <kbd>ctrl-p</kbd>. Obydwa służą do dopełniania słów, pierwszy zaczyna szukać za kursorem, drugi przed nim. Domyślnie, Vim korzysta ze słów z bieżącego pliku oraz z wszystkich otwartych buforów.</p>
<p><a href="http://code42.pl/wp-content/uploads/vim-dopelnianie.png"><img src="http://code42.pl/wp-content/uploads/vim-dopelnianie.png" alt="" title="vim-dopelnianie" width="389" height="164" class="aligncenter size-full wp-image-449" /></a></p>
<p>Można jednak tę funkcjonalność rozszerzyć dodając własny słownik. Sam słownik, to zwykły plik tekstowy, w którym słowa są oddzielone białymi znakami. Posiada on jednak dość dziwne ograniczenie — czyta tylko 511 znaków w jednej linii, dlatego nie wolno przesadzać z ich długością.</p>
<p>Słownik może być np. takiej postaci:</p>
<pre>dzięciowodoronaftalen
dziewięciodoronaftalen
antypolonazsiderywizacjaimigtenwadsioptaweertyytna
fluorochlorowęglanowodoroazotanocydy
konstantynopolitańczykowianeczka
cześć
</pre>
<p>Aby skorzystać ze słownika należy dodać 2 linijki (właściwie może być jedna) do <code>~/.vimrc</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #804040;">set</span> <span style="color: #668080;">dictionary</span><span style="color: #000000;">+</span>=<span style="color: #000000;">~/</span>sciezka<span style="color: #000000;">/</span>do<span style="color: #000000;">/</span>slownika
<span style="color: #804040;">set</span> <span style="color: #25BB4D;">complete</span><span style="color: #000000;">+</span>=k</pre></div></div>

<p>Pierwsza komenda ładuje słownik, druga sprawia, że możemy go przeszukiwać za pomocą wcześniej wspomnianych skrótów (domyślnie trzeba byłoby wciskać <kbd>ctrl-x-k</kbd>). Słowników może być wiele.</p>
<p>Słownik możemy sobie utworzyć na bazie plików Vima ze składnią do języków programowania (pod debianopodobnymi w katalogu <code>/usr/share/vim/vim72/syntax/</code>). Należy tutaj jednak pamiętać o ograniczeniu długości linii. Dlatego dla samego PHP udostępniamy <a href='http://code42.pl/wp-content/uploads/php-keywords.txt'>gotowy słownik słów kluczowych</a>.</p>
<p>To rozwiązanie jest alternatywą dla tych, którym <em>Omni Completion</em> nie działa lub się nie podoba.</p>


<p>Podobne wpisy:<ol><li><a href='http://code42.pl/2009/03/26/vim-znajdowanie-plikow-w-podkatalogach/' rel='bookmark' title='Vim: Znajdowanie plików w podkatalogach'>Vim: Znajdowanie plików w podkatalogach</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://code42.pl/2010/01/13/vim-dopelnianie-dowolnego-tekstu-np-slow-kluczowych-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zen Coding &#8211; snippety do kosza</title>
		<link>http://code42.pl/2009/11/23/zen-coding-snippety-do-kosza/</link>
		<comments>http://code42.pl/2009/11/23/zen-coding-snippety-do-kosza/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 08:15:57 +0000</pubDate>
		<dc:creator>Piotrek Reinmar Koszuliński</dc:creator>
				<category><![CDATA[HTML + CSS]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[snippets]]></category>
		<category><![CDATA[zen]]></category>

		<guid isPermaLink="false">http://code42.pl/?p=430</guid>
		<description><![CDATA[Snippety do htmla? Nieeee. Zobaczcie Zen Coding. W skrócie działa to tak. Wpisuję w edytorze CSSową składnią: div#content&#38;gt;h1+p Wciskam jakąś kombinację klawiszy i dostaję: &#60;div id=&#34;content&#34;&#62; &#60;h1&#62;&#60;/h1&#62; &#60;p&#62;&#60;/p&#62; &#60;/div&#62; Sprytne, nie? :) Ale to jeszcze mało. Spróbujcie tego: div#top&#62;h1&#62;a&#91;title=Do strony głównej&#93;&#123;Moja strona&#125;&#60;ul#menu&#62;li.pos$*3&#62;a &#60;div id=&#34;top&#34;&#62; &#60;h1&#62; &#60;a href=&#34;&#34; title=&#34;Do strony głównej&#34;&#62;Moja strona&#60;/a&#62; &#60;/h1&#62; &#160; &#60;ul id=&#34;menu&#34;&#62; [...]


Podobne wpisy:<ol><li><a href='http://code42.pl/2010/01/29/dlaczego-frameworki-css-ssa/' rel='bookmark' title='Dlaczego frameworki CSS ssą?'>Dlaczego frameworki CSS ssą?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Snippety do htmla? Nieeee. Zobaczcie <a href="http://www.smashingmagazine.com/2009/11/21/zen-coding-a-new-way-to-write-html-code/">Zen Coding</a>. W skrócie działa to tak. Wpisuję w edytorze CSSową składnią:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">div<span style="color: #cc00cc;">#content</span>&amp;gt<span style="color: #00AA00;">;</span>h1<span style="color: #00AA00;">+</span>p</pre></div></div>

<p>Wciskam jakąś kombinację klawiszy i dostaję:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;content&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h1<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/h1<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Sprytne, nie? :) Ale to jeszcze mało. Spróbujcie tego:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">div<span style="color: #cc00cc;">#top</span><span style="color: #00AA00;">&gt;</span>h1<span style="color: #00AA00;">&gt;</span>a<span style="color: #00AA00;">&#91;</span>title<span style="color: #00AA00;">=</span>Do strony głównej<span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&#123;</span>Moja strona<span style="color: #00AA00;">&#125;</span>&lt;ul<span style="color: #cc00cc;">#menu</span><span style="color: #00AA00;">&gt;</span>li.pos$<span style="color: #00AA00;">*</span><span style="color: #cc66cc;">3</span><span style="color: #00AA00;">&gt;</span>a</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;top&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h1<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;a</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Do strony głównej&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Moja strona<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h1<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ul</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;menu&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;li</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;pos1&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;a</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/a<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;li</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;pos2&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;a</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/a<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;li</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;pos3&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;a</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/a<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ul<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Chyba nie muszę mówić jak bardzo taka pomoc przyspiesza pracę. Napisanie z palca kodu z drugiego przykładu zajęłoby mi przypuszczalnie więcej niż 2 minuty. Gdybym użył snippetów (do których przy HTMLu nie mogę się przyzwyczaić) może skróciłbym ten czas dwukrotnie. Zaś używając wynalazku Zen Coding całość naklepałem w 20s (i to nie mając wprawy). Tak więc gorąco polecam.</p>
<p>Gdyby ktoś szukał wtyczki do VIMa, to powstał <a href="http://github.com/rstacruz/sparkup" title="VIM zen coding plugin">plugin</a>, którego twórca zainspirował się Zen Codingiem.</p>
<p>Wpis ten opublikowałem też na <a href="http://reinmar.jogger.pl" title="Zapiski na koszulce - html, css, usability i nowe technologie">swoim prywatnym blogu</a>.</p>


<p>Podobne wpisy:<ol><li><a href='http://code42.pl/2010/01/29/dlaczego-frameworki-css-ssa/' rel='bookmark' title='Dlaczego frameworki CSS ssą?'>Dlaczego frameworki CSS ssą?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://code42.pl/2009/11/23/zen-coding-snippety-do-kosza/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Vim: Znajdowanie plików w podkatalogach</title>
		<link>http://code42.pl/2009/03/26/vim-znajdowanie-plikow-w-podkatalogach/</link>
		<comments>http://code42.pl/2009/03/26/vim-znajdowanie-plikow-w-podkatalogach/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 13:43:12 +0000</pubDate>
		<dc:creator>zergu</dc:creator>
				<category><![CDATA[Symfony]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://code42.pl/?p=289</guid>
		<description><![CDATA[Jak wiadomo, Vim nie jest IDE. I w sumie dobrze. Jednak jest kilka funkcjonalności typowych dla IDE, które by się w nim przydały. Jedną z nich jest łatwe otwieranie plików w projekcie. Jako, że nie ma nic takiego wbudowanego, trzeba sobie poradzić samemu. Jak mogło by takie wyszukiwanie i otwieranie plików działać? Otóż, w naszym przykładzie, po naciśnięciu [...]


Podobne wpisy:<ol><li><a href='http://code42.pl/2009/04/21/uprawnienia-plikow-w-repo-svn/' rel='bookmark' title='Uprawnienia plików w repo SVN'>Uprawnienia plików w repo SVN</a></li>
<li><a href='http://code42.pl/2009/01/26/vim-edycja-plikow-php/' rel='bookmark' title='Krótko: Vim i powolna edycja plików PHP'>Krótko: Vim i powolna edycja plików PHP</a></li>
<li><a href='http://code42.pl/2010/12/24/ignorowanie-plikow-w-svn/' rel='bookmark' title='Ignorowanie plików w SVN'>Ignorowanie plików w SVN</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://code42.pl/wp-content/uploads/lego_search-536x230.jpg" alt="" title="lego_search" width="536" height="230" class="aligncenter size-medium wp-image-705" /></p>
<p>Jak wiadomo, Vim nie jest <abbr title='Integrated development environment'>IDE</abbr>. I w sumie dobrze. Jednak jest kilka funkcjonalności typowych dla IDE, które by się w nim przydały. Jedną z nich jest łatwe otwieranie plików w projekcie. Jako, że nie ma nic takiego wbudowanego, trzeba sobie poradzić samemu.</p>
<p>Jak mogło by takie wyszukiwanie i otwieranie plików działać? Otóż, w naszym przykładzie, po naciśnięciu <kbd>ctrl+f</kbd> i wpisaniu interesującej nas nazwy pliku (np. <em>BasePlace</em>) otrzymujemy taki wynik:</p>
<p><a href="http://code42.pl/wp-content/uploads/2009/03/vim-find.png"><img src="http://code42.pl/wp-content/uploads/2009/03/vim-find-300x245.png" alt="vim-find" title="vim-find" width="300" height="245" class="aligncenter size-medium wp-image-292" /></a></p>
<p>Sposób na uruchomienie tego mechanizmu jest przedstawiony na stronie <a href='http://vim.wikia.com/wiki/Find_files_in_subdirectories'>http://vim.wikia.com/wiki/Find_files_in_subdirectories</a>. Jednakże, jest on dość chaotyczny, a efekt końcowy ma pewne wady. Dlatego przedstawiam sprawę po mojemu.</p>
<p>Cały kod podany poniżej trzeba wstawić do własnego <code>.vimrc</code>. Pierwsza część to funkcja do znajdowania, w niezmienionej postaci:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #adadad; font-style: italic;">&quot; Find file in current directory and edit it.</span>
<span style="color: #804040;">function</span><span style="color: #000000;">!</span> Find<span style="color: #000000;">&#40;</span>name<span style="color: #000000;">&#41;</span>
  <span style="color: #804040;">let</span> l<span style="color: #000000;">:</span><span style="color: #668080;">list</span>=<span style="color: #25BB4D;">system</span><span style="color: #000000;">&#40;</span><span style="color: #C5A22D;">&quot;find . -name '&quot;</span><span style="color: #000000;">.</span>a<span style="color: #000000;">:</span>name<span style="color: #000000;">.</span><span style="color: #C5A22D;">&quot;' | perl -ne 'print <span style="">\&quot;</span>$.<span style="">\\</span>t$_<span style="">\&quot;</span>'&quot;</span><span style="color: #000000;">&#41;</span>
  <span style="color: #804040;">let</span> l<span style="color: #000000;">:</span>num=<span style="color: #25BB4D;">strlen</span><span style="color: #000000;">&#40;</span><span style="color: #25BB4D;">substitute</span><span style="color: #000000;">&#40;</span>l<span style="color: #000000;">:</span><span style="color: #668080;">list</span>, <span style="color: #C5A22D;">&quot;[^<span style="">\n</span>]&quot;</span>, <span style="color: #C5A22D;">&quot;&quot;</span>, <span style="color: #C5A22D;">&quot;g&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
  <span style="color: #804040;">if</span> l<span style="color: #000000;">:</span>num <span style="color: #000000;">&lt;</span> <span style="color: #000000; font-weight:bold;">1</span>
    <span style="color: #804040;">echo</span> <span style="color: #C5A22D;">&quot;'&quot;</span><span style="color: #000000;">.</span>a<span style="color: #000000;">:</span>name<span style="color: #000000;">.</span><span style="color: #C5A22D;">&quot;' not found&quot;</span>
    <span style="color: #804040;">return</span>
  <span style="color: #804040;">endif</span>
  <span style="color: #804040;">if</span> l<span style="color: #000000;">:</span>num <span style="color: #000000;">!</span>= <span style="color: #000000; font-weight:bold;">1</span>
    <span style="color: #804040;">echo</span> l<span style="color: #000000;">:</span><span style="color: #668080;">list</span>
    <span style="color: #804040;">let</span> l<span style="color: #000000;">:</span><span style="color: #25BB4D;">input</span>=<span style="color: #25BB4D;">input</span><span style="color: #000000;">&#40;</span><span style="color: #C5A22D;">&quot;Which ? (CR=nothing)<span style="">\n</span>&quot;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #804040;">if</span> <span style="color: #25BB4D;">strlen</span><span style="color: #000000;">&#40;</span>l<span style="color: #000000;">:</span><span style="color: #25BB4D;">input</span><span style="color: #000000;">&#41;</span>==<span style="color: #000000; font-weight:bold;">0</span>
      <span style="color: #804040;">return</span>
    <span style="color: #804040;">endif</span>
    <span style="color: #804040;">if</span> <span style="color: #25BB4D;">strlen</span><span style="color: #000000;">&#40;</span><span style="color: #25BB4D;">substitute</span><span style="color: #000000;">&#40;</span>l<span style="color: #000000;">:</span><span style="color: #25BB4D;">input</span>, <span style="color: #C5A22D;">&quot;[0-9]&quot;</span>, <span style="color: #C5A22D;">&quot;&quot;</span>, <span style="color: #C5A22D;">&quot;g&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&gt;</span><span style="color: #000000; font-weight:bold;">0</span>
      <span style="color: #804040;">echo</span> <span style="color: #C5A22D;">&quot;Not a number&quot;</span>
      <span style="color: #804040;">return</span>
    <span style="color: #804040;">endif</span>
    <span style="color: #804040;">if</span> l<span style="color: #000000;">:</span>input<span style="color: #000000;">&lt;</span><span style="color: #000000; font-weight:bold;">1</span> <span style="color: #000000;">||</span> l<span style="color: #000000;">:</span>input<span style="color: #000000;">&gt;</span>l<span style="color: #000000;">:</span>num
      <span style="color: #804040;">echo</span> <span style="color: #C5A22D;">&quot;Out of range&quot;</span>
      <span style="color: #804040;">return</span>
    <span style="color: #804040;">endif</span>
    <span style="color: #804040;">let</span> l<span style="color: #000000;">:</span><span style="color: #25BB4D;">line</span>=<span style="color: #25BB4D;">matchstr</span><span style="color: #000000;">&#40;</span><span style="color: #C5A22D;">&quot;<span style="">\n</span>&quot;</span><span style="color: #000000;">.</span>l<span style="color: #000000;">:</span><span style="color: #668080;">list</span>, <span style="color: #C5A22D;">&quot;<span style="">\n</span>&quot;</span><span style="color: #000000;">.</span>l<span style="color: #000000;">:</span><span style="color: #25BB4D;">input</span><span style="color: #000000;">.</span><span style="color: #C5A22D;">&quot;<span style="">\t</span>[^<span style="">\n</span>]*&quot;</span><span style="color: #000000;">&#41;</span>
  <span style="color: #804040;">else</span>
    <span style="color: #804040;">let</span> l<span style="color: #000000;">:</span><span style="color: #25BB4D;">line</span>=l<span style="color: #000000;">:</span><span style="color: #668080;">list</span>
  <span style="color: #804040;">endif</span>
  <span style="color: #804040;">let</span> l<span style="color: #000000;">:</span><span style="color: #25BB4D;">line</span>=<span style="color: #25BB4D;">substitute</span><span style="color: #000000;">&#40;</span>l<span style="color: #000000;">:</span><span style="color: #25BB4D;">line</span>, <span style="color: #C5A22D;">&quot;^[^<span style="">\t</span>]*<span style="">\t</span>./&quot;</span>, <span style="color: #C5A22D;">&quot;&quot;</span>, <span style="color: #C5A22D;">&quot;&quot;</span><span style="color: #000000;">&#41;</span>
  <span style="color: #804040;">execute</span> <span style="color: #C5A22D;">&quot;:e &quot;</span><span style="color: #000000;">.</span>l<span style="color: #000000;">:</span><span style="color: #25BB4D;">line</span>
endfunction
<span style="color: #668080;">command</span><span style="color: #000000;">!</span> <span style="color: #668080;">-nargs</span>=<span style="color: #000000; font-weight:bold;">1</span> Find <span style="color: #000000;">:</span><span style="color: #804040;">call</span> Find<span style="color: #000000;">&#40;</span><span style="color: #C5A22D;">&quot;&lt;args&gt;&quot;</span><span style="color: #000000;">&#41;</span></pre></div></div>

<p>Następnie wstawiamy funkcję napisaną w Pythonie, również pochodząca ze wcześniej wspomnianej strony. Jest ona odpowiedzialna za sam proces wyszukiwania plików. Jednak tutaj zaszło klika zmian:</p>
<ul>
<li>szukanie jest niewrażliwe na wielkość znaków,</li>
<li>szukanie ignoruje katalogi .svn</li>
<li>rozpoczynając szukanie, nie trzeba potwierdzić (ale też nie można zmienić) katalogu, w którym się szuka; domyślnie jest to katalog w którym otwarliśmy Vima.</li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">python <span style="color: #66cc66;">&lt;&lt;</span> EOL
<span style="color: #ff7700;font-weight:bold;">import</span> vim
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> Finder<span style="color: black;">&#40;</span><span style="color: #66cc66;">*</span>args<span style="color: black;">&#41;</span>:
    start_dir = vim.<span style="color: #008000;">eval</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'getcwd()'</span><span style="color: black;">&#41;</span>
    find_cmd = <span style="color: black;">&#40;</span>r<span style="color: #483d8b;">'find %s -iname &quot;*%s*&quot; ! -name &quot;*.svn*&quot; -type f -printf %%p:1:-<span style="color: #000099; font-weight: bold;">\\</span>n'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>start_dir, args<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    vim.<span style="color: black;">command</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;cgete system('%s')&quot;</span> <span style="color: #66cc66;">%</span> find_cmd<span style="color: black;">&#41;</span>
    vim.<span style="color: black;">command</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'botright copen'</span><span style="color: black;">&#41;</span>
EOL
command<span style="color: #66cc66;">!</span> -nargs=<span style="color: #ff4500;">1</span> Find :py Finder<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&lt;args&gt;&quot;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>I na koniec pozostało przypisanie sobie funkcji do skrótu <kbd>ctrl-f</kbd>:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #804040;">map</span><span style="color: #000000;">!</span> <span style="color: #000000;">&lt;</span>C<span style="color: #000000;">-</span>f<span style="color: #000000;">&gt;</span> <span style="color: #668080;">&lt;Esc&gt;</span> <span style="color: #000000;">:</span>Find ;
<span style="color: #804040;">map</span>  <span style="color: #000000;">&lt;</span>C<span style="color: #000000;">-</span>f<span style="color: #000000;">&gt;</span> <span style="color: #000000;">:</span>Find ;</pre></div></div>

<p>Po <code>:Find</code> jest spacja, aby nie trzeba było jej dopisywać za każdym razem. Teraz wystarczy wykonać <code>:source ~/.vimrc</code> lub zrestartować Vima, a następnie <kbd>ctrl+f</kbd> i voilà!</p>


<p>Podobne wpisy:<ol><li><a href='http://code42.pl/2009/04/21/uprawnienia-plikow-w-repo-svn/' rel='bookmark' title='Uprawnienia plików w repo SVN'>Uprawnienia plików w repo SVN</a></li>
<li><a href='http://code42.pl/2009/01/26/vim-edycja-plikow-php/' rel='bookmark' title='Krótko: Vim i powolna edycja plików PHP'>Krótko: Vim i powolna edycja plików PHP</a></li>
<li><a href='http://code42.pl/2010/12/24/ignorowanie-plikow-w-svn/' rel='bookmark' title='Ignorowanie plików w SVN'>Ignorowanie plików w SVN</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://code42.pl/2009/03/26/vim-znajdowanie-plikow-w-podkatalogach/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Krótko: Vim i powolna edycja plików PHP</title>
		<link>http://code42.pl/2009/01/26/vim-edycja-plikow-php/</link>
		<comments>http://code42.pl/2009/01/26/vim-edycja-plikow-php/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 10:55:44 +0000</pubDate>
		<dc:creator>zergu</dc:creator>
				<category><![CDATA[Vim]]></category>
		<category><![CDATA[optymalizacja]]></category>

		<guid isPermaLink="false">http://code42.pl/?p=187</guid>
		<description><![CDATA[Vim potafi bardzo spowolnić (szczególnie poruszanie kursorem) podczas edycji plików PHP, co jest spowodowane najprawdopodobniej dopasowywaniem nawiasów (aby podświetlić parę). Jeśli ten ficzer nie jest dla krytyczny dla naszej pracy, warto go wyłączyć dodając w swoim .vimrc linię: let loaded_matchparen = 1 Oczywiście wciąż można używać kombinacji shift-5, aby „ręcznie” odnaleźć nawias z pary. Podobne wpisy:Krótko: uwaga na [...]


Podobne wpisy:<ol><li><a href='http://code42.pl/2009/01/09/optymalizacje-sfpropelpagergetresults/' rel='bookmark' title='Krótko: uwaga na sfPropelPager::getResults()'>Krótko: uwaga na sfPropelPager::getResults()</a></li>
<li><a href='http://code42.pl/2011/04/17/vim-latwe-zwiekszaniezmnieszanie-liczb-i-liter/' rel='bookmark' title='Vim: łatwe zwiększanie/zmnieszanie liczb i liter'>Vim: łatwe zwiększanie/zmnieszanie liczb i liter</a></li>
<li><a href='http://code42.pl/2009/03/26/vim-znajdowanie-plikow-w-podkatalogach/' rel='bookmark' title='Vim: Znajdowanie plików w podkatalogach'>Vim: Znajdowanie plików w podkatalogach</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Vim potafi bardzo spowolnić (szczególnie poruszanie kursorem) podczas edycji plików PHP, co jest spowodowane najprawdopodobniej dopasowywaniem nawiasów (aby podświetlić parę). Jeśli ten ficzer nie jest dla krytyczny dla naszej pracy, warto go wyłączyć dodając w swoim <code>.vimrc</code> linię:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #804040;">let</span> loaded_matchparen = <span style="color: #000000; font-weight:bold;">1</span></pre></div></div>

<p>Oczywiście wciąż można używać kombinacji <kbd>shift-5</kbd>, aby „ręcznie” odnaleźć nawias z pary.</p>


<p>Podobne wpisy:<ol><li><a href='http://code42.pl/2009/01/09/optymalizacje-sfpropelpagergetresults/' rel='bookmark' title='Krótko: uwaga na sfPropelPager::getResults()'>Krótko: uwaga na sfPropelPager::getResults()</a></li>
<li><a href='http://code42.pl/2011/04/17/vim-latwe-zwiekszaniezmnieszanie-liczb-i-liter/' rel='bookmark' title='Vim: łatwe zwiększanie/zmnieszanie liczb i liter'>Vim: łatwe zwiększanie/zmnieszanie liczb i liter</a></li>
<li><a href='http://code42.pl/2009/03/26/vim-znajdowanie-plikow-w-podkatalogach/' rel='bookmark' title='Vim: Znajdowanie plików w podkatalogach'>Vim: Znajdowanie plików w podkatalogach</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://code42.pl/2009/01/26/vim-edycja-plikow-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

