<?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>易水博客 &#187; 文本处理</title>
	<atom:link href="http://easwy.com/blog/archives/category/text/feed/" rel="self" type="application/rss+xml" />
	<link>http://easwy.com/blog</link>
	<description>关注Linux, Java, 开源软件和嵌入式系统</description>
	<lastBuildDate>Sun, 07 Mar 2010 10:00:00 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Windows下cscope -q选项出错的解决</title>
		<link>http://easwy.com/blog/archives/cscope_sort_option_on_windows/</link>
		<comments>http://easwy.com/blog/archives/cscope_sort_option_on_windows/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 02:50:07 +0000</pubDate>
		<dc:creator>Easwy</dc:creator>
				<category><![CDATA[开发编程]]></category>
		<category><![CDATA[开源软件]]></category>
		<category><![CDATA[文本处理]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://easwy.com/blog/?p=1021</guid>
		<description><![CDATA[ 以前曾有网友留言，在windows下使用cscope时，使用-q选项出现如下提示：

D:\Temp> cscope -Rbkq
Input file specified two times.

cscope: cannot create inverted index; ignoring -q option
cscope: removed files ncscope.in.out and ncscope.po.out 

当时Easwy以为是windows版本的cscope不支持-q选项。 网友Liang Feng提醒说是由于没有找到合适的sort程序，Easwy又做了一个实验，找到了解决此问题的办法。

<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/advanced-vim-skills-cscope/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 程序员的利器 &#8211; cscope'>vi/vim使用进阶: 程序员的利器 &#8211; cscope</a></li>
<li><a href='http://easwy.com/blog/archives/install-cscope-to-home/' rel='bookmark' title='Permanent Link: 如何将cscope安装到指定目录'>如何将cscope安装到指定目录</a></li>
<li><a href='http://easwy.com/blog/archives/vim-cscope-ctags/' rel='bookmark' title='Permanent Link: vi/Vim + Cscope/Ctags'>vi/Vim + Cscope/Ctags</a></li>
</div><div class="fixed"></div>]]></description>
			<content:encoded><![CDATA[<p>
    以前曾有网友留言，在windows下使用cscope时，使用-q选项出现如下提示：
  </p>
<pre class="programlisting">
D:\Temp&gt; cscope -Rbkq
Input file specified two times.

cscope: cannot create inverted index; ignoring -q option
cscope: removed files ncscope.in.out and ncscope.po.out </pre>
<p>
    当时<a class="ulink" href="http://easwy.com/blog/" target="_top">Easwy</a>以为是windows版本的cscope不支持-q选项。
  </p>
<p>
    不过网友Liang Feng昨天<a class="ulink" href="http://easwy.com/blog/archives/advanced-vim-skills-cscope/#comment-2116" target="_top">留言</a>说：
  </p>
<pre class="programlisting">
Windows版本的cscope是支持-q选项的，出现以上错误是因为没找到合适的sort命令。所以只要cscope进程的工作目录下有GNU版本的sort就可以了。注意是进程的工作目录，不是可执行程序的目录。具体原因看一下cscope的代码片段。

build.c

#ifdef WIN32
snprintf(sortcommand, sizeof(sortcommand), “set LC_ALL=C &amp;&amp; sort -T %s %s”, tmpdir, temp1);
#else
snprintf(sortcommand, sizeof(sortcommand), “env LC_ALL=C sort -T %s %s”, tmpdir, temp1);
#endif </pre>
<p>
    于是重新做了一下试验。在安装了Cygwin后，在cygwin的shell界面中使用cscope，没有出现上面的错误提示。但如果打开windows的命令行窗口cmd.exe，在里面执行cscope，则会出现上面的错误。
  </p>
<p>
    在仔细比较了cygwin和cmd.exe的环境后发现，原来是Windows自带的sort.exe搞的鬼。
  </p>
<p>
    在cygwin的shell窗口中，PATH环境变量的设置会使其先找到GNU版的sort.exe，所以上述cscope命令执行可以成功。但在cmd.exe窗口中，PATH环境变量会使其先找到windows自带的sort.exe而不是GNU sort.exe，所以会出现上面的错误提示。
  </p>
<p>
    知道了问题的原因，解决方法就很简单了，我们可以写一个批处理程序，在此程序中重设PATH环境变量，使cscope使用GNU版的sort.exe。示例程序如下：
  </p>
<pre class="programlisting">
D:\Temp&gt; type cs.bat
@echo off
set path=c:\cygwin\bin;
cscope -Rbkq </pre>
<p>
    在这个批处理里，首先把path环境变量指向<span class="emphasis"><em>c:\cygwin\bin;</em></span>，我的cscope.exe和GNU版的sort.exe都在此目录中。接下来现执行cscope命令，现在它使用的就是GNU版的sort.exe了。
  </p>
<p>
    在此感谢网友Liang Feng，谢谢他的提醒。
  </p>
<p>    更多内容，请阅读<a class="ulink" href="http://easwy.com/blog/" target="_top">易水博客</a>上的其它文章。
  </p>
<div class="posturl">
<p><span class="bold"><strong>原创文章，请阅读页脚的<a href="#license">许可方式</a>，转载请注明：</strong></span>转载自<a class="link" href="http://easwy.com/blog/" target="_top">易水博客</a> [ <a class="link" href="http://easwy.com/blog/" target="_top">http://easwy.com/blog/</a> ]</p>
<p><span class="bold"><strong>本文链接地址:</strong></span> <a class="link" href="http://easwy.com/blog/archives/cscope_sort_option_on_windows/" target="_top">http://easwy.com/blog/archives/cscope_sort_option_on_windows/</a></p>
</div>
<p style="margin-top: 0; margin-bottom: 15px; color: #888888; font-size: 80%; font-style: italic">文章的脚注信息由WordPress的<a href="http://easwy.com/blog/wordpress/wp-posturl/" style="color: #8888FF; text-decoration: underline;">wp-posturl插件</a>自动生成</p>


<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/advanced-vim-skills-cscope/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 程序员的利器 &#8211; cscope'>vi/vim使用进阶: 程序员的利器 &#8211; cscope</a></li>
<li><a href='http://easwy.com/blog/archives/install-cscope-to-home/' rel='bookmark' title='Permanent Link: 如何将cscope安装到指定目录'>如何将cscope安装到指定目录</a></li>
<li><a href='http://easwy.com/blog/archives/vim-cscope-ctags/' rel='bookmark' title='Permanent Link: vi/Vim + Cscope/Ctags'>vi/Vim + Cscope/Ctags</a></li>
</div><div class="fixed"></div>]]></content:encoded>
			<wfw:commentRss>http://easwy.com/blog/archives/cscope_sort_option_on_windows/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>解决安装Eclim后Vim Taglist插件工作不正常的问题</title>
		<link>http://easwy.com/blog/archives/vim-taglist-plugin-not-work-after-installing-eclim/</link>
		<comments>http://easwy.com/blog/archives/vim-taglist-plugin-not-work-after-installing-eclim/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 13:38:26 +0000</pubDate>
		<dc:creator>Easwy</dc:creator>
				<category><![CDATA[文本处理]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://easwy.com/blog/?p=1004</guid>
		<description><![CDATA[今天启动vi后，发现Taglist窗口不能正常显示文件中的标签。于是赶紧按照Taglist FAQ中列出的步骤检查了一遍(使用命令:help taglist-faq查看Taglist的FAQ)。 最终发现原来是新安装的eclim造成的...

<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/advanced-vim-skills-taglist-plugin/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 使用taglist插件'>vi/vim使用进阶: 使用taglist插件</a></li>
<li><a href='http://easwy.com/blog/archives/maven-build-eclipse-project-failed/' rel='bookmark' title='Permanent Link: 使用mvn eclipse:eclipse生成eclipse工程文件失败'>使用mvn eclipse:eclipse生成eclipse工程文件失败</a></li>
<li><a href='http://easwy.com/blog/archives/use_http_proxy_for_git/' rel='bookmark' title='Permanent Link: Linux使用笔记: 使用代理服务器访问git版本库'>Linux使用笔记: 使用代理服务器访问git版本库</a></li>
</div><div class="fixed"></div>]]></description>
			<content:encoded><![CDATA[<p>
    今天启动vi后，发现Taglist窗口不能正常显示文件中的标签。于是赶紧按照Taglist FAQ中列出的步骤检查了一遍(使用命令<span class="command"><strong>:help taglist-faq</strong></span>查看Taglist的FAQ)。
  </p>
<p>
    当执行下面的命令时，输出如下：
  </p>
<pre class="screen">

:echo system(Tlist_Ctags_Cmd . ' --version')
connect: Connection refused </pre>
<p>
    正常情况下，这条命令应该会输出Taglist插件的版本号，但现在显示的却是<span class="emphasis"><em>connect: Connection refused</em></span>。于是查看了一下<span class="emphasis"><em>Tlist_Ctags_Cmd</em></span>变量的值：
  </p>
<pre class="screen">
:echo Tlist_Ctags_Cmd
"/usr/share/eclipse/eclim" -command taglist -c "/usr/bin/ctags" </pre>
<p>    这才想起，<a class="ulink" href="http://easwy.com/blog/" target="_top">Easwy</a>前些天安装了Eclim，用来在vim中使用Eclipse的功能。Eclim的作者对ctags和Taglist进行了加强，并且把Tlist_Ctags_Cmd替换成了他自己的版本。所以如果不启动eclimd的话，就会出现上面的错误。
  </p>
<p>
    知道了问题的原因，解决起来就简单了。使用<span class="command"><strong>/usr/share/eclipse/eclimd</strong></span>启动了eclimd后，Taglist窗口就能够正常显示了。不过Easwy暂时不想使用eclim提供的Taglist功能，所以在<span class="emphasis"><em>~/.vimrc</em></span>中增加了下面的配置：
  </p>
<pre class="programlisting">
let g:EclimTaglistEnabled=0 </pre>
<p>
    这样设置后，再启动vim，使用又是官方版本的Taglist了。
  </p>
<p>
    更多内容，请阅读<a class="ulink" href="http://easwy.com/blog/" target="_top">Easwy的博客</a>上的其它文章。
  </p>
<div class="posturl">
<p><span class="bold"><strong>原创文章，请阅读页脚的<a href="#license">许可方式</a>，转载请注明：</strong></span>转载自<a class="link" href="http://easwy.com/blog/" target="_top">易水博客</a> [ <a class="link" href="http://easwy.com/blog/" target="_top">http://easwy.com/blog/</a> ]</p>
<p><span class="bold"><strong>本文链接地址:</strong></span> <a class="link" href="http://easwy.com/blog/archives/vim-taglist-plugin-not-work-after-installing-eclim/" target="_top">http://easwy.com/blog/archives/vim-taglist-plugin-not-work-after-installing-eclim/</a></p>
</div>
<p style="margin-top: 0; margin-bottom: 15px; color: #888888; font-size: 80%; font-style: italic">文章的脚注信息由WordPress的<a href="http://easwy.com/blog/wordpress/wp-posturl/" style="color: #8888FF; text-decoration: underline;">wp-posturl插件</a>自动生成</p>


<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/advanced-vim-skills-taglist-plugin/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 使用taglist插件'>vi/vim使用进阶: 使用taglist插件</a></li>
<li><a href='http://easwy.com/blog/archives/maven-build-eclipse-project-failed/' rel='bookmark' title='Permanent Link: 使用mvn eclipse:eclipse生成eclipse工程文件失败'>使用mvn eclipse:eclipse生成eclipse工程文件失败</a></li>
<li><a href='http://easwy.com/blog/archives/use_http_proxy_for_git/' rel='bookmark' title='Permanent Link: Linux使用笔记: 使用代理服务器访问git版本库'>Linux使用笔记: 使用代理服务器访问git版本库</a></li>
</div><div class="fixed"></div>]]></content:encoded>
			<wfw:commentRss>http://easwy.com/blog/archives/vim-taglist-plugin-not-work-after-installing-eclim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vi在启动时没有响应问题的解决</title>
		<link>http://easwy.com/blog/archives/vim_no_response_when_term_type_is_linux/</link>
		<comments>http://easwy.com/blog/archives/vim_no_response_when_term_type_is_linux/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 01:07:48 +0000</pubDate>
		<dc:creator>Easwy</dc:creator>
				<category><![CDATA[文本处理]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://easwy.com/blog/?p=994</guid>
		<description><![CDATA[最近Easwy在某台服务器上启动vi时，总出现vi没有响应的情况。 现象是输入vi命令后，vi窗口显示不出来，并且此时终端也没有响应，不能输入任何命令。只能用ssh再登录一个终端，在新登录终端上使用kill命令杀死此vi进程。
经过认真排查，终于把问题定位到vimrc中的一个设置上......

<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/two-sed-tips/' rel='bookmark' title='Permanent Link: 两个sed小技巧'>两个sed小技巧</a></li>
<li><a href='http://easwy.com/blog/archives/vim-taglist-plugin-not-work-after-installing-eclim/' rel='bookmark' title='Permanent Link: 解决安装Eclim后Vim Taglist插件工作不正常的问题'>解决安装Eclim后Vim Taglist插件工作不正常的问题</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-use-ctags-tag-file/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 使用标签(tag)文件'>vi/vim使用进阶: 使用标签(tag)文件</a></li>
</div><div class="fixed"></div>]]></description>
			<content:encoded><![CDATA[<p>
    最近<a class="ulink" href="http://easwy.com/blog/" target="_top">Easwy</a>在某台服务器上启动vi时，总出现vi没有响应的情况。 现象是输入<span class="command"><strong>vi</strong></span>命令后，vi窗口显示不出来，并且此时终端也没有响应，不能输入任何命令。只能用ssh再登录一个终端，在新登录终端上使用<span class="command"><strong>kill</strong></span>命令杀死此vi进程，此时运行vi的终端中显示如下信息：
  </p>
<pre class="programlisting">
*** info [lib/liblow.c(329)]:
/dev/gpmctl: Interrupted system call
*** err [lib/liblow.c(336)]:
/dev/gpmctl: No such device or address
Vim: Caught deadly signal TERM
Vim: Finished.
Terminated </pre>
<p>
    在偶然中发现，使用putty登录这台服务器时，运行<span class="command"><strong>vi</strong></span>命令没有问题。因此怀疑和<span class="emphasis"><em>TERM</em></span>环境变量的设置有关。检查putty中此环境变量：
  </p>
<pre class="programlisting">
$ echo $TERM
xterm </pre>
<p>
    而在vi没响应的终端里，TERM环境变量的值为：
  </p>
<pre class="programlisting">
$ echo $TERM
linux </pre>
<p>
    如果把TERM环境变量的值也改成<span class="emphasis"><em>xterm</em></span>，那么vi可以正常启动。看来的确是TERM环境变量引起的这个问题。后来又发现，如果在linux screen中启动vim的话(此时TERM环境变量的值为<span class="emphasis"><em>screen</em></span>)，vim也不能正常启动。
  </p>
<p>
    那么为什么TERM环境变量的取值会影响vim的启动呢？经过认真排查，终于把问题定位到vimrc中的一个设置上：
  </p>
<pre class="programlisting">
set mouse=a </pre>
<p>
    如果在.vimrc中设置了<span class="command"><strong>set mouse=a</strong></span>，那么在TERM环境变量为linux或screen的终端上，vi启动时就会没有反应；如果去掉这个设置，不管TERM环境变量的取值是什么，vi都能正常启动。
  </p>
<p>
    阅读了vim的帮助手册，手册中说，这个选项只在一些特定类型的终端上支持，比如xterm、使能了gpm的linux终端等。看来问题是出在gpm上，从上面vim被kill后的打印中也可以看出，是/dev/gpmctl设备无法访问导致vi失去反应的。
  </p>
<p>    后来在vimrc中把<span class="command"><strong>set mouse=a</strong></span>一句去掉，vi终于正常了。如果有其它朋友也遇到类似的问题，不妨试一下上述解决方案。
  </p>
<p>
    更多关于<a class="ulink" href="http://easwy.com/blog/archives/tag/vim/" target="_top">vim</a>的内容，请阅读<a class="ulink" href="http://easwy.com/blog/" target="_top">Easwy的博客</a>上的其它文章。
  </p>
<div class="posturl">
<p><span class="bold"><strong>原创文章，请阅读页脚的<a href="#license">许可方式</a>，转载请注明：</strong></span>转载自<a class="link" href="http://easwy.com/blog/" target="_top">易水博客</a> [ <a class="link" href="http://easwy.com/blog/" target="_top">http://easwy.com/blog/</a> ]</p>
<p><span class="bold"><strong>本文链接地址:</strong></span> <a class="link" href="http://easwy.com/blog/archives/vim_no_response_when_term_type_is_linux/" target="_top">http://easwy.com/blog/archives/vim_no_response_when_term_type_is_linux/</a></p>
</div>
<p style="margin-top: 0; margin-bottom: 15px; color: #888888; font-size: 80%; font-style: italic">文章的脚注信息由WordPress的<a href="http://easwy.com/blog/wordpress/wp-posturl/" style="color: #8888FF; text-decoration: underline;">wp-posturl插件</a>自动生成</p>


<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/two-sed-tips/' rel='bookmark' title='Permanent Link: 两个sed小技巧'>两个sed小技巧</a></li>
<li><a href='http://easwy.com/blog/archives/vim-taglist-plugin-not-work-after-installing-eclim/' rel='bookmark' title='Permanent Link: 解决安装Eclim后Vim Taglist插件工作不正常的问题'>解决安装Eclim后Vim Taglist插件工作不正常的问题</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-use-ctags-tag-file/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 使用标签(tag)文件'>vi/vim使用进阶: 使用标签(tag)文件</a></li>
</div><div class="fixed"></div>]]></content:encoded>
			<wfw:commentRss>http://easwy.com/blog/archives/vim_no_response_when_term_type_is_linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>vi/vim使用进阶: vimgdb调试时的常见问题及解决</title>
		<link>http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb-faq/</link>
		<comments>http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb-faq/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 07:05:54 +0000</pubDate>
		<dc:creator>Easwy</dc:creator>
				<category><![CDATA[文本处理]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://easwy.com/blog/?p=985</guid>
		<description><![CDATA[在文章在vim中使用gdb调试 - vimgdb中我介绍了如何使用vimgdb补丁在vim/gvim中调试程序。后来陆续有一些读者反馈了他们在使用中遇到的问题。在本文中总结一下。

<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/advanced-vim-skills-save-project-configuration/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 保存项目相关配置'>vi/vim使用进阶: 保存项目相关配置</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 在VIM中使用GDB调试 &#8211; 使用vimgdb'>vi/vim使用进阶: 在VIM中使用GDB调试 &#8211; 使用vimgdb</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-solve-compile-problem/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: vim编译中遇到的问题及解决方法'>vi/vim使用进阶: vim编译中遇到的问题及解决方法</a></li>
</div><div class="fixed"></div>]]></description>
			<content:encoded><![CDATA[<p><span class="bold"><strong>&lt;&lt; </strong></span><a class="link" href="http://easwy.com/blog/archives/advanced-vim-skills-catalog/" target="_top">返回vim使用进阶: 目录</a>
</p>
<p>
    在文章<a class="link" href="http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb/" target="_top">在vim中使用gdb调试 &#8211; vimgdb</a>中我介绍了如何使用vimgdb补丁在vim/gvim中调试程序。后来陆续有一些读者反馈了他们在使用中遇到的问题。在本文中总结一下。
  </p>
<p><span class="bold"><strong>[ 问题一: 运行GDB命令时提示"unable to read from GDB pseudo tty"? ]</strong></span></p>
<p>    有读者在试图执行GDB命令时，出现上面的提示。
  </p>
<p>
    出现这个问题是由于没有正确设置gdbprg变量。使用下面的命令设置一下GDB程序的位置即可解决此问题：
  </p>
<pre class="programlisting">
:set gdbprg=/path/to/gdb </pre>
<p>
    请把上面的<span class="emphasis"><em>/path/to/gdb</em></span>替换成你计算机中GDB程序所在的路径。你可以把这句话加到你的<a class="link" href="http://easwy.com/blog/archives/advanced-vim-skills-introduce-vimrc/" target="_top">vimrc</a>中，这样每次启动vi时会自动设置此变量。
  </p>
<p><span class="bold"><strong>[ 问题二： 提示"GDB busy: command discarded, please try again"? ]</strong></span></p>
<p>
    当你的程序需要用<span class="emphasis"><em>scanf()</em></span>或者<span class="emphasis"><em>getchar()</em></span>这类函数读取用户输入时，你可能会看到过这样的提示：
  </p>
<div class="blockquote">
<blockquote class="blockquote">
<p>GDB busy: command discarded, please try again
  </p></blockquote>
</div>
<p>
    出现这个提示，说明你的GDB正在等待用户输入，所以无法响应你所输入的其它GDB命令。
  </p>
<p>
    在使用vimgdb时，如果你的程序需要读取用户输入，你必须通过GDB的<span class="command"><strong>tty</strong></span>命令或<span class="command"><strong>run</strong></span>来重定向程序的标准输入。
  </p>
<p>
    首先，你打开一个终端(可以是xterm/rxvt/urxvt/putty/&#8230;)，在此终端内输入命令<span class="command"><strong>tty</strong></span>：
  </p>
<pre class="programlisting">

$ tty
/dev/pts/17 </pre>
<p>
    这条命令用来显示此终端所使用的设备文件名。获得了这个设备文件名后，你就可以重定向程序的标准输入输出到这个终端，在GDB中输入下面的命令：
  </p>
<pre class="programlisting">
tty /dev/pts/17 </pre>
<p>
    执行完这条命令后，程序的标准输入/输出就被重定向到<span class="emphasis"><em>/dev/pts/17</em></span>了，这样，当执行到<span class="emphasis"><em>scanf()</em></span>或<span class="emphasis"><em>getchar()</em></span>函数时，切换到那个终端输入指定参数，然后回车，程序就会继续向下执行。
  </p>
<p><span class="bold"><strong>[ 问题三： vimgdb可以在windows下使用吗? ]</strong></span></p>
<p>    vimgdb不能在windows下使用。不过你可以用作者提供的Clewn或Pyclewn。这两个程序可以在Windows的Vim/Gvim中使用。
  </p>
<p>
    这里有我写的一篇关于pyclewn的教程:<a class="link" href="http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-pyclewn/" target="_top">在VIM中使用GDB调试 &#8211; pyclewn</a>，clewn的用法与之类似。
  </p>
<p><span class="bold"><strong>[ 问题四： 按空格后vimgdb的命令窗口没有弹出来? ]</strong></span></p>
<p>
    首先确保vimgdb的按键定义文件存在。执行下面的命令：
  </p>
<pre class="programlisting">
:set runtimepath?  </pre>
<p>
    检查这条命令所列出的所有目录，如果任一目录中包含<span class="emphasis"><em>macros/gdb_mappings.vim</em></span>文件，说明你的按键映射文件已经存在。如果你没有找到该文件，到vimgdb目录中找到这个命令，拷贝到上述任意一个目录中。
  </p>
<p>    接下来用下面的命令加载vimgdb的键绑定：
  </p>
<pre class="programlisting">
:run macros/gdb_mappings.vim </pre>
<p>
    现在，你应该可以使用vimgdb所定义的快捷键了。
  </p>
<p>
    <span class="bold"><strong>[参考文档]</strong></span>
  </p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem"><a class="link" href="http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb/" target="_top">在vim中使用gdb调试</a></li>
<li class="listitem"><a class="link" href="http://gemma.apple.com/mac/library/documentation/DeveloperTools/gdb/gdb/gdb_5.html#SEC24" target="_blank">Your program&#8217;s input and output</a></li>
<li class="listitem"><a class="link" href="http://clewn.sourceforge.net/index.html" target="_blank">http://clewn.sourceforge.net/index.html</a></li>
</ul>
</div>
<p>
    <span class="bold"><strong>&lt;&lt; </strong></span><a class="link" href="http://easwy.com/blog/archives/advanced-vim-skills-catalog/" target="_top">返回vim使用进阶: 目录</a></p>
<div class="posturl">
<p><span class="bold"><strong>原创文章，请阅读页脚的<a href="#license">许可方式</a>，转载请注明：</strong></span>转载自<a class="link" href="http://easwy.com/blog/" target="_top">易水博客</a> [ <a class="link" href="http://easwy.com/blog/" target="_top">http://easwy.com/blog/</a> ]</p>
<p><span class="bold"><strong>本文链接地址:</strong></span> <a class="link" href="http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb-faq/" target="_top">http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb-faq/</a></p>
</div>
<p style="margin-top: 0; margin-bottom: 15px; color: #888888; font-size: 80%; font-style: italic">文章的脚注信息由WordPress的<a href="http://easwy.com/blog/wordpress/wp-posturl/" style="color: #8888FF; text-decoration: underline;">wp-posturl插件</a>自动生成</p>


<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/advanced-vim-skills-save-project-configuration/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 保存项目相关配置'>vi/vim使用进阶: 保存项目相关配置</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 在VIM中使用GDB调试 &#8211; 使用vimgdb'>vi/vim使用进阶: 在VIM中使用GDB调试 &#8211; 使用vimgdb</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-solve-compile-problem/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: vim编译中遇到的问题及解决方法'>vi/vim使用进阶: vim编译中遇到的问题及解决方法</a></li>
</div><div class="fixed"></div>]]></content:encoded>
			<wfw:commentRss>http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb-faq/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>使用gvim+pyclewn+gdbserver进行远程调试</title>
		<link>http://easwy.com/blog/archives/advanced-vim-skills-vim-gdbserver/</link>
		<comments>http://easwy.com/blog/archives/advanced-vim-skills-vim-gdbserver/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 08:55:30 +0000</pubDate>
		<dc:creator>Easwy</dc:creator>
				<category><![CDATA[嵌入系统]]></category>
		<category><![CDATA[开源软件]]></category>
		<category><![CDATA[文本处理]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[调试]]></category>

		<guid isPermaLink="false">http://easwy.com/blog/?p=953</guid>
		<description><![CDATA[本文介绍如何在gvim中使用pyclewn和gdbserver进行远程调试。远程调试的命令也可以直接在gdb或ddd中使用。

<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-pyclewn/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 在VIM中使用GDB调试 &#8211; 使用pyclewn'>vi/vim使用进阶: 在VIM中使用GDB调试 &#8211; 使用pyclewn</a></li>
<li><a href='http://easwy.com/blog/archives/cscope_sort_option_on_windows/' rel='bookmark' title='Permanent Link: Windows下cscope -q选项出错的解决'>Windows下cscope -q选项出错的解决</a></li>
<li><a href='http://easwy.com/blog/archives/install-cscope-to-home/' rel='bookmark' title='Permanent Link: 如何将cscope安装到指定目录'>如何将cscope安装到指定目录</a></li>
</div><div class="fixed"></div>]]></description>
			<content:encoded><![CDATA[<p>
    在以前的文章中，Easwy介绍了如何<a class="link" href="http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-pyclewn/" target="_top">使用pyclewn在gvim中调试</a>。网友yorker留言询问如何在vim中远程调试服务器上的程序而不需要登录服务器。这就涉及到远程调试的话题了。
  </p>
<p>
    所谓远程调试，顾名思义，就是在本地调试运行在远端设备上的程序。远程调试在嵌入式系统的开发上应用的比较多。嵌入式设备上内存、磁盘空间都比较有限，可能无法容纳整个gdb的调试环境和符号表；即便可以容纳，也需要对gdb进行交叉编译，比较麻烦，所以更常用远程调试的办法。像网友yorker这样在本地调试远端服务器上的程序，也是一种应用。
  </p>
<p>
    远程调试最简单的办法是使用gdbserver。gdbserver是一个非常小的程序，大小不到100K，因此可以方便的拷贝到嵌入式设备上，交叉编译也很简单。使用gdbserver，就可以使你的程序与远端的GDB调试器通讯，接收并执行调试命令。
  </p>
<p>
    gdbserver在大多数Linux系统中已经包含，不需要特别安装。如果你需要交叉编译，到<a class="link" href="http://www.gnu.org/software/gdb/download/" target="_blank">GNU GDB网站</a>上下载gdb的源代码，在里面你可以找到gdbserver。
  </p>
<p>
    本文将主要介绍如何在vim使用pyclewn进行远程调试(关于pyclewn的介绍，参见Easwy的的另外一篇文章：<a class="link" href="http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-pyclewn/" target="_top">vim使用进阶: 在vim中进行GDB调试 &#8211; 使用pyclewn</a>)。实际上，本文中所涉及的命令都是常用的远程调试命令，你可以直接使用gdb或ddd来执行这些命令，进行远程调试。
  </p>
<p>
    我们还使用在<a class="link" href="http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-pyclewn/" target="_top">pyclewn</a>一文中的程序做为调试示例，对那个程序做了一点修改，原来该程序需要由标准输入读取一个数字，现在则改为由命令行参数中传入。修改后的程序在<a class="link" href="http://easwy.com/blog/uploads/2009/11/pyclewn-ex.zip" target="_top">这里</a>下载。
  </p>
<p>
    现在我们准备开始调试。我们把编译好的二进制程序拷贝到一个名为Easwy_remote的计算机，然后在Easwy_remote上执行：
  </p>
<pre class="programlisting">
gdbserver Easwy_local:333 ./factorial 4 </pre>
<p>
    上面的命令执行完后，屏幕输出如下(你的输出可能稍有不同)：
  </p>
<pre class="programlisting">
Process ./factorial created; pid = 7532
Listening on port 333 </pre>
<p>
    上面的gdbserver命令的含义是：使用gdbserver启动<span class="emphasis"><em>./factorial</em></span>程序，并传入参数<span class="emphasis"><em>4</em></span>，而gdbserver监听在333端口上，等待远程GDB程序中的连接。命令中的Easwy_local表明允许来自主机Easwy_local的连接，不过目前的gdbserver版本实际上是不检测所连接的主机的。
  </p>
<p>
    现在，我们在Easwy_local主机上启动pyclewn，并在所打开的gvim窗口中执行下面的命令：
  </p>
<pre class="programlisting">
:e main.c
:Cmapkeys
:Cfile factorial
:Cbreak 15
:Ctarget remote Easwy_remote:333
:Ccontinue</pre>
<p>
    上面的命令，首先打开main.c文件，然后执行pyclewn提供的mapkeys命令，加载pyclewn的按键映射。然后使用file命令加载所要调试的程序，并在main.c的第15行设置一个断点。
  </p>
<p>
    需要注意的是<span class="command"><strong>target remote</strong></span>命令。这条命令告诉GDB连接到主机Easwy_remote的333端口，进行调试。执行完这条命令，我们就连接到了远端运行的程序。接下来就可以像调试本地程序那样进行调试了，在上面Easwy使用的<span class="command"><strong>continue</strong></span>命令，使程序执行到断点处，然后继续调试。
  </p>
<p>
    下面是远程调试的屏幕抓图：
  </p>
<div class="informalfigure">
<div class="mediaobject" align="center"><img src="http://easwy.com/blog/uploads/2009/11/gdbserver-300x240.png" align="middle"></div>
<div class="caption" align="center"><a class="link" href="http://easwy.com/blog/uploads/2009/11/gdbserver-1024x819.png" target="_blank">点击查看大图</a></div>
</div>
<p>
    gdbserver不仅可以像本文中这样启动一个调试进程，它还可以连接到一个已经运行的进程上对其进行调试，例如，用<span class="command"><strong>gdbserver Easwy_local:333 &#8211;attach 1235</strong></span>命令就可以使gdbserver连接到进程ID为1235的进程。
  </p>
<p>
    更多关于vi的内容，请参见<a class="link" href="http://easwy.com/blog/" target="_top">Easwy的博客</a>上的其它文章。
  </p>
<div class="itemizedlist">
<ul type="disc">
<li>
      vim帮助文件
    </li>
<li><a class="link" href="http://vimcdoc.sourceforge.net/" target="_blank">vim中文手册</a></li>
<li><a class="link" href="http://pyclewn.sourceforge.net/" target="_blank">Pyclewn</a></li>
</ul>
</div>
<div class="posturl">
<p><span class="bold"><strong>原创文章，请阅读页脚的<a href="#license">许可方式</a>，转载请注明：</strong></span>转载自<a class="link" href="http://easwy.com/blog/" target="_top">易水博客</a> [ <a class="link" href="http://easwy.com/blog/" target="_top">http://easwy.com/blog/</a> ]</p>
<p><span class="bold"><strong>本文链接地址:</strong></span> <a class="link" href="http://easwy.com/blog/archives/advanced-vim-skills-vim-gdbserver/" target="_top">http://easwy.com/blog/archives/advanced-vim-skills-vim-gdbserver/</a></p>
</div>
<p style="margin-top: 0; margin-bottom: 15px; color: #888888; font-size: 80%; font-style: italic">文章的脚注信息由WordPress的<a href="http://easwy.com/blog/wordpress/wp-posturl/" style="color: #8888FF; text-decoration: underline;">wp-posturl插件</a>自动生成</p>


<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-pyclewn/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 在VIM中使用GDB调试 &#8211; 使用pyclewn'>vi/vim使用进阶: 在VIM中使用GDB调试 &#8211; 使用pyclewn</a></li>
<li><a href='http://easwy.com/blog/archives/cscope_sort_option_on_windows/' rel='bookmark' title='Permanent Link: Windows下cscope -q选项出错的解决'>Windows下cscope -q选项出错的解决</a></li>
<li><a href='http://easwy.com/blog/archives/install-cscope-to-home/' rel='bookmark' title='Permanent Link: 如何将cscope安装到指定目录'>如何将cscope安装到指定目录</a></li>
</div><div class="fixed"></div>]]></content:encoded>
			<wfw:commentRss>http://easwy.com/blog/archives/advanced-vim-skills-vim-gdbserver/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>vi/vim使用进阶: 在VIM中使用GDB调试 &#8211; 使用pyclewn</title>
		<link>http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-pyclewn/</link>
		<comments>http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-pyclewn/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 10:12:38 +0000</pubDate>
		<dc:creator>Easwy</dc:creator>
				<category><![CDATA[开源软件]]></category>
		<category><![CDATA[文本处理]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://easwy.com/blog/?p=938</guid>
		<description><![CDATA[本文介绍了如何使用pyclewn在gvim中用gdb调试程序。pyclewn是vimgdb作者的另外一个作品，使用它可以使gvim在UNIX/LINUX以及windows上与gdb集成调试。

<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 在VIM中使用GDB调试 &#8211; 使用vimgdb'>vi/vim使用进阶: 在VIM中使用GDB调试 &#8211; 使用vimgdb</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb-faq/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: vimgdb调试时的常见问题及解决'>vi/vim使用进阶: vimgdb调试时的常见问题及解决</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-vim-gdbserver/' rel='bookmark' title='Permanent Link: 使用gvim+pyclewn+gdbserver进行远程调试'>使用gvim+pyclewn+gdbserver进行远程调试</a></li>
</div><div class="fixed"></div>]]></description>
			<content:encoded><![CDATA[<p>
    <span class="bold"><strong>&lt;&lt; </strong></span><a class="link" href="http://easwy.com/blog/archives/advanced-vim-skills-catalog/" target="_top">返回vim使用进阶: 目录</a>
</p>
<p>
    本节所用命令的帮助入口：
  </p>
<pre class="programlisting">
:help pyclewn </pre>
<p>
    在前面的文章中介绍了<a class="link" href="http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb/" target="_top">使用vimgdb在vim中调试程序</a>，这种方法允许在终端中的vim，以及图形化的gvim中调试你的程序。不过它的局限也是很明显的：首先，它需要给vim的源代码打补丁并重新编译vim；另外，它只能在Linux下使用，不能在windows上进行gdb调试。
  </p>
<p>
    要想在vim中调试，除了使用vimgdb外，还可以使用clewn和pyclewn，这两个工具也是vimgdb的作者提供的，用法基本相同。区别在于，clewn是使用C语言编写的，而pyclewn是使用python语言编写的，具有更好的跨平台能力。本文主要介绍pyclewn工具。
  </p>
<p>
    使用pyclewn需要计算机上安装有python 2.4(或以上版本)以及gvim 7.0或以上版本。需注意的是，pyclewn只能与gvim配合使用，它不支持终端中的vim(clewn也是如此)。另外，gvim在编译时需要使能<span class="bold"><strong>netbeans_intg</strong></span>特性和<span class="bold"><strong>autocmd</strong></span>特性。
  </p>
<p>
    如果上面的条件都已经满足，到<a class="link" href="http://sourceforge.net/projects/pyclewn/" target="_top">http://sourceforge.net/projects/pyclewn/</a>下载pyclewn，下载后解压准备安装。安装pyclewn很简单，在我的计算机上，gvim安装目录在我的HOME目录，因此，也把pyclewn安装在HOME目录，使用如下命令：
  </p>
<pre class="programlisting">
cd /home/easwy/download/pyclewn-0.7/
vimdir=$HOME/.vim python setup.py install --home=$HOME </pre>
<p>
    在pyclewn的源码目录中有一个名为<span class="bold"><strong>INSTALL</strong></span>的文件，介绍了如何在UNIX以及windows上安装pyclewn，你可以根据自己的环境决定如何安装pyclewn。
  </p>
<p>
    安装完pyclewn后，启动gvim，执行<span class="command"><strong>:help pyclewn</strong></span>命令，就可以看到pyclewn的帮助文件，里面有很多有用的信息。
  </p>
<p>
    下面通过一个例子讲解一下如何使用pyclewn进行调试。例子中所调试的程序在这里下载：<a class="link" href="http://easwy.com/blog/uploads/2009/10/pyclewn-ex.zip" target="_top">调试程序下载</a>
  </p>
<p>
    首先启动pyclewn。启动pyclewn的办法很简单，在一个终端中执行下面的命令就可以了：
  </p>
<pre class="programlisting">
pyclewn </pre>
<p>
    pyclewn启动时，它会启动一个gvim窗口，我们的调试将在这个gvim窗口中进行。运行pyclewn的终端将做为gdb的控制终端，所调试程序的输入输出都会通过这个终端进行(当然，你也可以在gdb中通过tty命令更改控制终端)。
  </p>
<p>
    接下来，我们在pyclewn所打开的gvim窗口中输入下面的命令，编译该程序，打开要调试的文件，并在文件中设置断点：
  </p>
<pre class="programlisting">
:cd pyclewn-ex
:make
:e main.c
:Cfile factor
:Cbreak 14 </pre>
<p>
    前面三条命令是标准的vim命令，切换到示例程序所在目录，编译该程序，并打开文件main.c。后面两条命令以大写字母C做为起始，这是pyclewn自定义的命令，pyclewn将会把字母C后的命令内容传递给GDB调试器。所以上面两条命令相当于在GDB中执行<span class="command"><strong>file factor</strong></span>和<span class="command"><strong>break 14</strong></span>，加载factor做为被调试的程序，并在main.c的第14行设置一个断点。
  </p>
<p>
    在执行pyclewn自定义的C命令时，pyclewn会在gvim中分隔出一个窗口，用于显示GDB调试器的输入输出。所以，执行完上面命令后，屏幕看起来是这样的：
  </p>
<div class="informalfigure">
<div class="mediaobject" align="center"><img src="http://easwy.com/blog/uploads/2009/10/pyclewn_debug-300x240.png" align="middle"></div>
<div class="caption" align="center"><a class="link" href="http://easwy.com/blog/uploads/2009/10/pyclewn_debug.png" target="_blank">点击查看大图</a></div>
</div>
<p>
    在上面已经设置好断点了，现在就可以开始调试了。pyclewn已经定义了一些调试相关的键映射，我们可以通过下面的命令加载这些键映射：
  </p>
<pre class="programlisting">
:Cmapkeys </pre>
<p>
    执行完这条命令，会在clewn_console中打印出所定义的键映射，我在此不再赘述。在下面的调试过程中，我也会使用几个最常用的映射。
  </p>
<p>
    我们继续调试。我在上面已经定义了一个断点，所以直接按<span class="command"><strong>SHIFT-R</strong></span>键运行程序。程序运行到断点后会停下来，然后我们连按三次<span class="command"><strong>CTRL-N</strong></span>，执行三条语句，现在切换到控制终端，可以看到程序在等待输入，我们输入一个数字，然后按回车。现在看到的屏幕是这样的：
  </p>
<div class="informalfigure">
<div class="mediaobject" align="center"><img src="http://easwy.com/blog/uploads/2009/10/pyclewn_io-300x240.png" align="middle"></div>
<div class="caption" align="center"><a class="link" href="http://easwy.com/blog/uploads/2009/10/pyclewn_io.png" target="_blank">点击查看大图</a></div>
</div>
<p>
    在上面的抓图中，我们把鼠标移动到变量n上，可以看到弹出了一个小气泡，显示变量n的值为4，这和我们输入的数字是一致的。
  </p>
<p>
    接下来再按一次<span class="command"><strong>CTRL-N</strong></span>向下执行一个语句，然后再按<span class="command"><strong>SHIFT-S</strong></span>步进到函数factorial()中，现在gvim会打开文件util/factorial.c。然后用下面的命令，把变量t和i加入到watch窗口中：
  </p>
<pre class="programlisting">
:Cdbgvar t
:Cdbgvar i </pre>
<p>
    上面的命令会创建一个名为<span class="emphasis"><em>(clewn)_dbgvar</em></span>的缓冲区，不过此缓冲区并未显示出来。用下面的命令可以新建一个窗口显示此缓冲区：
  </p>
<pre class="programlisting">
:sb (clewn)_dbgvar </pre>
<p>
    现在屏幕看起来是这样的：
  </p>
<div class="informalfigure">
<div class="mediaobject" align="center"><img src="http://easwy.com/blog/uploads/2009/10/pyclewn_watch_window-300x240.png" align="middle"></div>
<div class="caption" align="center"><a class="link" href="http://easwy.com/blog/uploads/2009/10/pyclewn_watch_window.png" target="_blank">点击查看大图</a></div>
</div>
<p>
    按一次<span class="command"><strong>SHIFT-C</strong></span>使程序运行至结束，我们的调试也就告一段落了。
  </p>
<p>
    从上面的调试过程可以看出，使用pyclewn调试很方便。而且，使用pyclewn也可以在windows上进行调试，不过我没有试过，有兴趣的朋友可以试一下。在windows上调试，可能需要使用cygwin中所带的gdb。
  </p>
<p>
    如果觉得pyclewn缺省所设置的键映射不能满足自己的需求，也可以自己定义更多GDB调试键映射，方法是把pyclewn发行目录中的<span class="emphasis"><em>.clewn_keys.gdb</em></span>拷贝到你的HOME目录，然后修改此文件定制自己的键绑定即可。
  </p>
<pre class="programlisting">
cd /home/easwy/download/pyclewn-0.7/
cp runtime/.clewn_keys.gdb $HOME </pre>
<p>
    要想了解更多关于pyclewn的使用，请阅读pyclewn的帮助手册：<span class="command"><strong>:help pyclewn</strong></span>。
  </p>
<p>
    <span class="bold"><strong>[参考文档]</strong></span>
  </p>
<div class="itemizedlist">
<ul type="disc">
<li>
      vim帮助文件
    </li>
<li><a class="link" href="http://vimcdoc.sourceforge.net/" target="_blank">vim中文手册</a></li>
<li><a class="link" href="http://pyclewn.sourceforge.net/" target="_blank">Pyclewn</a></li>
</ul>
</div>
<p>
    <span class="bold"><strong>&lt;&lt; </strong></span><a class="link" href="http://easwy.com/blog/archives/advanced-vim-skills-catalog/" target="_top">返回vim使用进阶: 目录</a>
</p>
<div class="posturl">
<p><span class="bold"><strong>原创文章，请阅读页脚的<a href="#license">许可方式</a>，转载请注明：</strong></span>转载自<a class="link" href="http://easwy.com/blog/" target="_top">易水博客</a> [ <a class="link" href="http://easwy.com/blog/" target="_top">http://easwy.com/blog/</a> ]</p>
<p><span class="bold"><strong>本文链接地址:</strong></span> <a class="link" href="http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-pyclewn/" target="_top">http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-pyclewn/</a></p>
</div>
<p style="margin-top: 0; margin-bottom: 15px; color: #888888; font-size: 80%; font-style: italic">文章的脚注信息由WordPress的<a href="http://easwy.com/blog/wordpress/wp-posturl/" style="color: #8888FF; text-decoration: underline;">wp-posturl插件</a>自动生成</p>


<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 在VIM中使用GDB调试 &#8211; 使用vimgdb'>vi/vim使用进阶: 在VIM中使用GDB调试 &#8211; 使用vimgdb</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb-faq/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: vimgdb调试时的常见问题及解决'>vi/vim使用进阶: vimgdb调试时的常见问题及解决</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-vim-gdbserver/' rel='bookmark' title='Permanent Link: 使用gvim+pyclewn+gdbserver进行远程调试'>使用gvim+pyclewn+gdbserver进行远程调试</a></li>
</div><div class="fixed"></div>]]></content:encoded>
			<wfw:commentRss>http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-pyclewn/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>使用vim的命令行补全功能</title>
		<link>http://easwy.com/blog/archives/vim-command-line-complete/</link>
		<comments>http://easwy.com/blog/archives/vim-command-line-complete/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 10:35:40 +0000</pubDate>
		<dc:creator>Easwy</dc:creator>
				<category><![CDATA[文本处理]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://easwy.com/blog/?p=930</guid>
		<description><![CDATA[本文回答网友Karl的提问，介绍了vim的命令行补全功能。

<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/advanced-vim-skills-catalog/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 目录'>vi/vim使用进阶: 目录</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-pdf-download/' rel='bookmark' title='Permanent Link: vim使用进阶系列文章PDF版本下载'>vim使用进阶系列文章PDF版本下载</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-archive-up-to-2009/' rel='bookmark' title='Permanent Link: 《vi/vim使用进阶》2009年以前文章打包'>《vi/vim使用进阶》2009年以前文章打包</a></li>
</div><div class="fixed"></div>]]></description>
			<content:encoded><![CDATA[<p>
    网友Karl问:
  </p>
<div class="blockquote">
<blockquote class="blockquote">
   有时，我在VIM中想把一个单词替换成另一个单词，用yw,然后到要被替换的单词那里：dw 然后&#8221;0P，很多个步骤。yw,dw,&#8221;0P,这样子感觉按键多而且不顺手，请问你是怎么替换的？(:s/a/b这种要敲两个单词速度也不快)
  </p></blockquote>
</div>
<p>
    我的回答见这个链接：<a class="link" href="http://easwy.com/blog/archives/an-article-about-how-to-write-vim-script/#comment-947" target="_top">http://easwy.com/blog/archives/an-article-about-how-to-write-vim-script/#comment-947</a>。
  </p>
<p>
    Karl说用替换的方式，要敲两个单词，速度不会很快。其实，如果掌握了命令行补全功能，用替换命令的速度也不会慢。
  </p>
<p>
    例如，我们可以这样操作，首先移到到第一个单词处，使用<span class="command"><strong>&#8220;ayw</strong></span>把这个单词拷贝到a寄存区，然后把光标移动到第二个单词下，接着输入下面的命令：
  </p>
<pre class="programlisting">
    :%s/&lt;C-R&gt;a/&lt;C-R&gt;&lt;C-W&gt;/g </pre>
<p>
    上面的命令使用了两个命令行补全功能，其中<span class="command"><strong>&lt;C-R&gt;a</strong></span>需要按住&lt;CTRL&gt;-R键，这时光标处会显示一个&#8221;，接下来再按a键，这个按键序列的功能是插入a寄存区所保存的内容，在我们的例子里，就是插入第一个单词；后面的<span class="command"><strong>&lt;C-R&gt;&lt;C-W&gt;</strong></span>则是在命令行插入编辑区中光标下的单词，在我们的例子里，编辑区光标下的单词就是第二个单词。
  </p>
<p>
    如果要替换的个数比较多，使用上面的办法就比较好，可以用较少的按键完成替换功能，而且还不用担心输错单词。
  </p>
<p>
    命令行补全的帮助手册为:<span class="command"><strong>c_CTRL-R</strong></span>和<span class="command"><strong>c_CTRL-R_CTRL-W</strong></span>，我们可以看到，使用&lt;C-R&gt;系列命令，不仅可以插入各个暂存区中的内容、光标下的内容，你甚至可以使用一个表达式，来完成更复杂的工具，事实上，很多脚本中就在这样使用。
  </p>
<div class="posturl">
<p><span class="bold"><strong>原创文章，请阅读页脚的<a href="#license">许可方式</a>，转载请注明：</strong></span>转载自<a class="link" href="http://easwy.com/blog/" target="_top">易水博客</a> [ <a class="link" href="http://easwy.com/blog/" target="_top">http://easwy.com/blog/</a> ]</p>
<p><span class="bold"><strong>本文链接地址:</strong></span> <a class="link" href="http://easwy.com/blog/archives/vim-command-line-complete/" target="_top">http://easwy.com/blog/archives/vim-command-line-complete/</a></p>
</div>
<p style="margin-top: 0; margin-bottom: 15px; color: #888888; font-size: 80%; font-style: italic">文章的脚注信息由WordPress的<a href="http://easwy.com/blog/wordpress/wp-posturl/" style="color: #8888FF; text-decoration: underline;">wp-posturl插件</a>自动生成</p>


<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/advanced-vim-skills-catalog/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 目录'>vi/vim使用进阶: 目录</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-pdf-download/' rel='bookmark' title='Permanent Link: vim使用进阶系列文章PDF版本下载'>vim使用进阶系列文章PDF版本下载</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-archive-up-to-2009/' rel='bookmark' title='Permanent Link: 《vi/vim使用进阶》2009年以前文章打包'>《vi/vim使用进阶》2009年以前文章打包</a></li>
</div><div class="fixed"></div>]]></content:encoded>
			<wfw:commentRss>http://easwy.com/blog/archives/vim-command-line-complete/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>两个sed小技巧</title>
		<link>http://easwy.com/blog/archives/two-sed-tips/</link>
		<comments>http://easwy.com/blog/archives/two-sed-tips/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 12:31:33 +0000</pubDate>
		<dc:creator>Easwy</dc:creator>
				<category><![CDATA[开源软件]]></category>
		<category><![CDATA[文本处理]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://easwy.com/blog/?p=893</guid>
		<description><![CDATA[本文记录脚本编写时学到的二则Sed的小技巧。

<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/use-rxvt-in-cygwin/' rel='bookmark' title='Permanent Link: 使用rxvt做为cygwin终端'>使用rxvt做为cygwin终端</a></li>
<li><a href='http://easwy.com/blog/archives/vim_no_response_when_term_type_is_linux/' rel='bookmark' title='Permanent Link: vi在启动时没有响应问题的解决'>vi在启动时没有响应问题的解决</a></li>
<li><a href='http://easwy.com/blog/archives/display-window-list-on-title-bar-and-status-bar-of-screen/' rel='bookmark' title='Permanent Link: Linux使用笔记: 在标题和状态栏中显示Screen的窗口名称'>Linux使用笔记: 在标题和状态栏中显示Screen的窗口名称</a></li>
</div><div class="fixed"></div>]]></description>
			<content:encoded><![CDATA[<p>
  在写shell时使用sed处理一些输出，遇到两个问题，在网上找到了相应的解决办法，在此处备份一下。
</p>
<p>
  <strong>[ sed处理空字符 ]</strong>
</p>
<p>
  空字符，它的ASCII码值为0。在sed中如何标识空字符呢？看下面的例子：
</p>
<pre>
find . -print0 | sed -e 's/\x0/\n/g'
</pre>
<p>
  在上面的例子中，find命令把当前目录下的文件名输出出来，以空字符分隔。输出被管道送给Sed进行处理。在sed中，则把空字符替换成回车符。
</p>
<p>
  之所以用空字符做分隔符来分隔find命令的输出，是为了正确处理带空格的文件名。在上例中并没有体现出这点，我会在其它文章中说明。
</p>
<p>
  <strong>[ sed使用shell中的变量 ]</strong>
</p>
<p>
  在脚本中，有时希望在sed命令中使用shell定义的变量。在此时，就要用双引号而不是单引号来引用sed命令，因为对shell来说，它会处理双引号中的变量引用，而对单引号中的内容，shell完全不会动。例如：
</p>
<pre>
  TERM1=term; TERM2=rxvt; echo "term" | sed -e "s/$TERM1/$TERM2/g"
</pre>
<p>
  注意上例中的引号用法。如果改成单引号，输出结果会不同。
</p>
<div class="posturl">
<p><span class="bold"><strong>原创文章，请阅读页脚的<a href="#license">许可方式</a>，转载请注明：</strong></span>转载自<a class="link" href="http://easwy.com/blog/" target="_top">易水博客</a> [ <a class="link" href="http://easwy.com/blog/" target="_top">http://easwy.com/blog/</a> ]</p>
<p><span class="bold"><strong>本文链接地址:</strong></span> <a class="link" href="http://easwy.com/blog/archives/two-sed-tips/" target="_top">http://easwy.com/blog/archives/two-sed-tips/</a></p>
</div>
<p style="margin-top: 0; margin-bottom: 15px; color: #888888; font-size: 80%; font-style: italic">文章的脚注信息由WordPress的<a href="http://easwy.com/blog/wordpress/wp-posturl/" style="color: #8888FF; text-decoration: underline;">wp-posturl插件</a>自动生成</p>


<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/use-rxvt-in-cygwin/' rel='bookmark' title='Permanent Link: 使用rxvt做为cygwin终端'>使用rxvt做为cygwin终端</a></li>
<li><a href='http://easwy.com/blog/archives/vim_no_response_when_term_type_is_linux/' rel='bookmark' title='Permanent Link: vi在启动时没有响应问题的解决'>vi在启动时没有响应问题的解决</a></li>
<li><a href='http://easwy.com/blog/archives/display-window-list-on-title-bar-and-status-bar-of-screen/' rel='bookmark' title='Permanent Link: Linux使用笔记: 在标题和状态栏中显示Screen的窗口名称'>Linux使用笔记: 在标题和状态栏中显示Screen的窗口名称</a></li>
</div><div class="fixed"></div>]]></content:encoded>
			<wfw:commentRss>http://easwy.com/blog/archives/two-sed-tips/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>一篇介绍vim脚本编写的文章</title>
		<link>http://easwy.com/blog/archives/an-article-about-how-to-write-vim-script/</link>
		<comments>http://easwy.com/blog/archives/an-article-about-how-to-write-vim-script/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 02:29:48 +0000</pubDate>
		<dc:creator>Easwy</dc:creator>
				<category><![CDATA[文本处理]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://easwy.com/blog/?p=879</guid>
		<description><![CDATA[前几天在网上看到一篇关于vim脚本的文章，在此推荐给有兴趣的朋友：使用脚本编写 Vim 编辑器，第 1 部分: 变量、值和表达式

<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/vim-command-line-complete/' rel='bookmark' title='Permanent Link: 使用vim的命令行补全功能'>使用vim的命令行补全功能</a></li>
<li><a href='http://easwy.com/blog/archives/automatically_update_ctags_tag_cscope_database/' rel='bookmark' title='Permanent Link: 为vi/vim自动更新tag文件和cscope数据库'>为vi/vim自动更新tag文件和cscope数据库</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-netrw-bufexplorer-winmanager-plugin/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 文件浏览和缓冲区浏览'>vi/vim使用进阶: 文件浏览和缓冲区浏览</a></li>
</div><div class="fixed"></div>]]></description>
			<content:encoded><![CDATA[<p>
前段时间有读者建议我写一下如何编写vim脚本，我回复说暂时没有这样的计划。因为我觉得，学习vim脚本编程的人，大多是vim的老用户了，他们完全可以参照vi手册来学习脚本编程。推广vim最困难的任务是留住vim的初学者，因此我所写的文章，也大多针对这一阶段的读者。
</p>
<p>
前几天在网上看到一篇关于vim脚本的文章，在此推荐给有兴趣的朋友：<a href="http://www.ibm.com/developerworks/cn/linux/l-vim-script-1/index.html?ca=drs-cn-0601">使用脚本编写 Vim 编辑器，第 1 部分: 变量、值和表达式</a><br />
，英文原文为<a href="http://www.ibm.com/developerworks/linux/library/l-vim-script-1/index.html?S_TACT=105AGX52&#038;S_CMP=content">Scripting the Vim editor, Part 1: Variables, values, and expressions</a></p>
<p>
在网上搜了一下，目前只看到第一部分，看来作者还在创作中。
</p>
<div class="posturl">
<p><span class="bold"><strong>原创文章，请阅读页脚的<a href="#license">许可方式</a>，转载请注明：</strong></span>转载自<a class="link" href="http://easwy.com/blog/" target="_top">易水博客</a> [ <a class="link" href="http://easwy.com/blog/" target="_top">http://easwy.com/blog/</a> ]</p>
<p><span class="bold"><strong>本文链接地址:</strong></span> <a class="link" href="http://easwy.com/blog/archives/an-article-about-how-to-write-vim-script/" target="_top">http://easwy.com/blog/archives/an-article-about-how-to-write-vim-script/</a></p>
</div>
<p style="margin-top: 0; margin-bottom: 15px; color: #888888; font-size: 80%; font-style: italic">文章的脚注信息由WordPress的<a href="http://easwy.com/blog/wordpress/wp-posturl/" style="color: #8888FF; text-decoration: underline;">wp-posturl插件</a>自动生成</p>


<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/vim-command-line-complete/' rel='bookmark' title='Permanent Link: 使用vim的命令行补全功能'>使用vim的命令行补全功能</a></li>
<li><a href='http://easwy.com/blog/archives/automatically_update_ctags_tag_cscope_database/' rel='bookmark' title='Permanent Link: 为vi/vim自动更新tag文件和cscope数据库'>为vi/vim自动更新tag文件和cscope数据库</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-netrw-bufexplorer-winmanager-plugin/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 文件浏览和缓冲区浏览'>vi/vim使用进阶: 文件浏览和缓冲区浏览</a></li>
</div><div class="fixed"></div>]]></content:encoded>
			<wfw:commentRss>http://easwy.com/blog/archives/an-article-about-how-to-write-vim-script/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Exuberant Ctags用法：选择tag文件中所包含的tag类型</title>
		<link>http://easwy.com/blog/archives/ctags-usage-select-tag-kinds/</link>
		<comments>http://easwy.com/blog/archives/ctags-usage-select-tag-kinds/#comments</comments>
		<pubDate>Sat, 02 May 2009 04:16:07 +0000</pubDate>
		<dc:creator>Easwy</dc:creator>
				<category><![CDATA[开发编程]]></category>
		<category><![CDATA[文本处理]]></category>
		<category><![CDATA[ctags]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://easwy.com/blog/?p=874</guid>
		<description><![CDATA[ 网友SamPeng问:
    请问哪个参数是不解析方法中变量的。
    方法中的变量纯粹是浪费tag标签。从来不用。因为一个文件里有多个同明变量
这个问题比较普遍，因此写一篇文章来解释一下

<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/exuberant-ctags-chinese-manual/' rel='bookmark' title='Permanent Link: Exuberant Ctags中文手册'>Exuberant Ctags中文手册</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-taglist-plugin/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 使用taglist插件'>vi/vim使用进阶: 使用taglist插件</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-use-ctags-tag-file/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 使用标签(tag)文件'>vi/vim使用进阶: 使用标签(tag)文件</a></li>
</div><div class="fixed"></div>]]></description>
			<content:encoded><![CDATA[<p>
    网友<a class="ulink" href="http://easwy.com/blog/archives/exuberant-ctags-chinese-manual/#comment-352" target="_top">SamPeng问</a>:
  </p>
<div class="blockquote">
<blockquote class="blockquote">
<p>请问哪个参数是不解析方法中变量的。</p>
<p>方法中的变量纯粹是浪费tag标签。从来不用。因为一个文件里有多个同明变量</p>
</blockquote>
</div>
<p>
    这个问题比较普遍，因此写一篇文章来解释一下。
  </p>
<p>
    大多数人在使用Exuberant Ctags时，一般都使用缺省的<span class="command"><strong>ctags -R</strong></span>。一般来讲，这条缺省命令已经可以满足大部分人的需求了。在某些情况下，可能对tag文件中标签的类型有特殊要求，这时就需要进行定制了。
  </p>
<p>
    对SamPeng所提出的问题，解决方法如下：
  </p>
<div class="orderedlist">
<ol type="1">
<li>
      首先用ctags &#8211;list-kinds=&lt;LANG&gt;列出这个语言所支持的标签类型
    </li>
<li>
      然后在生成tag文件时，用ctags &#8211;&lt;LANG&gt;-kinds=[+|-]kinds来增加或去掉这种tag类型
    </li>
<li>
      需要把&lt;LANG&gt;换成你所用的编程语言的名字，用ctags &#8211;list-languages查看ctags支持哪些语言。
    </li>
</ol>
</div>
<p>
    其实我们在文章<a class="ulink" href="http://easwy.com/blog/archives/advanced-vim-skills-omin-complete/" target="_top">vim使用进阶: 智能补全</a>中已经用过Exuberant Ctags的定制功能了，在那篇文章里，我们使用命令
  </p>
<pre class="programlisting">
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q src </pre>
<p>
    来为OmniCppComplete插件生成定制的tag文件。仔细分析一下上面这条命令，相信你对Exuberant Ctags的了解会更加深一层的。
  </p>
<p>    从上面的介绍我们可以看到，Exuberant Ctags的功能非常强大(例如，甚至可以用它为任意文件提取tag，你只需要指定生成tag的规则就行了)，只是大多数人并不了解。如果你对tag文件的内容有特殊的需求，建议你仔细阅读一下Exuberant Ctags的手册。你可以在这里找到我翻译的<a class="ulink" href="http://easwy.com/blog/archives/exuberant-ctags-chinese-manual/" target="_top">Exuberant Ctags中文手册</a>。
  </p>
<div class="posturl">
<p><span class="bold"><strong>原创文章，请阅读页脚的<a href="#license">许可方式</a>，转载请注明：</strong></span>转载自<a class="link" href="http://easwy.com/blog/" target="_top">易水博客</a> [ <a class="link" href="http://easwy.com/blog/" target="_top">http://easwy.com/blog/</a> ]</p>
<p><span class="bold"><strong>本文链接地址:</strong></span> <a class="link" href="http://easwy.com/blog/archives/ctags-usage-select-tag-kinds/" target="_top">http://easwy.com/blog/archives/ctags-usage-select-tag-kinds/</a></p>
</div>
<p style="margin-top: 0; margin-bottom: 15px; color: #888888; font-size: 80%; font-style: italic">文章的脚注信息由WordPress的<a href="http://easwy.com/blog/wordpress/wp-posturl/" style="color: #8888FF; text-decoration: underline;">wp-posturl插件</a>自动生成</p>


<div class="fixed"></div><div id="related_posts"><h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href='http://easwy.com/blog/archives/exuberant-ctags-chinese-manual/' rel='bookmark' title='Permanent Link: Exuberant Ctags中文手册'>Exuberant Ctags中文手册</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-taglist-plugin/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 使用taglist插件'>vi/vim使用进阶: 使用taglist插件</a></li>
<li><a href='http://easwy.com/blog/archives/advanced-vim-skills-use-ctags-tag-file/' rel='bookmark' title='Permanent Link: vi/vim使用进阶: 使用标签(tag)文件'>vi/vim使用进阶: 使用标签(tag)文件</a></li>
</div><div class="fixed"></div>]]></content:encoded>
			<wfw:commentRss>http://easwy.com/blog/archives/ctags-usage-select-tag-kinds/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
