<?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>Kanru&#039;s 探險日誌 &#187; 爬網探險</title>
	<atom:link href="http://blog.kanru.info/archives/category/%e7%88%ac%e7%b6%b2%e6%8e%a2%e9%9a%aa/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.kanru.info</link>
	<description>當發現美好的事物時，所要做的第一件事，就是把它分享給所有人</description>
	<lastBuildDate>Sun, 23 May 2010 09:51:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>iotop &#8211; monitor your disk usage</title>
		<link>http://blog.kanru.info/archives/567</link>
		<comments>http://blog.kanru.info/archives/567#comments</comments>
		<pubDate>Wed, 02 Dec 2009 11:40:12 +0000</pubDate>
		<dc:creator>kanru</dc:creator>
				<category><![CDATA[小工具]]></category>
		<category><![CDATA[爬網探險]]></category>
		<category><![CDATA[iotop]]></category>

		<guid isPermaLink="false">http://blog.kanru.info/?p=567</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>Disk I/O 往往是效能的殺手，但是我們卻很難抓出現在到底是哪個程式正在 I/O。 iotop 是一隻 python script，用類似 top 的介面顯示各 process 的 I/O 狀況，還會顯示每個process 的 throughput 是多少。</p>

<p>要使用 iotop，編譯 kernel 時要選 CONFIG_TASKSTATS 與 CONFIG_TASK_IO_ACCOUNTING。</p>

<p>以下是截圖：
<img src="http://people.debian.org.tw/~koster/blog/2008-12-16-195838_626x223_scrot.png" alt="iotop screenshot" /></p>

<p>註：PowerTop 將內建類似功能，參考 <a href="http://blog.fenrus.org/?p=38">http://blog.fenrus.org/?p=38</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kanru.info/archives/567/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>救回部份檔案&#8230;</title>
		<link>http://blog.kanru.info/archives/621</link>
		<comments>http://blog.kanru.info/archives/621#comments</comments>
		<pubDate>Tue, 28 Apr 2009 12:06:46 +0000</pubDate>
		<dc:creator>kanru</dc:creator>
				<category><![CDATA[小工具]]></category>
		<category><![CDATA[爬網探險]]></category>
		<category><![CDATA[disk]]></category>
		<category><![CDATA[recover]]></category>

		<guid isPermaLink="false">http://blog.kanru.info/?p=621</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>上禮拜還在煩惱檔案遺失的問題，尤其是舊的 gpg 金鑰，但必須收假回部隊了也沒辦法繼續處理。</p>

<p>再度放假回來之後，陸續在 reader 上看到不少有關資料救援的 blog，這些文章出現的時機還真是巧&#8230; 最有用的是今天看到的這篇 <a href="http://mnemonikk.org/2009/04/26/recovering-data-from-a-broken-ntfs-hard-drive/">Recovering data from a broken NTFS hard drive</a> 使用 foremost 或是 photorec 等不理會磁碟上用的是什麼檔案系統而直接搜尋檔案特徵來辨識檔案的程式進行救援。</p>

<p>photorec 執行後，60 GB 的映像檔分析了約三個半小時，找到 961920 多個檔案，其中文字檔太多了難以整理，某些還是支離破碎的&#8230; 大概只能建立索引方便以後搜尋吧，還取回不少照片，不過最最最重要的是 secring.gpg 終於拿回來了 <img src='http://blog.kanru.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kanru.info/archives/621/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parasite &#8211; Gtk+ UI 除錯開發工具</title>
		<link>http://blog.kanru.info/archives/605</link>
		<comments>http://blog.kanru.info/archives/605#comments</comments>
		<pubDate>Mon, 16 Mar 2009 11:02:40 +0000</pubDate>
		<dc:creator>kanru</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[小工具]]></category>
		<category><![CDATA[爬網探險]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[parasite]]></category>

		<guid isPermaLink="false">http://blog.kanru.info/?p=605</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><a href="http://chipx86.github.com/gtkparasite/">Parasite</a> 是一個強大的 Gtk+ UI 除錯/開發工具，使用方法類似 Firefox 中很好用的 Firebug，可以附著於執行中的程式，顯示 widget tree 與 properties，動態修改 widget 屬性，甚至透過 python console 還可以隨時 coding 改變 widget 行為。</p>

