﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-成长中的C++-随笔分类-emacs</title><link>http://www.cppblog.com/xuejzt/category/8401.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 04 Oct 2008 08:45:12 GMT</lastBuildDate><pubDate>Sat, 04 Oct 2008 08:45:12 GMT</pubDate><ttl>60</ttl><item><title>[转载]在 Emacs 里面使用 Cscope</title><link>http://www.cppblog.com/xuejzt/archive/2008/10/04/63239.html</link><dc:creator>xuejzt</dc:creator><author>xuejzt</author><pubDate>Sat, 04 Oct 2008 08:37:00 GMT</pubDate><guid>http://www.cppblog.com/xuejzt/archive/2008/10/04/63239.html</guid><wfw:comment>http://www.cppblog.com/xuejzt/comments/63239.html</wfw:comment><comments>http://www.cppblog.com/xuejzt/archive/2008/10/04/63239.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xuejzt/comments/commentRss/63239.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuejzt/services/trackbacks/63239.html</trackback:ping><description><![CDATA[<div class="contents">
<h2>Contents</h2>
<dl><dt>
<a  href="http://pluskid.lifegoo.com/wiki/EmacsCscope.html#sec1">简介</a>
</dt><dt>
<a  href="http://pluskid.lifegoo.com/wiki/EmacsCscope.html#sec2">安装和配置</a>
</dt><dt>
<a  href="http://pluskid.lifegoo.com/wiki/EmacsCscope.html#sec3">使用简介</a>
</dt></dl>
</div>
<!-- Page published by Emacs Muse begins here -->
<h2><a name="sec1" id="sec1"></a>
简介</h2>
<p class="first">对于浏览源代码来说，在 <a  href="http://pluskid.lifegoo.com/wiki/Emacs.html">Emacs</a> 里面也有很多工具可用，比如自带的 etags 就
不错，不过功能不如 Cscope 强大。 Cscope 并不像 etags 那样属于 Emacs ，
它是一个独立的程序。它是一个具有完全 Unix 血统的程序，用于帮助开发人员
浏览源代码。它最初(那还是 PDP-11 的时代)是由 Bell 实验室开发，并且多年
以来一直是 AT&amp;T Unix 商业发行版的一部分。它已经被用于管理超过两千万行代
码的工程。在2000年4月，多亏了 <a  href="http://www.sco.com/">Santa Cruz Operation, Inc. (SCO)</a> ，
Cscope 的源代码在 BSD <a  href="http://cscope.sourceforge.net/license.html">license</a> 下开放了源代码。</p>
<p>Cscope 的发行包里面有个 xcscope.el 能很好地用于 (X)Emacs 。它处于源代
码包的 contrib/xcscope 目录下。该目录下面还有一个名为 cscope-indexer
的脚本文件，用于处理源代码并不是在一个文件夹下面的情况。</p>
<h2><a name="sec2" id="sec2"></a>
安装和配置</h2>
<p class="first">首先到 <a  href="http://cscope.sourceforge.net/">Cscope 的主页</a> 上去下载最新的源代码包，编译安装。要在 Emacs 里面
使用，首先必须把 xcscope.el 拷贝到 load-path 里面包含的目录里面。并在
<code>~/.emacs</code> 里面加上 <code>(require 'xcscope)</code> 就可以了，或者，如果你希望在打开
c 或者 c++ 文件的时候才加载 xcsope ，可以写：</p>
<pre class="example">(add-hook 'c-mode-common-hook<br>	  '(lambda ()<br>	    (require 'xcscope)))<br></pre>
<p>如果源代码全部处于同一个目录下面，现在就可以使用了。否则，如果源代码有
多层目录，或者其他地方还有附加的源代码，则需要 cscope-indexer 脚本。把
那个脚本拷贝到系统 PATH 里面去(如 <code>/usr/bin/</code>)。如果所有的源代码以及子目
录都是在同一个目录下面的，只要执行 <code>C-c s I(cscope-index-files)</code> 就可以
生成 Cscope 的数据库，接下来就可以使用了。</p>
<h2><a name="sec3" id="sec3"></a>
使用简介</h2>
<p class="first">默认是的快捷键都是绑定到 <code>C-c s</code> 的前缀上面，如果嫌麻烦的话可以自己更改
快捷键绑定。这是默认的用于查找的键绑定：</p>
<pre class="example">C-c s s         Find symbol.<br>C-c s d         Find global definition.<br>C-c s g         Find global definition (alternate binding).<br>C-c s G         Find global definition without prompting.<br>C-c s c         Find functions calling a function.<br>C-c s C         Find called functions (list functions called<br>                from a function).<br>C-c s t         Find text string.<br>C-c s e         Find egrep pattern.<br>C-c s f         Find a file.<br>C-c s i         Find files #including a file.<br></pre>
<p>下面是在搜索到的结果之间切换用的快捷键：</p>
<pre class="example">C-c s b         Display *cscope* buffer.<br>C-c s B         Auto display *cscope* buffer toggle.<br>C-c s n         Next symbol.<br>C-c s N         Next file.<br>C-c s p         Previous symbol.<br>C-c s P         Previous file.<br>C-c s u         Pop mark.<br></pre>
<p>更详细的使用说明请参见 xcscope.el 文件头部的注释。</p>
<p>转载：http://pluskid.lifegoo.com/wiki/EmacsCscope.html<br></p><img src ="http://www.cppblog.com/xuejzt/aggbug/63239.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuejzt/" target="_blank">xuejzt</a> 2008-10-04 16:37 <a href="http://www.cppblog.com/xuejzt/archive/2008/10/04/63239.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>复制、粘贴、剪贴</title><link>http://www.cppblog.com/xuejzt/archive/2008/10/04/63227.html</link><dc:creator>xuejzt</dc:creator><author>xuejzt</author><pubDate>Sat, 04 Oct 2008 06:38:00 GMT</pubDate><guid>http://www.cppblog.com/xuejzt/archive/2008/10/04/63227.html</guid><wfw:comment>http://www.cppblog.com/xuejzt/comments/63227.html</wfw:comment><comments>http://www.cppblog.com/xuejzt/archive/2008/10/04/63227.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xuejzt/comments/commentRss/63227.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuejzt/services/trackbacks/63227.html</trackback:ping><description><![CDATA[emacs中复制粘贴与剪贴：<br>复制： M-w<br>粘贴： C-y<br>剪贴： C-w<br>环粘贴： M-y<br><br>复制中用的最多的是Mark set,即set-mark-command.默认的快捷方式有：<br>1. C-spc<br>2. C-@<br>由于C-spc是系统默认用来调用输入法的，所以它被覆盖了，那唯一的方式就是C-@。但是，说实话，这个按键需要很高的技巧，<br>偶反正按起来相当困难，相当不爽。所以偶用C-'来调用它。<br>(global-set-key [control \'] 'set-mark-command)<br><br>复制粘贴过程中还可能用到的：<br>全选： C-x h<br><br>欢迎大家给予补充和指正。。。<br> <img src ="http://www.cppblog.com/xuejzt/aggbug/63227.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuejzt/" target="_blank">xuejzt</a> 2008-10-04 14:38 <a href="http://www.cppblog.com/xuejzt/archive/2008/10/04/63227.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>undo and redo </title><link>http://www.cppblog.com/xuejzt/archive/2008/10/04/63226.html</link><dc:creator>xuejzt</dc:creator><author>xuejzt</author><pubDate>Sat, 04 Oct 2008 06:36:00 GMT</pubDate><guid>http://www.cppblog.com/xuejzt/archive/2008/10/04/63226.html</guid><wfw:comment>http://www.cppblog.com/xuejzt/comments/63226.html</wfw:comment><comments>http://www.cppblog.com/xuejzt/archive/2008/10/04/63226.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xuejzt/comments/commentRss/63226.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xuejzt/services/trackbacks/63226.html</trackback:ping><description><![CDATA[emacs里面undo有两种快捷方式： <br>1. C-x u<br>2. C-/<br>我喜欢用第二种方式，因为用起来很方便，而且因为这种方式，让我想到了用&#8220;C-;&#8221;来表示redo.因为&#8220;'&#8221;就在&#8220;/&#8221;的旁边,当<br>小指放在"\"上时无名指可以很轻松地放在";"上面。<br>redo的调用方式：<br>(require 'redo)<br>(global-set-key [(control \;)] 'redo)<br><img src ="http://www.cppblog.com/xuejzt/aggbug/63226.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xuejzt/" target="_blank">xuejzt</a> 2008-10-04 14:36 <a href="http://www.cppblog.com/xuejzt/archive/2008/10/04/63226.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>