<?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>「zsh」タグの記事一覧 - 工夫と趣向と分別と。</title>
	<atom:link href="https://d.akinori.org/tag/zsh/feed/" rel="self" type="application/rss+xml" />
	<link>https://d.akinori.org/tag/zsh/</link>
	<description>おもしろく生きたいね</description>
	<lastBuildDate>Sun, 20 Oct 2013 17:19:44 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.1</generator>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/>	<item>
		<title>&#8220;z&#8221;のfork「knu-z」v2.0をリリース</title>
		<link>https://d.akinori.org/2013/03/06/z%e3%81%aefork%e3%80%8cknu-z%e3%80%8dv2-0%e3%82%92%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9/</link>
					<comments>https://d.akinori.org/2013/03/06/z%e3%81%aefork%e3%80%8cknu-z%e3%80%8dv2-0%e3%82%92%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9/#respond</comments>
		
		<dc:creator><![CDATA[Akinori]]></dc:creator>
		<pubDate>Wed, 06 Mar 2013 13:21:55 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[z]]></category>
		<category><![CDATA[zsh]]></category>
		<guid isPermaLink="false">http://d.akinori.org/?p=3012</guid>

					<description><![CDATA[<p>「賢いcd」&#8221;z&#8220;の俺版fork「knu-z」v2.0をリリースしました（英語版記事）。 オリジナル版をいじっているうちに修正箇所がたくさん見つかり、直しすぎて個別にpull requestするこ… <span class="read-more"><a href="https://d.akinori.org/2013/03/06/z%e3%81%aefork%e3%80%8cknu-z%e3%80%8dv2-0%e3%82%92%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9/">続きを読む &#187;</a></span></p>
<p>The post <a href="https://d.akinori.org/2013/03/06/z%e3%81%aefork%e3%80%8cknu-z%e3%80%8dv2-0%e3%82%92%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9/">&#8220;z&#8221;のfork「knu-z」v2.0をリリース</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->

» 関連記事 «<ul>
<li><a href="https://d.akinori.org/2004/04/23/20040423p02/" rel="bookmark" title="zshのホスト名補完強化">zshのホスト名補完強化</a></li>
<li><a href="https://d.akinori.org/2007/01/17/20070117p02/" rel="bookmark" title="zshのglobal alias">zshのglobal alias</a></li>
<li><a href="https://d.akinori.org/2007/07/03/20070703p01/" rel="bookmark" title="Making Ctrl+W a tad smarter">Making Ctrl+W a tad smarter</a></li>
</ul>
</div>
]]></description>
										<content:encoded><![CDATA[<p>「賢いcd」&#8221;<a title="rupa/z · GitHub" href="https://github.com/rupa/z">z</a>&#8220;の俺版fork「<a title="knu/z · GitHub" href="https://github.com/knu/z">knu-z</a>」v2.0をリリースしました（<a href="http://blog.akinori.org/2013/03/06/knu-z-v2-0-released-a-fork-of-z-a-better-cd/">英語版記事</a>）。</p>
<p>オリジナル版をいじっているうちに修正箇所がたくさん見つかり、直しすぎて個別にpull requestすることが困難になり、途中で作者のrupaさんにはforkの存在とそこそこ詳細な変更点リストをメールしたんだけど時すでに遅し。ほかにもforkがたくさんありすぎてうんざりだったかも。とはいえbashの補完は壊れているしzshの補完も古くて（compsys）いまいちだし、というわけでフィードバックについては気にせずにコアのアルゴリズム部以外を大幅に書き直しました。</p>
<p>ついでにcdの補完候補にzのスタック（ディレクトリ移動履歴に基づいてスコアリングされたディレクトリリスト）を含めるようにしたので、「zが使えるホストでだけzを使う」とか、「通常の移動はcd<sup><a href="https://d.akinori.org/2013/03/06/z%e3%81%aefork%e3%80%8cknu-z%e3%80%8dv2-0%e3%82%92%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9/#footnote_0_3012" id="identifier_0_3012" class="footnote-link footnote-identifier-link" title="cdはCDPATHを見るとか-に戻れるとかcdable_varsとかいろいろ特徴があるのでzだけでは済まない。">1</a></sup>、よく行くところへの移動はz」なんていう悲しい使い分けは不要になりました。普通にcdを使っていれば、zが有効なら補完候補の上位によく行くディレクトリが現れるという空気のような存在です。</p>
<p>ただし、bashでは補完候補の出現順序を制御する方法がない<sup><a href="https://d.akinori.org/2013/03/06/z%e3%81%aefork%e3%80%8cknu-z%e3%80%8dv2-0%e3%82%92%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9/#footnote_1_3012" id="identifier_1_3012" class="footnote-link footnote-identifier-link" title="よね？あったら教えて。compopt -o nosortとかあればいいのに。">2</a></sup>ため、cdにおいてはマッチするディレクトリがないときだけzのスタックから補完します。（常に含めてしまうと、辞書順ソートのおかげでうざいことになる）<br />
ていうかzshを使えばいいと思います。</p>
<p>インストールは<code>~/.bashrc</code>や<code>~/.zshrc</code>に一行足すだけなので、<a title="README" href="https://github.com/knu/z#readme">README</a>を読んで使ってみて。</p>
<ol class="footnotes"><li id="footnote_0_3012" class="footnote">cdは<code>CDPATH</code>を見るとか<code>-</code>に戻れるとか<code>cdable_vars</code>とかいろいろ特徴があるのでzだけでは済まない。</li><li id="footnote_1_3012" class="footnote">よね？あったら教えて。<code>compopt -o nosort</code>とかあればいいのに。</li></ol><p>The post <a href="https://d.akinori.org/2013/03/06/z%e3%81%aefork%e3%80%8cknu-z%e3%80%8dv2-0%e3%82%92%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9/">&#8220;z&#8221;のfork「knu-z」v2.0をリリース</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->
<p>» 関連記事 «</p><ul>
<li><a href="https://d.akinori.org/2004/04/23/20040423p02/" rel="bookmark" title="zshのホスト名補完強化">zshのホスト名補完強化</a></li>
<li><a href="https://d.akinori.org/2007/01/17/20070117p02/" rel="bookmark" title="zshのglobal alias">zshのglobal alias</a></li>
<li><a href="https://d.akinori.org/2007/07/03/20070703p01/" rel="bookmark" title="Making Ctrl+W a tad smarter">Making Ctrl+W a tad smarter</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://d.akinori.org/2013/03/06/z%e3%81%aefork%e3%80%8cknu-z%e3%80%8dv2-0%e3%82%92%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Gitを使っていて zsh: no matches found: HEAD^ などと言われない方法</title>
		<link>https://d.akinori.org/2012/01/23/git%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%84%e3%81%a6-zsh-no-matches-found-head-%e3%81%aa%e3%81%a9%e3%81%a8%e8%a8%80%e3%82%8f%e3%82%8c%e3%81%aa%e3%81%84%e6%96%b9%e6%b3%95/</link>
					<comments>https://d.akinori.org/2012/01/23/git%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%84%e3%81%a6-zsh-no-matches-found-head-%e3%81%aa%e3%81%a9%e3%81%a8%e8%a8%80%e3%82%8f%e3%82%8c%e3%81%aa%e3%81%84%e6%96%b9%e6%b3%95/#respond</comments>
		
		<dc:creator><![CDATA[Akinori]]></dc:creator>
		<pubDate>Mon, 23 Jan 2012 08:09:34 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[zsh]]></category>
		<guid isPermaLink="false">http://d.akinori.org/?p=2865</guid>

					<description><![CDATA[<p>Gitを使っていると、今のcommitなし！とgit reset --soft HEAD^したり、abc1234以降のコミットをパッチ化したい！とgit format-patch abc1234^したくなることがよくある… <span class="read-more"><a href="https://d.akinori.org/2012/01/23/git%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%84%e3%81%a6-zsh-no-matches-found-head-%e3%81%aa%e3%81%a9%e3%81%a8%e8%a8%80%e3%82%8f%e3%82%8c%e3%81%aa%e3%81%84%e6%96%b9%e6%b3%95/">続きを読む &#187;</a></span></p>
<p>The post <a href="https://d.akinori.org/2012/01/23/git%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%84%e3%81%a6-zsh-no-matches-found-head-%e3%81%aa%e3%81%a9%e3%81%a8%e8%a8%80%e3%82%8f%e3%82%8c%e3%81%aa%e3%81%84%e6%96%b9%e6%b3%95/">Gitを使っていて zsh: no matches found: HEAD^ などと言われない方法</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->

» 関連記事 «<ul>
<li><a href="https://d.akinori.org/2004/01/24/20040124p01/" rel="bookmark" title="GNU screenのコマンドキー">GNU screenのコマンドキー</a></li>
<li><a href="https://d.akinori.org/2004/04/23/20040423p02/" rel="bookmark" title="zshのホスト名補完強化">zshのホスト名補完強化</a></li>
<li><a href="https://d.akinori.org/2007/01/17/20070117p02/" rel="bookmark" title="zshのglobal alias">zshのglobal alias</a></li>
</ul>
</div>
]]></description>
										<content:encoded><![CDATA[<p>Gitを使っていると、<em>今のcommitなし！</em>と<code>git reset --soft HEAD^</code>したり、<em><code>abc1234</code>以降のコミットをパッチ化したい！</em>と<code>git format-patch abc1234^</code>したくなることがよくあるわけだが、この<code>^</code>はzshの拡張グロブ有効化時（<code>setopt extended_glob</code>）はメタ文字として働くため、そのまま入力すると標記のエラーで怒られてしまう。<br />
いちいちエスケープするのは面倒だと思うのだが、ぐぐってみても正面から対処している人があまりいないようなので紹介しておくと、拙作の<a href="https://github.com/knu/zsh-git-escape-magic"><code>git-escape-magic</code></a>を使えば良い。リンク先のドキュメントの通り、ふつうに入力するだけで、いい感じに文脈を見て自動エスケープしてくれる。<br />
このように、zle（zshラインエディタ）をいじると結構おもしろいことができる。<br />
たとえば、3つ上のディレクトリを参照するために<code>../../..</code>などと打つのは指がつりそうな所作だが、カレントディレクトリが<code>.</code>で親ディレクトリが<code>..</code>であるならばn個上のディレクトリは(n-1)個の<code>.</code>の並びで表現できてもよさそうなものである。と、思ったなら、<a href="https://github.com/knu/zsh-manydots-magic"><code>manydots-magic</code></a>のような実装に至ることができる。<br />
もちろん正規表現、Gitのコミットの範囲指定、あるいはワンライナープログラム内で<code>...</code>という並びを使うこともあるので、引数の頭か<code>/</code>の直後でのみ動くようにしているほか、直後に<code>../..</code>の後には似つかわしくない文字が打たれたときは<code>...</code>に戻す工夫を加えた。また、指が滑って打ち過ぎたときに最後の<code>/..</code>をBSを3度も押して削るなどは面倒だから、<code>.</code>連打の後のBSは3文字分を削り直前の状態に戻るようにしてある。<br />
先ほどの<code>git-escape-magic</code>ともども、参考にした<code>url-quote-magic</code>では考慮外だったネストに対応しているので、いくつも併用できる。何かおもしろいものができたら、ぜひ公開してみてくれ。</p>
<p>The post <a href="https://d.akinori.org/2012/01/23/git%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%84%e3%81%a6-zsh-no-matches-found-head-%e3%81%aa%e3%81%a9%e3%81%a8%e8%a8%80%e3%82%8f%e3%82%8c%e3%81%aa%e3%81%84%e6%96%b9%e6%b3%95/">Gitを使っていて zsh: no matches found: HEAD^ などと言われない方法</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->
<p>» 関連記事 «</p><ul>
<li><a href="https://d.akinori.org/2004/01/24/20040124p01/" rel="bookmark" title="GNU screenのコマンドキー">GNU screenのコマンドキー</a></li>
<li><a href="https://d.akinori.org/2004/04/23/20040423p02/" rel="bookmark" title="zshのホスト名補完強化">zshのホスト名補完強化</a></li>
<li><a href="https://d.akinori.org/2007/01/17/20070117p02/" rel="bookmark" title="zshのglobal alias">zshのglobal alias</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://d.akinori.org/2012/01/23/git%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%84%e3%81%a6-zsh-no-matches-found-head-%e3%81%aa%e3%81%a9%e3%81%a8%e8%a8%80%e3%82%8f%e3%82%8c%e3%81%aa%e3%81%84%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Making Ctrl+W a tad smarter</title>
		<link>https://d.akinori.org/2007/07/03/20070703p01/</link>
					<comments>https://d.akinori.org/2007/07/03/20070703p01/#comments</comments>
		
		<dc:creator><![CDATA[Akinori]]></dc:creator>
		<pubDate>Mon, 02 Jul 2007 15:00:00 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[zsh]]></category>
		<guid isPermaLink="false">http://dlog.akinori.org/2007/07/03/20070703p01/</guid>

					<description><![CDATA[<p>まつもとさんの日記にあった、Effective EmacsのItem3について。もしtransient-mark-modeを有効にしているなら、C-wはこうすればいいんじゃないかな。 [crayon-6839680a78… <span class="read-more"><a href="https://d.akinori.org/2007/07/03/20070703p01/">続きを読む &#187;</a></span></p>
<p>The post <a href="https://d.akinori.org/2007/07/03/20070703p01/">Making Ctrl+W a tad smarter</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->

» 関連記事 «<ul>
<li><a href="https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/" rel="bookmark" title="Emacs: kill-region-or-backward-kill-word">Emacs: kill-region-or-backward-kill-word</a></li>
<li><a href="https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/" rel="bookmark" title="Emacsの範囲選択UIを大幅拡張してくれるcua-mode">Emacsの範囲選択UIを大幅拡張してくれるcua-mode</a></li>
<li><a href="https://d.akinori.org/2004/12/25/20041225p02/" rel="bookmark" title="xyzzy / mcalc">xyzzy / mcalc</a></li>
</ul>
</div>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.rubyist.net/~matz/20070622.html#p05">まつもとさんの日記</a>にあった、<a href="http://steve.yegge.googlepages.com/effective-emacs#item3">Effective EmacsのItem3</a>について。もし<code>transient-mark-mode</code>を有効にしているなら、<code>C-w</code>はこうすればいいんじゃないかな。</p><pre class="urvanov-syntax-highlighter-plain-tag">(defun kill-region-or-backward-kill-word (&amp;optional arg)
  "Kill a region or a word backward."
  (interactive)
  (if mark-active
      (kill-region (mark) (point))
    (backward-kill-word (or arg 1))))
(global-set-key "\C-w" 'kill-region-or-backward-kill-word)</pre><p>zshで同じことをするならこう。</p><pre class="urvanov-syntax-highlighter-plain-tag">tcsh-backward-delete-word () {
	local WORDCHARS="${WORDCHARS:s#/#}"
	zle backward-delete-word
    }
    zle -N tcsh-backward-delete-word
    kill-region-or-tcsh-backward-delete-word () {
        if [ $MARK -eq 0 ]; then
            tcsh-backward-delete-word
        else
            zle kill-region
            MARK=0
        fi
    }
    zle -N kill-region-or-tcsh-backward-delete-word
    bindkey '^W' kill-region-or-tcsh-backward-delete-word</pre><p>zshには<code>transient-mark-mode</code>はないので、マーク位置がバッファの先頭だったらマークされていないと見なす。<br />
けっこう便利。<br />
※その後変数<code>REGION_ACTIVE</code>が導入されたので、今は以下でOK。（2013-10-21追記）</p><pre class="urvanov-syntax-highlighter-plain-tag">kill-region-or-tcsh-backward-delete-word () {
        if ((REGION_ACTIVE)); then
            zle kill-region
        else
            tcsh-backward-delete-word
        fi
    }</pre><p></p>
<p>The post <a href="https://d.akinori.org/2007/07/03/20070703p01/">Making Ctrl+W a tad smarter</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->
<p>» 関連記事 «</p><ul>
<li><a href="https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/" rel="bookmark" title="Emacs: kill-region-or-backward-kill-word">Emacs: kill-region-or-backward-kill-word</a></li>
<li><a href="https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/" rel="bookmark" title="Emacsの範囲選択UIを大幅拡張してくれるcua-mode">Emacsの範囲選択UIを大幅拡張してくれるcua-mode</a></li>
<li><a href="https://d.akinori.org/2004/12/25/20041225p02/" rel="bookmark" title="xyzzy / mcalc">xyzzy / mcalc</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://d.akinori.org/2007/07/03/20070703p01/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>zshのglobal alias</title>
		<link>https://d.akinori.org/2007/01/17/20070117p02/</link>
					<comments>https://d.akinori.org/2007/01/17/20070117p02/#respond</comments>
		
		<dc:creator><![CDATA[Akinori]]></dc:creator>
		<pubDate>Tue, 16 Jan 2007 15:01:00 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[zsh]]></category>
		<guid isPermaLink="false">http://dlog.akinori.org/2007/01/17/20070117p02/</guid>

					<description><![CDATA[<p>　zshのglobal aliasは、意外と使いでがある。ほかの人がどう使っているのか知らないが、僕は主に独自コマンドラインオプションを定義するために使っている。 　たとえば、「alias -g -- --mydb3='… <span class="read-more"><a href="https://d.akinori.org/2007/01/17/20070117p02/">続きを読む &#187;</a></span></p>
<p>The post <a href="https://d.akinori.org/2007/01/17/20070117p02/">zshのglobal alias</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->

» 関連記事 «<ul>
<li><a href="https://d.akinori.org/2004/05/12/20040512p02/" rel="bookmark" title="VJE-DeltaとXFree86">VJE-DeltaとXFree86</a></li>
<li><a href="https://d.akinori.org/2007/02/01/20070201p04/" rel="bookmark" title="g version 0.1.2 &#8211; a wrapper around grep(1)">g version 0.1.2 &#8211; a wrapper around grep(1)</a></li>
<li><a href="https://d.akinori.org/2005/12/29/20051229p03/" rel="bookmark" title="mktime(3)">mktime(3)</a></li>
</ul>
</div>
]]></description>
										<content:encoded><![CDATA[<p>　zshのglobal aliasは、意外と使いでがある。ほかの人がどう使っているのか知らないが、僕は主に独自コマンドラインオプションを定義するために使っている。</p>
<p>　たとえば、「<code>alias -g -- --mydb3='-h mydb3 -uadmin -p'</code>」のように定義しておくと、「<code>mysql --mydb3 」や「<span class="code">mysqldump --mydb3 --no-data blog</code>」など、MySQLの接続情報の指定が楽になる。しかも、aliasなのでその前後でちゃんとzshのコマンドライン補完が利くのがうれしいところ。</span></p>
<p>　同様に、<code>find(1)</code>用に<code>-cvs-exclude</code>を定義してみた。</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">exclude_patterns=(
    RCS SCCS CVS CVS.adm RCSLOG 'cvslog.*' tags TAGS .make.state
    .nse_depinfo '*~' '#*' '.#*' ',*' '_$*' '*$'
    \*.{old,bak,BAK,orig,rej,del-\*,a,olb,o,obj,so,exe,Z,elc,ln}
    core .svn .bzr
)

alias -g -- -cvs-exclude='\( \! \( \( '&quot;${(j/ -o /@)${(@q)exclude_patterns}/()/-name }&quot;' \) -prune \) \)'

unset exclude_patterns</pre><p></p>
<p>これで、「<code>find ~/src/ruby -cvs-exclude -mtime -1</code>」などと使えるわけだ。</p>
<p>　このほか、よく使うconfigureオプションをまとめたものを定義したりしても便利だと思う。もちろん、globalだけにあまりにありふれた名前は避けたいが、普通のalias同様にバックスラッシュで展開を避けることができるので、うっかりしても痛い目を見ない自信があるなら思い切った名前にしてしまってもいいと思う。</p>
<p>The post <a href="https://d.akinori.org/2007/01/17/20070117p02/">zshのglobal alias</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->
<p>» 関連記事 «</p><ul>
<li><a href="https://d.akinori.org/2004/05/12/20040512p02/" rel="bookmark" title="VJE-DeltaとXFree86">VJE-DeltaとXFree86</a></li>
<li><a href="https://d.akinori.org/2007/02/01/20070201p04/" rel="bookmark" title="g version 0.1.2 &#8211; a wrapper around grep(1)">g version 0.1.2 &#8211; a wrapper around grep(1)</a></li>
<li><a href="https://d.akinori.org/2005/12/29/20051229p03/" rel="bookmark" title="mktime(3)">mktime(3)</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://d.akinori.org/2007/01/17/20070117p02/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>zshのホスト名補完強化</title>
		<link>https://d.akinori.org/2004/04/23/20040423p02/</link>
					<comments>https://d.akinori.org/2004/04/23/20040423p02/#respond</comments>
		
		<dc:creator><![CDATA[Akinori]]></dc:creator>
		<pubDate>Thu, 22 Apr 2004 15:01:00 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[zsh]]></category>
		<guid isPermaLink="false">http://dlog.akinori.org/2004/04/23/20040423p02/</guid>

					<description><![CDATA[<p>　zshのホスト名補完に、sshのknown_hostsを活用する設定。.zshrcに以下を追加する。 [crayon-6839680a78be6503750344/] 　ずっとこの便利さを当たり前だと思っていて、IRC… <span class="read-more"><a href="https://d.akinori.org/2004/04/23/20040423p02/">続きを読む &#187;</a></span></p>
<p>The post <a href="https://d.akinori.org/2004/04/23/20040423p02/">zshのホスト名補完強化</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->

» 関連記事 «<ul>
<li><a href="https://d.akinori.org/2004/05/07/20040507p06/" rel="bookmark" title="ナノ秒にはまる">ナノ秒にはまる</a></li>
<li><a href="https://d.akinori.org/2007/05/19/20070519p01/" rel="bookmark" title="Perlの罠 &#8211; リスト">Perlの罠 &#8211; リスト</a></li>
<li><a href="https://d.akinori.org/2006/08/02/20060802p01/" rel="bookmark" title="inplace 1.1.0リリース">inplace 1.1.0リリース</a></li>
</ul>
</div>
]]></description>
										<content:encoded><![CDATA[<p>　zshのホスト名補完に、sshのknown_hostsを活用する設定。.zshrcに以下を追加する。</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">make_p () {
    local t s
    t=&quot;$1&quot;; shift

    [ -f $t ] || return 0

    for s; do
	[ $s -nt $t ] &amp;&amp; return 0
    done

    return 1
}

cache_hosts_file=&quot;$ZDOTDIR/.cache_hosts&quot;
known_hosts_file=&quot;$HOME/.ssh/known_hosts&quot;

print_cache_hosts () {
    if [ -f $known_hosts_file ]; then
	awk '{ if (split($1, a, &quot;,&quot;) &gt; 1) for (i in a) { if (a[i] ~ /^[a-z]/) print a[i] } else print $1 }' $known_hosts_file
    fi
}

update_cache_hosts () {
    print_cache_hosts | sort -u &gt; $cache_hosts_file
}

make_p $cache_hosts_file $known_hosts_file &amp;&amp; update_cache_hosts

_cache_hosts=( $(&lt; $cache_hosts_file) )</pre><p></p>
<p>　ずっとこの便利さを当たり前だと思っていて、IRCで指摘されるまで自分が書いた上のコードのおかげであることを忘れていた。せっかくなのでここで紹介しておく。</p>
<p>[後日、若干の改善のため微修正しました。(2004-04-25)]</p>
<p>The post <a href="https://d.akinori.org/2004/04/23/20040423p02/">zshのホスト名補完強化</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->
<p>» 関連記事 «</p><ul>
<li><a href="https://d.akinori.org/2004/05/07/20040507p06/" rel="bookmark" title="ナノ秒にはまる">ナノ秒にはまる</a></li>
<li><a href="https://d.akinori.org/2007/05/19/20070519p01/" rel="bookmark" title="Perlの罠 &#8211; リスト">Perlの罠 &#8211; リスト</a></li>
<li><a href="https://d.akinori.org/2006/08/02/20060802p01/" rel="bookmark" title="inplace 1.1.0リリース">inplace 1.1.0リリース</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://d.akinori.org/2004/04/23/20040423p02/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