<p><img src="http://people.debian.org.tw/~koster/blog/parasite_python_shell.png" alt="Parasite Python Shell" width="90%"/></p>

<p>目前還沒有正式發行版，可以自己從 Git 拖回來編譯安裝。
<pre class="brush: bash;">
$ git clone git://github.com/chipx86/gtkparasite
</pre></p>

<p>參考：</p>

<ul>
<li><a href="http://lwn.net/Articles/321409/">LWN 文章</a></li>
<li><a href="http://chipx86.github.com/gtkparasite/video/parasite-intro.avi">Screencast</a></li>
</ul>

<p>話說，現在 github 不只有 git hosting，還有 web page hosting 了，不少專案就這樣透過 github 快速成立，或許以後 github 會朝完整的 project hosting 發展？</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kanru.info/archives/605/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://chipx86.github.com/gtkparasite/video/parasite-intro.avi" length="9434202" type="video/x-msvideo" />
		</item>
		<item>
		<title>Current state of Debian Chinese translations</title>
		<link>http://blog.kanru.info/archives/574</link>
		<comments>http://blog.kanru.info/archives/574#comments</comments>
		<pubDate>Wed, 17 Dec 2008 17:33:36 +0000</pubDate>
		<dc:creator>kanru</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[小工具]]></category>
		<category><![CDATA[爬網探險]]></category>
		<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://blog.kanru.info/?p=574</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>整理一下目前 Debian 各部份的中文翻譯狀況：</p>

<p><img src="http://people.debian.org.tw/~koster/blog/2008-12-18-010940_618x164_scrot.png" alt="transgraph" /></p>

<p><strong><a href="http://www.debian.org/international/l10n/po/zh_TW">收錄於 Debian 中的軟體的翻譯</a></strong></p>

<p>這裡大部分是各種有收錄在 Debian 中的軟體的 PO 檔的翻譯，不是 Debian 特有的，主要協調者是 Zh-l10n。</p>

<p>參考：</p>

<ul>
<li><a href="http://translationproject.org/team/zh_TW.html">Translation Project (TP)</a></li>
<li><a href="http://lists.linux.org.tw/cgi-bin/mailman/listinfo/zh-l10n">Zh-l10n 郵件論壇</a></li>
</ul>

<p><strong><a href="http://www.debian.org/international/l10n/po-debconf/zh_TW">Debian 套件設定樣板的翻譯</a></strong></p>

<p>也就是 po-debconf 的翻譯，這些翻譯會出現在安裝套件後的設定畫面。目前有翻譯的還不多，想要進行翻譯的可以參考 popcon 分數決定要先從哪個套件開始。</p>

<p>可以使用<a href="http://people.debian.org.tw/~koster/misc/transhelp.sh">這隻 script</a> 來幫助翻譯：</p>

<ul>
<li>取得 po 檔

<ul>
<li>transhelp get abook</li>
</ul></li>
<li>編輯

<ul>
<li>edit abook/zh_TW.po</li>
</ul></li>
<li>檢查翻譯結果

<ul>
<li>transhelp check abook</li>
</ul></li>
<li>模擬顯示結果

<ul>
<li>transhelp display abook</li>
</ul></li>
<li>提交

<ul>
<li>transhelp send abook</li>
</ul></li>
</ul>

<p>transhelp 只是簡化翻譯的流程，真正要翻譯前請先參考 <a href="http://www.debian.org/international/l10n/po-debconf/README-trans">README-trans</a></p>

<p><strong><a href="http://ddtp.debian.net/ddtss/index.cgi/zh_TW">Debian 套件描述的翻譯</a></strong></p>

<p>套件描述的翻譯，這些翻譯會出現在套件管理軟體中 (如 aptitude) 或是 packages.debian.org 網站上。</p>

<p>無論你是要翻譯或是要 review，都可以透過網頁介面進行。</p>

<p>參考摩托學園：<a href="http://moto.debian.org.tw/viewtopic.php?p=50384">DDTSS</a>，<a href="http://moto.debian.org.tw/viewtopic.php?t=9730">翻譯 Debian 套件訊息</a></p>

<p><strong><a href="http://www.debian.org/devel/website/stats/zh-tw.html">Debian 網站的翻譯</a></strong></p>

<p>目前最重要的頁面都已經是最新了，其他常用頁面以及一些曾經翻譯過的頁面也在陸續整理中。我用 graphviz 畫了一張目前翻譯狀況的<a href="http://people.debian.org.tw/~koster/blog/transgraph.pdf">圖示</a>，紅色代表目錄中有未翻譯網頁，綠色代表網頁已經跟原文同步。</p>

<p>想要參與翻譯的可以參考<a href="http://www.debian.org/devel/website/">這裡</a>和<a href="http://www.debian.org/devel/website/translating.zh-tw.html">這裡</a></p>

<p><strong><a href="http://d-i.alioth.debian.org/l10n-stats/translation-status.html">Debian Installer 的翻譯</a></strong></p>

<p>這裡整理了 Debian Installer 會用到的套件的翻譯，目前只剩下少數還未更新。</p>

<p><strong><a href="http://lists.debian.org/debian-doc/2008/10/msg00134.html">Lenny Release Note 的翻譯</a></strong></p>

<p>很早就開始進行了，就我所知 Tetralet 已經翻譯了一部分。想要幫忙的可以聯絡他。</p>

<p><strong><a href="http://www.debian.org/devel/debian-installer/translations.txt">Lenny Install Manual 的翻譯</a></strong></p>

<p>之前是 <a href="http://moto.debian.org.tw/viewtopic.php?t=6894">dreamcryer 翻譯的</a>，現在聯絡不到人。簡體中文版已經翻譯的差不多了，想幫忙的人可以由此下手。</p>

<p><strong>Debian Wiki 的翻譯：</strong></p>

<p>不知道，Wiki 變化太快也許不適合進行翻譯。</p>

<p><strong>其他</strong></p>

<p>歡迎提供其他相關訊息 m(_ _)m</p>

<p>TODO: 整理到 Wiki 上</p>

<p>參考網站：<a href="http://www.debian.org/international/l10n/">http://www.debian.org/international/l10n/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kanru.info/archives/574/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Git branch in bash prompt</title>
		<link>http://blog.kanru.info/archives/550</link>
		<comments>http://blog.kanru.info/archives/550#comments</comments>
		<pubDate>Sat, 13 Dec 2008 12:47:54 +0000</pubDate>
		<dc:creator>kanru</dc:creator>
				<category><![CDATA[小工具]]></category>
		<category><![CDATA[爬網探險]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[prompt]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.kanru.info/?p=550</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.kanru.info/archives/343">之前</a>提過 zsh 有支援在 prompt 上顯示多種 VCS 資訊的功能，不知道 bash 上是否有人寫好同樣支援這麼多種 VCS 的 library，不過目前 git 附帶的 bash completion script 中有提供自訂 PS1 的函式。</p>

<p>只要呼叫 <code>__git_ps1</code> 即可得到目前的 git branch 的格式化輸出，可以自訂 prompt 如下</p>

<p><pre lang="plain">
GITPS1='$(__git_ps1 ":%s ")'
export PS1="\w ${GITPS1}&#92;$ "
</pre></p>

<p>就會顯示如</p>

<p><pre lang="plain">
/usr/src/awesome :next $
</pre></p>

<p>這樣的 prompt</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kanru.info/archives/550/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pdnsd &#8211; cache your DNS query</title>
		<link>http://blog.kanru.info/archives/536</link>
		<comments>http://blog.kanru.info/archives/536#comments</comments>
		<pubDate>Mon, 08 Dec 2008 07:13:44 +0000</pubDate>
		<dc:creator>kanru</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[小工具]]></category>
		<category><![CDATA[爬網探險]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[pdnsd]]></category>
		<category><![CDATA[proxy]]></category>

		<guid isPermaLink="false">http://blog.kanru.info/?p=536</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.phys.uu.nl/~rombouts/pdnsd.html">pdnsd</a> 是一個小型的 proxy DNS server，主要功能就是 proxy 與 cache，而不是像 bind9 那樣的完整 DNS server。</p>

<p>雖然 DNS 通常不是網路延遲的主因，但有時候就是很慢，使用 pdnsd 前後可以差非常多。</p>

<p><pre lang="shell">
% time host blog.kanru.info 168.95.1.1
0.00s user 0.01s system 0% cpu 0.963 total
% time host blog.kanru.info 127.0.0.1
0.00s user 0.00s system 65% cpu 0.011 total
</pre></p>

<p>在 Debian 系統上，如果你原本就有使用 <a href="http://packages.debian.org/resolvconf">resolvconf</a> 的話，那麼只要在 configure 時選擇使用 resolvconf 就會動態的把 resolv.conf 內的 DNS server 包含，而 resolv.conf 只會剩下 127.0.0.1，如：</p>

<p><pre lang="shell">
% /usr/sbin/pdnsd-ctl status
...
label: resolvconf
ip: 168.95.1.1
server assumed available: yes
ip: 192.168.1.1
server assumed available: yes
port: 53
...
% cat /etc/resolv.conf
nameserver 127.0.0.1
</pre></p>

<p><code>apt-get install pdnsd</code> 完全零設定 <img src='http://blog.kanru.info/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kanru.info/archives/536/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strange slowness and the reason</title>
		<link>http://blog.kanru.info/archives/531</link>
		<comments>http://blog.kanru.info/archives/531#comments</comments>
		<pubDate>Sun, 07 Dec 2008 11:37:15 +0000</pubDate>
		<dc:creator>kanru</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[爬網探險]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[zsh]]></category>

		<guid isPermaLink="false">http://blog.kanru.info/?p=531</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>最近系統在開啟 firefox 後常常會使得整個系統越來越慢，一開始以為是因為我用 minefield 的關係。到 bugzilla 搜尋了半天只發現跟啟用 jemalloc 會拖慢系統的相關問題，我以為就是這個原因，因為有一次我 /tmp 開不夠大，結果被 jemalloc 的 mmap 檔塞爆了。但是調整 jemalloc 相關參數之後仍不見起色。</p>

<p>於是我換回預設的 iceweasel 3.0.3，但情況還是一樣。只要開啟 firefox 之後系統就會明顯變慢，但是看記憶體用量也不會越變越多，是正常範圍。越來越覺得可能不是 firefox 的錯，不然 bugzilla 與 web 上早就叫苦連天了。</p>

<p>今天突然想到我在編譯 kernel 的時候有加入 CONFIG_HIGHPTE 選項，以為是因此拖慢系統，又認為可能是因為開啟 CONFIG_HIGHMEM4G 所以又增加額外 overhead，於是開始研究解決方法。</p>

<p>開啟 CONFIG_HIGHMEM4G 是因為我總共有 1.25 G 的記憶體可以用，但是 Linux 預設只能使用實體記憶體 9xx MB 的大小，不得已只好開啟 CONFIG_HIGHMEM4G，可以參考 <a href="http://kerneltrap.org/node/2450">Kernel Trap</a> 這篇。</p>

<p>搜尋一下在 2004 年與 2006 年都有把 2G memory split 選項加入的<a href="http://markmail.org/message/wipber3lohcbpmxb">討論</a>，但是目前編譯 2.6.28-rc7 時還是要先開啟 EMBEDDED 才能選 VMSPLIT_2G&#8230;</p>

<p>總之編譯了 kernel 重開機測試，打開 htop 監看記憶體用量與 CPU 用量，突然發現我所有的 process 都是 nice 5，想起 awesome 有個 bug report 就是一樣的問題，因為某一次的修改讓 awesome 會用 SHELL 環境變數裡面的 shell 來執行程式，而有問題的是 zsh，因為 zsh 預設會給 background process 比較高的 nice 值，而我只有瞄過這個 bug report 沒有多想&#8230;</p>

<p>我使用 cpufreq 的 ondemand governor，如果 process 的 nice 值大於零則不會替該 process 調高 CPU 速度，因此很有可能這樣才讓系統顯得緩慢 (永遠都是 798 MHz)，從 .xsession 把 SHELL 指定為 /bin/sh 之後 nice 值都正常了，直到現在系統都沒有變慢的情形。</p>

<p>令人好奇的是，究竟是因為我改了 kernel 參數而變好的，還是改了 SHELL 才變好的呢&#8230; 我猜大概是後者影響比較多吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kanru.info/archives/531/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>為什麼 Git 比 X 好？</title>
		<link>http://blog.kanru.info/archives/525</link>
		<comments>http://blog.kanru.info/archives/525#comments</comments>
		<pubDate>Sat, 06 Dec 2008 00:40:33 +0000</pubDate>
		<dc:creator>kanru</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[小工具]]></category>
		<category><![CDATA[爬網探險]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[translate]]></category>

		<guid isPermaLink="false">http://blog.kanru.info/?p=525</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>當初一看到這個標題心裡想的是 Git 怎麼拿來跟 X 比？原來這個 X 是指其他 SCM&#8230;</p>

<p><a href="http://whygitisbetterthanx.com/">http://whygitisbetterthanx.com/</a></p>

<p>很多人都注意到了，但是現在有</p>

<p><a href="http://zh-tw.whygitisbetterthanx.com/">http://zh-tw.whygitisbetterthanx.com/</a></p>

<p>囉，小小替 Git 宣傳一下 :p</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kanru.info/archives/525/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vim &#8211; 以游標位置為基礎捲動螢幕</title>
		<link>http://blog.kanru.info/archives/510</link>
		<comments>http://blog.kanru.info/archives/510#comments</comments>
		<pubDate>Mon, 01 Dec 2008 15:40:22 +0000</pubDate>
		<dc:creator>kanru</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[小工具]]></category>
		<category><![CDATA[爬網探險]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.kanru.info/?p=510</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>不是人人都有大螢幕可以一次容納幾百行程式碼，且看文件時我們常會希望可以從頭看到尾，或者是寫文章時我們會希望可以從螢幕的最上頭開新段落然後一次寫一整個螢幕。</p>

<p>如果不熟悉以下命令，你可能常常要用 hjkl 或方向鍵去移動游標，調整顯示的範圍。但是，其實不用這麼辛苦。</p>

<p><strong>zt</strong> 把游標下這行放到螢幕最上方</p>

<p><strong>zz</strong> 放到中間</p>

<p><strong>zb</strong> 放到最後</p>

<p>比如說，要開始寫新段落我只要 <strong>L</strong> 移動游標到最後，然後 <strong>zt</strong> ，我就會有一整頁空白的空間可以開始揮灑 <img src='http://blog.kanru.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kanru.info/archives/510/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Vim &#8211; 檔名太長怎麼辦</title>
		<link>http://blog.kanru.info/archives/487</link>
		<comments>http://blog.kanru.info/archives/487#comments</comments>
		<pubDate>Sun, 30 Nov 2008 11:25:59 +0000</pubDate>
		<dc:creator>kanru</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[小工具]]></category>
		<category><![CDATA[爬網探險]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.kanru.info/?p=487</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>這是 vim 的一個小技巧，考慮以下情境：</p>

<ol>
<li>我現在在 <code>~/</code> 目錄</li>
<li>因為某個原因我打開 vim 編輯 <code>/usr/src/foodir/src/bardoor.c</code></li>
<li>看了看，發現需要參考同目錄下的 <code>bardoor.h</code>，於是打入命令 <code>:tabe </code></li>
<li>接下來怎麼辦？因為目前工作目錄是 <code>~/</code>，如果要用 vim 的 tab 補完的話還是需要把路徑再打一次</li>
<li>想一想再看答案 <img src='http://blog.kanru.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ol>

<p><span id="more-487"></span></p>

<p>答案是 <strong>:tabe %:r.h</strong></p>

<p>利用 vim 的 filename-modifiers 可以輕鬆作到，vim 有 10 個這樣的 modifier 可以作用於 &#8220;%&#8221;，&#8221;#&#8221;，&#8221;#n&#8221;，&#8221;&lt;cfile&gt;&#8221;，&#8221;&lt;sfile&gt;&#8221;，&#8221;&lt;afile&gt;&#8221; 或 &#8220;&lt;abuf&gt;&#8221; 出現的地方：</p>

<table width='100%'>
<tr><td><strong>:p</strong></td> <td>完整路徑</td></tr>
<tr><td><strong>:8</strong></td> <td>變成 8.3 格式 (win32 用)</td></tr>
<tr><td><strong>:~</strong></td> <td>轉換為相對於 <code>~/</code> 目錄的路徑</td></tr>
<tr><td><strong>:.</strong></td> <td>轉換成相對於 <code>./</code> 目錄</td></tr>
<tr><td><strong>:h</strong></td> <td>保留路徑頭部，相當於 dirname 指令</td></tr>
<tr><td><strong>:t</strong></td> <td>保留檔案名，相當於 basename 指令</td></tr>
<tr><td><strong>:r</strong></td> <td>保留檔案名並去除延伸檔案名</td></tr>
<tr><td><strong>:e</strong></td> <td>只留下延伸檔案名</td></tr>
<tr><td><strong>:s?pat?sub?</strong></td> <td>用 sub 取代第一個出現的 pat</td></tr>
<tr><td><strong>:g?pat?sub?</strong></td> <td>同上，全部取代</td></tr>
</table>

<p />

<p>例如，如果文件名是 &#8220;src/version.c&#8221;，當前目錄是 &#8220;/home/mool/vim&#8221;：</p>

<table width='100%'>
<tr><td><strong>:p</strong></td>                    <td>/home/mool/vim/src/version.c</td></tr>
<tr><td><strong>:p:.</strong></td>                                 <td>src/version.c</td></tr>
<tr><td><strong>:p:~</strong></td>                           <td>~/vim/src/version.c</td></tr>
<tr><td><strong>:h</strong></td>                                   <td>src</td></tr>
<tr><td><strong>:p:h</strong></td>                  <td>/home/mool/vim/src</td></tr>
<tr><td><strong>:p:h:h</strong></td>                <td>/home/mool/vim</td></tr>
<tr><td><strong>:t</strong></td>                                       <td>version.c</td></tr>
<tr><td><strong>:p:t</strong></td>                                     <td>version.c</td></tr>
<tr><td><strong>:r</strong></td>                                   <td>src/version</td></tr>
<tr><td><strong>:p:r</strong></td>                  <td>/home/mool/vim/src/version</td></tr>
<tr><td><strong>:t:r</strong></td>                                     <td>version</td></tr>
<tr><td><strong>:e</strong></td>                                               <td>c</td></tr>
<tr><td><strong>:s?version?main?</strong></td>                     <td>src/main.c</td></tr>
<tr><td><strong>:s?version?main?:p</strong></td>    <td>/home/mool/vim/src/main.c</td></tr>
<tr><td><strong>:p:gs?/?\\?</strong></td>           <td>\home\mool\vim\src\version.c</td></tr>
</table>

<p />
]]></content:encoded>
			<wfw:commentRss>http://blog.kanru.info/archives/487/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
