<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-26796774</id><updated>2011-04-22T07:24:45.719+02:00</updated><category term='FVWM'/><category term='All'/><category term='Firefox'/><category term='RegExp'/><category term='Thinkpad'/><category term='cygwin'/><category term='Emacs Tips'/><category term='Office'/><category term='Linux'/><category term='flymake'/><category term='E-tech'/><category term='Others'/><category term='Software'/><category term='Emacs'/><category term='Unicad'/><category term='Blogger'/><category term='FPGA'/><category term='Google'/><title type='text'>QTech</title><subtitle type='html'>Cute Tech
--by jasonal

"Now faith is the substance of things hoped for, the evidence of things not seen."

"Es ist aber der Glaube eine gewisse Zuversicht des, das man hoffet, und nicht zweifeln an dem, das man nicht siehet."</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>51</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-26796774.post-3139030344493809071</id><published>2007-11-24T00:18:00.000+01:00</published><updated>2007-11-24T00:21:37.231+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Map of Emacs Users</title><content type='html'>&lt;table bgcolor="#232323" cellpadding="0" cellspacing="3"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#6699cc"&gt;&lt;a aiotitle="" href="http://www.buddymapping.com/maps/emacs" target="_blank"&gt;&lt;img src="http://www.buddymapping.com/mapimageworld/emacs.gif" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right" background="http://www.buddymapping.com/images/webBackground.gif"&gt;&lt;div align="right"&gt;&lt;a href="http://www.buddymapping.com/maps/emacs" target="_blank"&gt;&lt;img src="http://www.buddymapping.com/images/addyourself.gif" align="right" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-3139030344493809071?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/3139030344493809071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=3139030344493809071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/3139030344493809071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/3139030344493809071'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/11/map-of-emacs-users.html' title='Map of Emacs Users'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-5143475801382094269</id><published>2007-11-16T23:25:00.000+01:00</published><updated>2007-11-16T23:54:33.575+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Emacs Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>[Emacs Tips] 注释</title><content type='html'>M-x comment-dwim  (Do What I Mean) 是最聪明的一种注释方式。如果已经选定了区域，那么就是注释或者反注释；如果没有选定区域，那么就是在这行末尾添加注释。&lt;br /&gt;&lt;br /&gt;默认的键绑&lt;span style="font-family:arial;"&gt;&lt;/span&gt;定是 &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;M-;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;注释还可以选择不同的模式，不同注释符号，在不同的编程语言模式下都不同。&lt;br /&gt;&lt;br /&gt;控制注释符号的是变量 comment-start 和 comment-end，用 C-h v 查看，用例如 (setq comment-start "//") 修改。&lt;br /&gt;&lt;br /&gt;变量 comment-style 控制注释的样式。可以用例如 (setq comment-style 'box) 修改。&lt;br /&gt;以下是各种注释风格的示例。&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(170, 170, 170); padding: 8px; background-color: rgb(41, 41, 41); color: rgb(242, 242, 242);"&gt;&lt;span style="color: rgb(152, 251, 152);"&gt;int &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;main()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;/*     &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;this is a comment line. &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;/*     &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;comment style 'plain &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;/* &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;this is a comment line. &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;/* &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;comment style 'indent &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;/* &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;this is a comment line. &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;/* &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;comment style 'aligned  &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;/* &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;this is a comment line.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;     * comment style 'multi-line &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;/* &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;     * this is a comment line. &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;     * comment style 'extra-line&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;     &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;/***************************/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;/* &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;this is a comment line. &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;/* &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;comment style 'box      &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;/***************************/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;/****************************&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;     * this is a comment line.  *&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;     * comment style 'box-multi *&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;     ***************************&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;再提供一个直接注释一行的函数。有时候比 comment-dwim 更有效。有选中区域的话就是注释或反注释这个区域；反之注释或者反注释光标所在的行。&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(170, 170, 170); padding: 8px; background-color: rgb(41, 41, 41); color: rgb(242, 242, 242);"&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;defun &lt;/span&gt;&lt;span style="color: rgb(135, 206, 250);"&gt;huangq-comment-dwim &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(152, 251, 152);"&gt;&amp;amp;optional &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;n)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"Comment do-what-i-mean"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (interactive &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"p"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (apply 'comment-or-uncomment-region&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;         (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(and mark-active transient-mark-mode)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;             (list (region-beginning) (region-end))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;           (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&amp;gt; n 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;               (list (line-beginning-position) (line-end-position n))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;             (list (line-beginning-position n) (line-end-position))))))&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-5143475801382094269?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/5143475801382094269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=5143475801382094269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/5143475801382094269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/5143475801382094269'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/11/emacs-tips-1.html' title='[Emacs Tips] 注释'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-8669842954603948748</id><published>2007-11-16T00:09:00.000+01:00</published><updated>2007-11-16T00:26:04.162+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Emacs Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>[Emacs Tips] 插入相邻一行的字符</title><content type='html'>类似于 VIM 插入状态下的 C-y 和 C-e，也就是插入光标所在上一行或者下一行的字符。&lt;br /&gt;例如： &lt;u&gt;VIM 插入状态下的 C-y 和 C-e，也就是插入光标所在上一行或者下一行的字符。&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;写程序的时候还是挺有用的&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(170, 170, 170); padding: 8px; background-color: rgb(41, 41, 41); color: rgb(242, 242, 242);"&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;;;;&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;###&lt;/span&gt;&lt;span style="color: rgb(255, 192, 203);"&gt;autoload&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;defun &lt;/span&gt;&lt;span style="color: rgb(135, 206, 250);"&gt;my-insert-char-next-line &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(arg)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"insert char below the cursor"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (interactive &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"p"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;let &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;((col (current-column))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;        char)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    (setq char&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;          (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;save-excursion&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;            (forward-line arg)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;            (move-to-column col)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;            (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(= (current-column) col)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;                (char-after))))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;char&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;        (insert-char char 1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (message (concat &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"Can't get charactor in "&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;                       (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if  &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&amp;lt; arg 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;                           &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"previous"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;                         &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"next"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;                       (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;progn &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(setq arg (abs arg))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;                              (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(= arg 1) &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;""&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;                                (concat &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;" " &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(number-to-string arg))))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;                       &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;" line."&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)))))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;;;;&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;###&lt;/span&gt;&lt;span style="color: rgb(255, 192, 203);"&gt;autoload&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;defun &lt;/span&gt;&lt;span style="color: rgb(135, 206, 250);"&gt;my-insert-char-prev-line &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(arg)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"insert char above the cursor"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (interactive &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"p"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (my-insert-char-next-line (- arg)))&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;用的键绑定是 &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;C-x (&lt;/span&gt; 和 &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;C-x )&lt;/span&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(170, 170, 170); padding: 8px; background-color: rgb(41, 41, 41); color: rgb(242, 242, 242);"&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(global-set-key (kbd &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"C-)"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;) 'my-insert-char-next-line)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(global-set-key (kbd &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"C-("&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;) 'my-insert-char-prev-line)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-8669842954603948748?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/8669842954603948748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=8669842954603948748' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/8669842954603948748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/8669842954603948748'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/11/emacs-tips_16.html' title='[Emacs Tips] 插入相邻一行的字符'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-9023323456017475442</id><published>2007-11-14T16:58:00.000+01:00</published><updated>2007-11-14T18:08:44.998+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Emacs Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>[Emacs Tips] isearch 查找 (2)</title><content type='html'>注：有些函数非原创，因为年代长久，很难找到出处，就不一一注明了。&lt;br /&gt;&lt;br /&gt;一些加快查找速度的函数。&lt;br /&gt;&lt;br /&gt;1. 查找选定区域的内容。Emacs 有无数用来选定 (mark) 的函数，所以选定容易，但是没有直接查找选定内容的函数。下面这个函数提供此功能，按 &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;F3&lt;/span&gt; 就是 isearch 当前选定的词，继续按 &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;C-s&lt;/span&gt; 就可以查找了。&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(170, 170, 170); padding: 8px; background-color: rgb(41, 41, 41); color: rgb(242, 242, 242);"&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;defvar &lt;/span&gt;&lt;span style="color: rgb(238, 221, 130);"&gt;my-isearch-string &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;nil)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(setq my-isearch-string &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;""&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;defun &lt;/span&gt;&lt;span style="color: rgb(135, 206, 250);"&gt;my-isearch-region-forward &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"isearch region if mark is acktive"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (interactive)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;mark-active&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;let &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;((beg (region-beginning))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;            (end (region-end)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;        (setq my-isearch-string (filter-buffer-substring beg end nil))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;        (deactivate-mark)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;        (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&amp;gt; (length my-isearch-string) 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;            (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;progn&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;              (goto-char beg)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;              (isearch-update-ring my-isearch-string)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;              (add-hook 'isearch-mode-end-hook 'my-isearch-end-hook)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;              (isearch-mode t)          &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;hack isearch-forward&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;              (isearch-repeat 'forward)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;              (message &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"%s" &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;isearch-string)))) &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;print debug msg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&amp;gt; (length my-isearch-string) 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;        (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;progn&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;          (isearch-repeat 'forward))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (message &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"no region selected"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      )))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(global-set-key (kbd &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"&amp;lt;f3&amp;gt;"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;) 'my-isearch-region-forward)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;defun &lt;/span&gt;&lt;span style="color: rgb(135, 206, 250);"&gt;my-isearch-end-hook &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (remove-hook 'isearch-mode-end-hook 'my-isearch-end-hook)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (setq my-isearch-string &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;""&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;))&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2. 查找当前词，类似于 VIM 的 *，这里用的键绑定是 &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;C-*&lt;/span&gt; .&lt;br /&gt;&lt;br /&gt;&lt;pre style="border:1px dashed rgb(170,170,170);padding:8px;background-color:rgb(41,41,41);color:rgb(242,242,242);"&gt;&lt;span style=" color: rgb(242,242,242);"&gt;(&lt;/span&gt;&lt;span style=" color: rgb(0,255,255);"&gt;defvar &lt;/span&gt;&lt;span style=" color: rgb(238,221,130);"&gt;my-isearch-word &lt;/span&gt;&lt;span style=" color: rgb(255,160,122);"&gt;""&lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;(&lt;/span&gt;&lt;span style=" color: rgb(0,255,255);"&gt;defun &lt;/span&gt;&lt;span style=" color: rgb(135,206,250);"&gt;my-isearch-word &lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;()&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;(interactive)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;(&lt;/span&gt;&lt;span style=" color: rgb(0,255,255);"&gt;when &lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;(not mark-active)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/span&gt;&lt;span style=" color: rgb(0,255,255);"&gt;let &lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;(word-beg word-end)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/span&gt;&lt;span style=" color: rgb(0,255,255);"&gt;unless &lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;(looking-at &lt;/span&gt;&lt;span style=" color: rgb(255,160,122);"&gt;"\\&amp;lt;"&lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/span&gt;&lt;span style=" color: rgb(0,255,255);"&gt;if &lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;(eq (char-syntax (char-after)) ?w)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(backward-word)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(and (forward-word) (backward-word)))&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(setq word-beg (point))&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(forward-word)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(setq word-end (point))&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(setq my-isearch-word (filter-buffer-substring word-beg word-end nil t))&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(backward-word)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/span&gt;&lt;span style=" color: rgb(0,255,255);"&gt;when &lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;(&amp;gt; (length my-isearch-word) 0)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(setq my-isearch-word (concat &lt;/span&gt;&lt;span style=" color: rgb(255,160,122);"&gt;"\\&amp;lt;" &lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;my-isearch-word &lt;/span&gt;&lt;span style=" color: rgb(255,160,122);"&gt;"\\&amp;gt;"&lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;))&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(isearch-update-ring my-isearch-word t)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(add-hook 'isearch-mode-end-hook 'my-isearch-word-end-hook)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(isearch-mode t t)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(isearch-repeat 'forward)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(message &lt;/span&gt;&lt;span style=" color: rgb(255,160,122);"&gt;"%s" &lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;isearch-string))))&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;(global-set-key (kbd &lt;/span&gt;&lt;span style=" color: rgb(255,160,122);"&gt;"C-*"&lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;) 'my-isearch-word)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;(&lt;/span&gt;&lt;span style=" color: rgb(0,255,255);"&gt;defun &lt;/span&gt;&lt;span style=" color: rgb(135,206,250);"&gt;my-isearch-word-end-hook &lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;()&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;(remove-hook 'isearch-mode-end-hook 'my-isearch-word-end-hook)&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;(setq my-isearch-word &lt;/span&gt;&lt;span style=" color: rgb(255,160,122);"&gt;""&lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;))&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-9023323456017475442?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/9023323456017475442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=9023323456017475442' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/9023323456017475442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/9023323456017475442'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/11/emacs-tips-isearch-2.html' title='[Emacs Tips] isearch 查找 (2)'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-762242459576444587</id><published>2007-11-13T16:25:00.000+01:00</published><updated>2007-11-13T22:54:31.344+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Emacs Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>[Emacs Tips] isearch 查找 (1)</title><content type='html'>isearch (&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;C-s&lt;/span&gt;) 是 Emacs 里最常用的查找方式，也是目前为止我在各种软件里，编辑器里用过最舒服的查找方式。&lt;br /&gt;&lt;br /&gt;首先这是 incremental search，也就是递增方式的搜索，一边输入一边就开始查找了;&lt;br /&gt;其次有 lazy highlight 功能，低亮显示 buffer 里所有找到的词。&lt;br /&gt;这个功能是由 isearch-lazy-highlight 这个变量控制的，用 C-h v isearch-lazy-highlight 查看这个变量目前是不是真 t。&lt;br /&gt;&lt;br /&gt;&lt;a aiotarget="false" aiotitle="isearch lazy highlight" href="http://picasaweb.google.com/qichen.huang/Misc/photo#5132392320959726818"&gt;&lt;img src="http://lh4.google.com/qichen.huang/Rznrn5K_ROI/AAAAAAAAAS8/fiCcDaEcxcw/s800/emacs-isearch-lazy-highlight.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;isearch-mode 也有很多键绑定，用 C-h f isearch-mode 查看。&lt;br /&gt;具体就不详细写了。最常用的 C-w ，查找当前的词。(明天再给出一个更快更方便的查找方式)&lt;br /&gt;&lt;br /&gt;建议可以试试相关的 Elisp 插件 &lt;a href="http://www.bookshelf.jp/elc/moccur-edit.el"&gt;color-moccor.el&lt;/a&gt;。&lt;br /&gt;用了这个以后可以在 isearch 里敲 M-o，列出文件里的搜索结果; 或者 M-O (大写o) 列出所有 buffer 里的对应结果。&lt;br /&gt;&lt;br /&gt;&lt;a aiotitle="moccur" href="http://picasaweb.google.com/qichen.huang/Misc/photo#5132446325878506738"&gt;&lt;img src="http://lh3.google.com/qichen.huang/RzocvZK_RPI/AAAAAAAAATo/8W61mPGJPAs/s800/moccur.png" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-762242459576444587?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/762242459576444587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=762242459576444587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/762242459576444587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/762242459576444587'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/11/emacs-tips-isearch-1.html' title='[Emacs Tips] isearch 查找 (1)'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-8035345280942330995</id><published>2007-11-13T00:14:00.000+01:00</published><updated>2007-11-13T01:44:30.562+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Emacs Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>[Emacs Tips]  复制一行</title><content type='html'>从今天开始打算每天用中文介绍一个 Emacs 小技巧。都是很小的技巧而已。&lt;br /&gt;&lt;br /&gt;首先是快速复制一行。基本思想是，光标在哪一行就复制哪一行，不用选定区域。如果区域已经选定了，那么就复制区域。类似于 VIM 的yy。&lt;br /&gt;&lt;br /&gt;仍旧使用 M-w 的键绑定，和原先的习惯差不多。使用前提是启用了 transient-mark-mode，即高亮选定区域。实际使用中发现每行开头的空格一点用都没有，而且很碍事，所以今天改了一下，一般从第一个非空格的字符开始复制。&lt;br /&gt;&lt;br /&gt;这里提供几个函数。&lt;br /&gt;huangq-save-one-line 是复制一行；如果有参数，则从第一个不是空格的字符开始复制。&lt;br /&gt;huangq-kill-ring-save 如果选定了区域，则复制区域；否则复制行。&lt;br /&gt;huangq-save-line-dwim 如果选定了区域，复制区域；否则从第一个不是空格的字符开始复制。&lt;br /&gt;&lt;br /&gt;最后是键绑定：&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(170, 170, 170); padding: 8px; background-color: rgb(41, 41, 41); color: rgb(242, 242, 242);"&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(global-set-key (kbd &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"M-w"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;) 'huangq-save-line-dwim)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;函数的实现：&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(170, 170, 170); padding: 8px; background-color: rgb(41, 41, 41); color: rgb(242, 242, 242);"&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;;;;&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;###&lt;/span&gt;&lt;span style="color: rgb(255, 192, 203);"&gt;autoload&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;defun &lt;/span&gt;&lt;span style="color: rgb(135, 206, 250);"&gt;huangq-save-one-line &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(152, 251, 152);"&gt;&amp;amp;optional &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;arg)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"save one line. If ARG, save one line from first non-white."&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (interactive &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"P"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;save-excursion&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;arg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;        (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;progn&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;          (back-to-indentation)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;          (kill-ring-save (point) (line-end-position)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (kill-ring-save (line-beginning-position) (line-end-position)))))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;;;;&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;###&lt;/span&gt;&lt;span style="color: rgb(255, 192, 203);"&gt;autoload&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;defun &lt;/span&gt;&lt;span style="color: rgb(135, 206, 250);"&gt;huangq-kill-ring-save &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(152, 251, 152);"&gt;&amp;amp;optional &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;n)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"If region is active, copy region. Otherwise, copy line."&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (interactive &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"p"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(and mark-active transient-mark-mode)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (kill-ring-save (region-beginning) (region-end))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&amp;gt; n 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;        (kill-ring-save (line-beginning-position) (line-end-position n))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (kill-ring-save (line-beginning-position n) (line-end-position)))))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;;;;&lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;###&lt;/span&gt;&lt;span style="color: rgb(255, 192, 203);"&gt;autoload&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;defun &lt;/span&gt;&lt;span style="color: rgb(135, 206, 250);"&gt;huangq-save-line-dwim &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(152, 251, 152);"&gt;&amp;amp;optional &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;arg)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"If region is active, copy region.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;If ARG is nil, copy line from first non-white.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;If ARG is numeric, copy ARG lines.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;If ARG is non-numeric, copy line from beginning of the current line."&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (interactive &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"P"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(and mark-active transient-mark-mode)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;;; &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;mark-active, save region&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (kill-ring-save (region-beginning) (region-end))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;arg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;        (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(numberp arg)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;;; &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;numeric arg, save ARG lines&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;            (huangq-kill-ring-save arg)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;          &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;;; &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;other ARG, save current line&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;          (huangq-save-one-line))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;;; &lt;/span&gt;&lt;span style="color: rgb(255, 69, 0);"&gt;no ARG, save current line from first non-white&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (huangq-save-one-line t))))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-8035345280942330995?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/8035345280942330995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=8035345280942330995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/8035345280942330995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/8035345280942330995'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/11/emacs-tips.html' title='[Emacs Tips]  复制一行'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-2477790290401986644</id><published>2007-11-02T15:27:00.000+01:00</published><updated>2007-11-03T02:11:10.000+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='flymake'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>flymake mode</title><content type='html'>How can I miss this wonderful feature until now?&lt;br /&gt;&lt;br /&gt;Flymake is amazing. See the screenshot:&lt;br /&gt;&lt;a aiotitle="" href="http://picasaweb.google.com/qichen.huang/Misc/photo#5128261245607528242"&gt;&lt;img src="http://lh4.google.com/qichen.huang/Rys-bqPWxzI/AAAAAAAAAR4/8WvdqVdxpxU/s800/flymake.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What you need is only a Makefile with an extra target "check-syntax":&lt;br /&gt;&lt;pre style="border:1px dashed rgb(170,170,170);padding:8px;background-color:rgb(41,41,41);color:rgb(242,242,242);"&gt;&lt;span style=" color: rgb(242,242,242);"&gt;check-syntax&lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;:&lt;/span&gt;&lt;br&gt;&lt;span style=" color: rgb(242,242,242);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;gcc -o nul -Wall -Wextra -fsyntax-only $(&lt;/span&gt;&lt;span style=" color: rgb(238,221,130);"&gt;CHK_SOURCES&lt;/span&gt;&lt;span style=" color: rgb(242,242,242);"&gt;)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;br /&gt;And of course type "&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;M-x flymake-mode&lt;/span&gt;" when needed.&lt;br /&gt;&lt;br /&gt;You can also customize the error and warning face in .emacs like:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(170, 170, 170); padding: 8px; background-color: rgb(41, 41, 41); color: rgb(242, 242, 242);"&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;require &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(127, 255, 212);"&gt;flymake &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;nil t)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;when &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;featurep &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(127, 255, 212);"&gt;flymake&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (set-face-background 'flymake-errline &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"LightPink"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (set-face-foreground 'flymake-errline &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"DarkRed"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (set-face-bold-p 'flymake-errline t)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (set-face-background 'flymake-warnline &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"LightBlue2"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (set-face-foreground 'flymake-warnline &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"DarkBlue"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (set-face-bold-p 'flymake-warnline t))&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-2477790290401986644?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/2477790290401986644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=2477790290401986644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/2477790290401986644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/2477790290401986644'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/11/flymake-mode.html' title='flymake mode'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-1321500347079419055</id><published>2007-11-02T01:02:00.000+01:00</published><updated>2007-11-03T02:14:36.787+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='RegExp'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Search word at point in Emacs</title><content type='html'>&lt;u&gt;&lt;span style="font-weight: bold;"&gt;查找光标上的单词&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The default i-search command in Emacs is &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;C-s&lt;/span&gt;, and then type the word you want to search. If your cursor is current on the beginning of the word, then you can type &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;C-s&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;C-w&lt;/span&gt;. This is case insensitive.&lt;br /&gt;&lt;br /&gt;If you want to look for the exact word, then you can use the following code. Type &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;C-*&lt;/span&gt; and search the word at the point. It works just like the Star * in VIM.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(170, 170, 170); padding: 8px; background-color: rgb(41, 41, 41); color: rgb(242, 242, 242);"&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;defvar &lt;/span&gt;&lt;span style="color: rgb(238, 221, 130);"&gt;my-isearch-word &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;""&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;defun &lt;/span&gt;&lt;span style="color: rgb(135, 206, 250);"&gt;my-isearch-word &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (interactive)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;  (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;when &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(not mark-active)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;let &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(word-beg word-end)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;unless &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(looking-at &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"\\&amp;lt;"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;        (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;if &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(eq (char-syntax (char-after)) ?w)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;            (backward-word)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;          (and (forward-word) (backward-word)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;        )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (setq word-beg (point))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (forward-word)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (setq word-end (point))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (setq my-isearch-word (filter-buffer-substring word-beg word-end nil t))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (backward-word)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;    (&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;when &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(&amp;gt; (length my-isearch-word) 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (setq my-isearch-word (concat &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"\\&amp;lt;" &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;my-isearch-word &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"\\&amp;gt;"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (isearch-update-ring my-isearch-word t)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (add-hook 'isearch-mode-end-hook 'my-isearch-word-end-hook)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (isearch-mode t t)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (isearch-repeat 'forward)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;      (message &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"%s" &lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;isearch-string))))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;(global-set-key (kbd &lt;/span&gt;&lt;span style="color: rgb(255, 160, 122);"&gt;"C-*"&lt;/span&gt;&lt;span style="color: rgb(242, 242, 242);"&gt;) 'my-isearch-word)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-1321500347079419055?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/1321500347079419055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=1321500347079419055' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/1321500347079419055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/1321500347079419055'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/11/search-word-at-point-in-emacs.html' title='Search word at point in Emacs'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-8295125984295349490</id><published>2007-09-10T14:09:00.000+02:00</published><updated>2007-09-10T14:40:35.899+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>It's All Text! - A wonderful Firefox extension</title><content type='html'>&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/4125"&gt;It's All Text!&lt;/a&gt; is a Firefox extension. With this extension you can edit the text area in a webpage using external editors, e.g. Emacs, VIM, Notepad ... etc.&lt;br /&gt;&lt;br /&gt;After installed this extension, restarted Firefox, there will be a small "edit" button at the right bottom corner of a text edit area. For example, Gmail compose message, blogger input box, or comment area. Assign an external editor in the preference of It's All Text!, click this "edit" button or right click on the text area and select It's All Text!, you will be switched to the editor. Type anything and save the file, the text will be copied back to the text edit area in the webpage.&lt;br /&gt;&lt;br /&gt;This is a really amazing feature I was looking for since long ago. Under Windows I use a bat file to start emacsclient:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;d:\Emacs\bin\emacsclientw.exe -f "PATHTO\.emacs.d\server\server" -a "d:\Emacs\bin\runemacs.exe" -n %1&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Select this bat file as the editor for It's All Text!&lt;br /&gt;&lt;br /&gt;Of course you need to start server in Emacs first. Add this line into your .emacs file:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;(server-start)&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Have fun!&lt;br /&gt;&lt;br /&gt;Maybe later we can post blog using emacs-muse with this Firefox extension more conveniently. We'll see.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-8295125984295349490?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/8295125984295349490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=8295125984295349490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/8295125984295349490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/8295125984295349490'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/09/its-all-text-wonderful-firefox.html' title='It&apos;s All Text! - A wonderful Firefox extension'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-3120188898580823781</id><published>2007-08-18T16:20:00.000+02:00</published><updated>2007-08-18T16:59:09.494+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>URLs for Google Maps</title><content type='html'>It's really convenient to use &lt;a aiotitle="Google Maps" href="http://maps.google.de/"&gt;Google Maps&lt;/a&gt; to find specific locations and route. But it's very slow to load the home page of Google Maps every time. However, like Google, it is possible to type the link address directly to find a location in Google Maps. For example, to find Marienplatz 1, you can use the following URL directly:&lt;br /&gt;&lt;a aiotitle="http://maps.google.de/maps?hl=en&amp;q=Marienplatz%201%2C%20Munich" href="http://maps.google.de/maps?hl=en&amp;amp;q=Marienplatz%201,%20Munich"&gt;http://maps.google.de/maps?hl=en&amp;q=Marienplatz%201%2C%20Munich&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is quite neat to use this feature combined with Firefox Bookmark Keyword. You can save &lt;a aiotitle="http://maps.google.de/maps?hl=en&amp;amp;q=%s" href="http://maps.google.de/maps?hl=en&amp;q=%s"&gt;http://maps.google.de/maps?hl=en&amp;amp;q=%s&lt;/a&gt; as Firefox Bookmark, and name the Keyword of this bookmark as &lt;u&gt;&lt;i&gt;gmap&lt;/i&gt;&lt;/u&gt;. The next time, you can directly type "&lt;u&gt;&lt;i&gt;&lt;a href="http://maps.google.de/maps?hl=en&amp;q=Marienplatz%201,%20Munich"&gt;gmap Marienplatz 1 Munich&lt;/a&gt;&lt;/i&gt;&lt;/u&gt;" in the Firefox address bar to find this location in Google Maps. Even more, you can type "&lt;u&gt;&lt;i&gt;&lt;a aiotitle="gmap from Marienplatz 1 Munich to Olympiapark Munich" href="http://maps.google.de/maps?hl=en&amp;amp;q=from%20Marienplatz%201%20Munich%20to%20Olympiapark%20Munich"&gt;gmap from Marienplatz 1 Munich to Olympiapark Munich&lt;/a&gt;&lt;/i&gt;&lt;/u&gt;" to find the route.&lt;br /&gt;&lt;br /&gt;And here are the other parameters of the URL:&lt;br /&gt;&lt;p&gt;lat and lon: q=48.1374740601+11.5754375458&lt;br /&gt;Comment for info window: (City Hall Munich)&lt;br /&gt;Zoom Level: &amp;z=18&lt;br /&gt;language of map (en=english, fr=french, de=germany): &amp;amp;hl=en&lt;br /&gt;map type (0=street map, k=satellite, h=hybrid): &amp;t=k&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The complete URL example:&lt;br /&gt;&lt;a aiotitle="http://maps.google.de/maps?hl=en&amp;amp;amp;amp;q=48.1374740601+11.5754375458+(City Hall Munich)&amp;t=k&amp;amp;z=18" href="http://maps.google.de/maps?hl=en&amp;q=48.1374740601+11.5754375458+%28City%20Hall%20Munich%29&amp;amp;t=k&amp;z=18"&gt;http://maps.google.de/maps?hl=en&amp;amp;amp;amp;q=48.1374740601+11.5754375458+(City Hall Munich)&amp;t=k&amp;amp;z=18&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;All Google Maps Parameters:&lt;br /&gt;&lt;a href="http://mapki.com/index.php?title=Google_Map_Parameters"&gt;http://mapki.com/index.php?title=Google_Map_Parameters&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-3120188898580823781?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/3120188898580823781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=3120188898580823781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/3120188898580823781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/3120188898580823781'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/08/urls-for-google-maps.html' title='URLs for Google Maps'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-2635071042973655943</id><published>2007-06-02T18:44:00.000+02:00</published><updated>2007-06-02T19:13:44.993+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Gnu Emacs Reference Card</title><content type='html'>&lt;p&gt;pdf version is in emacs directory "/usr/local/share/emacs/23.0.0/etc/refcard.ps"&lt;/p&gt;&lt;h2&gt;Starting Emacs&lt;/h2&gt;  &lt;p class="first"&gt;To enter GNU Emacs 22 or 23, just type its name: &lt;strong&gt;emacs&lt;/strong&gt;&lt;/p&gt;   &lt;h2&gt;Leaving Emacs&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;suspend Emacs (or iconify it under X)&lt;/td&gt;       &lt;td&gt;C-z&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;exit Emacs permanently&lt;/td&gt;       &lt;td&gt;C-x C-c&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Files&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;read&lt;/strong&gt; a file into Emacs&lt;/td&gt;       &lt;td&gt;C-x C-f&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;save&lt;/strong&gt; a file back to disk&lt;/td&gt;       &lt;td&gt;C-x C-s&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;save &lt;strong&gt;all&lt;/strong&gt; files&lt;/td&gt;       &lt;td&gt;C-x s&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;insert&lt;/strong&gt; another file into this buffer&lt;/td&gt;       &lt;td&gt;C-x i&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;replace this file with another file&lt;/td&gt;       &lt;td&gt;C-x C-v&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;write buffer to a specified file&lt;/td&gt;       &lt;td&gt;C-x C-w&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;toggle read-only status of buffer&lt;/td&gt;       &lt;td&gt;C-x C-q&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Getting Help&lt;/h2&gt;  &lt;p class="first"&gt;The help system is simple. Type C-h (or F1) and follow the directions. If you are a first-time user, type C-h t for a &lt;strong&gt;tutorial&lt;/strong&gt;.&lt;/p&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;remove help window&lt;/td&gt;       &lt;td&gt;C-x 1&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;scroll help window&lt;/td&gt;       &lt;td&gt;C-M-v&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;apropos: show commands matching a string&lt;/td&gt;       &lt;td&gt;C-h a&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;describe the function a key runs&lt;/td&gt;       &lt;td&gt;C-h k&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;describe a function&lt;/td&gt;       &lt;td&gt;C-h f&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;get mode-specific information&lt;/td&gt;       &lt;td&gt;C-h m&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Error Recovery&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;abort&lt;/strong&gt; partially typed or executing command&lt;/td&gt;       &lt;td&gt;C-g&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;recover&lt;/strong&gt; files lost by a system crash&lt;/td&gt;       &lt;td&gt;M-x recover-session&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;undo&lt;/strong&gt; an unwanted change&lt;/td&gt;       &lt;td&gt;C-x u, C-_ or C-/&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;restore a buffer to its original contents&lt;/td&gt;       &lt;td&gt;M-x revert-buffer&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;redraw garbled screen&lt;/td&gt;       &lt;td&gt;C-l&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Incremental Search&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;search forward&lt;/td&gt;       &lt;td&gt;C-s&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;search backward&lt;/td&gt;       &lt;td&gt;C-r&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;regular expression search&lt;/td&gt;       &lt;td&gt;C-M-s&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;reverse regular expression search&lt;/td&gt;       &lt;td&gt;C-M-r&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;  &lt;h4&gt;in i-search mode:&lt;/h4&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;select previous search string&lt;/td&gt;       &lt;td&gt;M-p&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;select next later search string&lt;/td&gt;       &lt;td&gt;M-n&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;exit incremental search&lt;/td&gt;       &lt;td&gt;RET&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;undo effect of last character&lt;/td&gt;       &lt;td&gt;DEL&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;abort current search&lt;/td&gt;       &lt;td&gt;C-g&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;  &lt;p&gt;Use C-s or C-r again to repeat the search in either direction. If Emacs is still searching, C-g cancels only the part not done.&lt;/p&gt;    &lt;h2&gt;Motion&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;entity to move over&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;&lt;strong&gt;backward&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;&lt;strong&gt;forward&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;character&lt;/td&gt;       &lt;td&gt;C-b&lt;/td&gt;       &lt;td&gt;C-f&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;word&lt;/td&gt;       &lt;td&gt;M-b&lt;/td&gt;       &lt;td&gt;M-f&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;line&lt;/td&gt;       &lt;td&gt;C-p&lt;/td&gt;       &lt;td&gt;C-n&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;goto line beginning (or end)&lt;/td&gt;       &lt;td&gt;C-a&lt;/td&gt;       &lt;td&gt;C-e&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;sentence&lt;/td&gt;       &lt;td&gt;M-a&lt;/td&gt;       &lt;td&gt;M-e&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;paragraph&lt;/td&gt;       &lt;td&gt;M-{&lt;/td&gt;       &lt;td&gt;M-}&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;page&lt;/td&gt;       &lt;td&gt;C-x [&lt;/td&gt;       &lt;td&gt;C-x ]&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;sexp (balanced expression)&lt;/td&gt;       &lt;td&gt;C-M-b&lt;/td&gt;       &lt;td&gt;C-M-f&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;function&lt;/td&gt;       &lt;td&gt;C-M-a&lt;/td&gt;       &lt;td&gt;C-M-e&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;goto buffer beginning (or end)&lt;/td&gt;       &lt;td&gt;M-&lt;&lt;/td&gt;       &lt;td&gt;M-&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;scroll to next screen&lt;/td&gt;       &lt;td&gt;C-v&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;scroll to previous screen&lt;/td&gt;       &lt;td&gt;M-v&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;scroll left&lt;/td&gt;       &lt;td&gt;C-x &lt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;scroll right&lt;/td&gt;       &lt;td&gt;C-x &gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;scroll current line to center of screen&lt;/td&gt;       &lt;td&gt;C-u C-l&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Kill and Deleting&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;entity to kill&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;&lt;strong&gt;backward&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;&lt;strong&gt;forward&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;character (delete, not kill)&lt;/td&gt;       &lt;td&gt;DEL&lt;/td&gt;       &lt;td&gt;C-d&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;word&lt;/td&gt;       &lt;td&gt;M-DEL&lt;/td&gt;       &lt;td&gt;M-d&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;line (to end of)&lt;/td&gt;       &lt;td&gt;M-0 C-k&lt;/td&gt;       &lt;td&gt;C-k&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;sentence&lt;/td&gt;       &lt;td&gt;C-x DEL&lt;/td&gt;       &lt;td&gt;M-k&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;sexp (balanced expression)&lt;/td&gt;       &lt;td&gt;M— C-M-k&lt;/td&gt;       &lt;td&gt;C-M-k&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;kill &lt;strong&gt;region&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;C-w&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;copy region to kill ring&lt;/td&gt;       &lt;td&gt;M-w&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;kill through next occurrence of &lt;em&gt;char&lt;/em&gt;&lt;/td&gt;       &lt;td&gt;M-z &lt;em&gt;char&lt;/em&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;yank back last thing kill&lt;/td&gt;       &lt;td&gt;C-y&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;replace last yank with previous kill&lt;/td&gt;       &lt;td&gt;M-y&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Marking&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;set mark here&lt;/td&gt;       &lt;td&gt;C-@ or C-SPC&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;exchange point and mark&lt;/td&gt;       &lt;td&gt;C-x C-x&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;set mark &lt;em&gt;arg&lt;/em&gt; words away&lt;/td&gt;       &lt;td&gt;M-@&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;mark &lt;strong&gt;paragraph&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;M-h&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;mark &lt;strong&gt;page&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;C-x C-p&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;mark &lt;strong&gt;sexp&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;C-M-@&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;mark &lt;strong&gt;function&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;C-x h&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Query Replace&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;interactively replace a text string&lt;/td&gt;       &lt;td&gt;M-%&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;using regular expressions&lt;/td&gt;       &lt;td&gt;M-x query-replace-regexp&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;  &lt;p&gt;Valid responses in query-replace mode are: &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;replace&lt;/strong&gt; this one, go on to next&lt;/td&gt;       &lt;td&gt;SPC&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;replace this one, don't move&lt;/td&gt;       &lt;td&gt;,&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;skip&lt;/strong&gt; to next without replacing&lt;/td&gt;       &lt;td&gt;DEL&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;replace all remaining matches&lt;/td&gt;       &lt;td&gt;!&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;back up&lt;/strong&gt; to previous match&lt;/td&gt;       &lt;td&gt;^&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;exit&lt;/strong&gt; query-replace&lt;/td&gt;       &lt;td&gt;RET&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;enter recursive edit (C-M-c to exit)&lt;/td&gt;       &lt;td&gt;C-r&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;&lt;/p&gt;   &lt;h2&gt;Multiple Windows&lt;/h2&gt;  &lt;p class="first"&gt;When two commands are shown, the second one is a similar command for a frame instead of a window.&lt;/p&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;delete all other windows&lt;/td&gt;       &lt;td&gt;C-x 1&lt;/td&gt;       &lt;td&gt;C-x 5 1&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;split window, above and below&lt;/td&gt;       &lt;td&gt;C-x 2&lt;/td&gt;       &lt;td&gt;C-x 5 2&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;delete this window&lt;/td&gt;       &lt;td&gt;C-x 0&lt;/td&gt;       &lt;td&gt;C-x 5 0&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;split window, side by side&lt;/td&gt;       &lt;td&gt;C-x 3&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;scroll other window&lt;/td&gt;       &lt;td&gt;C-M-v&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;switch cursor to other window&lt;/td&gt;       &lt;td&gt;C-x o&lt;/td&gt;       &lt;td&gt;C-x 5 o&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;select buffer in other window&lt;/td&gt;       &lt;td&gt;C-x 4 b&lt;/td&gt;       &lt;td&gt;C-x 5 b&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;display buffer in other window&lt;/td&gt;       &lt;td&gt;C-x 4 C-o&lt;/td&gt;       &lt;td&gt;C-x 5 C-o&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;find file in other window&lt;/td&gt;       &lt;td&gt;C-x 4 f&lt;/td&gt;       &lt;td&gt;C-x 5 f&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;find file read-only in other window&lt;/td&gt;       &lt;td&gt;C-x 4 r&lt;/td&gt;       &lt;td&gt;C-x 5 r&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;run Dired in other window&lt;/td&gt;       &lt;td&gt;C-x 4 d&lt;/td&gt;       &lt;td&gt;C-x 5 d&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;find tag in other window&lt;/td&gt;       &lt;td&gt;C-x 4 .&lt;/td&gt;       &lt;td&gt;C-x 5 .&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;grow window taller&lt;/td&gt;       &lt;td&gt;C-x ^&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;shrink window narrower&lt;/td&gt;       &lt;td&gt;C-x {&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;grow window wider&lt;/td&gt;       &lt;td&gt;C-x }&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Formatting&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;indent current &lt;strong&gt;line&lt;/strong&gt; (mode-dependent)&lt;/td&gt;       &lt;td&gt;TAB&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;indent &lt;strong&gt;region&lt;/strong&gt; (mode-dependent)&lt;/td&gt;       &lt;td&gt;C-M-\&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;indent &lt;strong&gt;sexp&lt;/strong&gt; (mode-dependent)&lt;/td&gt;       &lt;td&gt;C-M-q&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;indent region rigidly &lt;em&gt;arg&lt;/em&gt; columns&lt;/td&gt;       &lt;td&gt;C-x TAB&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;insert newline after point&lt;/td&gt;       &lt;td&gt;C-o&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;move rest of line vertically down&lt;/td&gt;       &lt;td&gt;C-M-o&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;delete blank lines around point&lt;/td&gt;       &lt;td&gt;C-x C-o&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;join line with previous (with arg, next)&lt;/td&gt;       &lt;td&gt;M-^&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;delete all white space around point&lt;/td&gt;       &lt;td&gt;M-\&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;put exactly one space at point&lt;/td&gt;       &lt;td&gt;M-SPC&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;fill paragraph&lt;/td&gt;       &lt;td&gt;M-q&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;set fill column&lt;/td&gt;       &lt;td&gt;C-x f&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;set prefix each line starts with&lt;/td&gt;       &lt;td&gt;C-x .&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;set face&lt;/td&gt;       &lt;td&gt;M-o&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Case Change&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;uppercase word&lt;/td&gt;       &lt;td&gt;M-u&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;lowercase word&lt;/td&gt;       &lt;td&gt;M-l&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;capitalize word&lt;/td&gt;       &lt;td&gt;M-c&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;uppercase region&lt;/td&gt;       &lt;td&gt;C-x C-u&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;lowercase region&lt;/td&gt;       &lt;td&gt;C-x C-l&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;The Minibuffer&lt;/h2&gt;  &lt;p class="first"&gt;The following keys are defined in the minibuffer.&lt;/p&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;complete as much as possible&lt;/td&gt;       &lt;td&gt;TAB&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;complete up to one word&lt;/td&gt;       &lt;td&gt;SPC&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;complete and execute&lt;/td&gt;       &lt;td&gt;RET&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;show possible completions&lt;/td&gt;       &lt;td&gt;?&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;fetch previous minibuffer input&lt;/td&gt;       &lt;td&gt;M-p&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;fetch next minibuffer input or default&lt;/td&gt;       &lt;td&gt;M-n&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;regexp search backward through history&lt;/td&gt;       &lt;td&gt;M-r&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;regexp search forward through history&lt;/td&gt;       &lt;td&gt;M-s&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;abort command&lt;/td&gt;       &lt;td&gt;C-g&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;  &lt;p&gt;Type C-x ESC ESC or C-x M-: to edit and repeat the last command that used in the minibuffer. Type F10 to active the menu bar using the minibuffer.&lt;/p&gt;   &lt;h2&gt;Buffers&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;select another buffer&lt;/td&gt;       &lt;td&gt;C-x b&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;list all buffers&lt;/td&gt;       &lt;td&gt;C-x C-b&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;kill a buffer&lt;/td&gt;       &lt;td&gt;C-x k&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Transposing&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;transpose &lt;strong&gt;characters&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;C-t&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;transpose &lt;strong&gt;words&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;M-t&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;transpose &lt;strong&gt;lines&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;C-x C-t&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;transpose sexps&lt;/td&gt;       &lt;td&gt;C-M-t&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Spelling Check&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;check spelling of current word&lt;/td&gt;       &lt;td&gt;M-$&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;check spelling of all words in region&lt;/td&gt;       &lt;td&gt;M-x ispell-region&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;check spelling of entire buffer&lt;/td&gt;       &lt;td&gt;M-x ispell-buffer&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Tags&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;find a tag (a definition)&lt;/td&gt;       &lt;td&gt;M-.&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;find next occurrence of tag&lt;/td&gt;       &lt;td&gt;C-u M-.&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;specify a new tags file&lt;/td&gt;       &lt;td&gt;M-x visit-tags-table&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;regexp search on all files in tags table&lt;/td&gt;       &lt;td&gt;M-x tags-search&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;run query-replace on all the files&lt;/td&gt;       &lt;td&gt;M-x tags-query-replace&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;continue last tags search or query-replace&lt;/td&gt;       &lt;td&gt;M-,&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Shells&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;execute a shell command&lt;/td&gt;       &lt;td&gt;M-!&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;run a shell command on the region&lt;/td&gt;       &lt;td&gt;M-|&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;filter region through a shell command&lt;/td&gt;       &lt;td&gt;C-u M-|&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;start a shell command in window \*shell\*&lt;/td&gt;       &lt;td&gt;M-x shell&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Rectangles&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;copy rectangle to register&lt;/td&gt;       &lt;td&gt;C-x r r&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;kill rectangle&lt;/td&gt;       &lt;td&gt;C-x r k&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;yank rectangle&lt;/td&gt;       &lt;td&gt;C-x r y&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;open rectangle, shifting text right&lt;/td&gt;       &lt;td&gt;C-x r o&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;blank out rectangle&lt;/td&gt;       &lt;td&gt;C-x r c&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;prefix each line with a string&lt;/td&gt;       &lt;td&gt;C-x r t&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Abbrevs&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;add global abbrev&lt;/td&gt;       &lt;td&gt;C-x a g&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;add mode-local abbrev&lt;/td&gt;       &lt;td&gt;C-x a l&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;add global expansion for this abbrev&lt;/td&gt;       &lt;td&gt;C-x a i g&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;add mode-local expansion for this abbrev&lt;/td&gt;       &lt;td&gt;C-x a i l&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;explicitly expand abbrev&lt;/td&gt;       &lt;td&gt;C-x a e&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;expand previous word dynamically&lt;/td&gt;       &lt;td&gt;M-/&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Regular Expressions&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;any single character except a newline&lt;/td&gt;       &lt;td&gt;. (dot)&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;zero or more repeats&lt;/td&gt;       &lt;td&gt;*&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;one or more repeats&lt;/td&gt;       &lt;td&gt;+&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;zero or one repeat&lt;/td&gt;       &lt;td&gt;?&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;quote regular expression special character&lt;/td&gt;       &lt;td&gt;\c&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;alternative ("or")&lt;/td&gt;       &lt;td&gt;\|&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;grouping&lt;/td&gt;       &lt;td&gt;\( ... \)&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;same text as nth group&lt;/td&gt;       &lt;td&gt;\n&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;at word break&lt;/td&gt;       &lt;td&gt;\b&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;not at word break&lt;/td&gt;       &lt;td&gt;\B&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;entity&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;&lt;strong&gt;match start&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;&lt;strong&gt;match end&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;line&lt;/td&gt;       &lt;td&gt;^&lt;/td&gt;       &lt;td&gt;$&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;word&lt;/td&gt;       &lt;td&gt;\&lt;&lt;/td&gt;       &lt;td&gt;\&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;buffer&lt;/td&gt;       &lt;td&gt;\`&lt;/td&gt;       &lt;td&gt;\'&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;class of characters&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;&lt;strong&gt;match these&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;&lt;strong&gt;match others&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;explicit set&lt;/td&gt;       &lt;td&gt;[ ... ]&lt;/td&gt;       &lt;td&gt;[^ ... ]&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;word-syntax character&lt;/td&gt;       &lt;td&gt;\w&lt;/td&gt;       &lt;td&gt;\W&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;character with syntax &lt;em&gt;c&lt;/em&gt;&lt;/td&gt;       &lt;td&gt;\sc&lt;/td&gt;       &lt;td&gt;\Sc&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;International Character Sets&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;specify principal language&lt;/td&gt;       &lt;td&gt;C-x RET l&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;show all input methods&lt;/td&gt;       &lt;td&gt;M-x list-input-methods&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;enable or disable input method&lt;/td&gt;       &lt;td&gt;C-\&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;set coding system for next command&lt;/td&gt;       &lt;td&gt;C-x RET c&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;show all coding systems&lt;/td&gt;       &lt;td&gt;M-x list-coding-systems&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;choose preferred coding system&lt;/td&gt;       &lt;td&gt;M-x prefer-coding-system&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Info&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;enter the Info documentation reader&lt;/td&gt;       &lt;td&gt;C-h i&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;find specified function or variable in Info&lt;/td&gt;       &lt;td&gt;C-h S&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;  &lt;h4&gt;Moving within a node:&lt;/h4&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;scroll forward&lt;/td&gt;       &lt;td&gt;SPC&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;scroll reverse&lt;/td&gt;       &lt;td&gt;DEL&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;beginning of node&lt;/td&gt;       &lt;td&gt;. (dot)&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h4&gt;Moving between nodes:&lt;/h4&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;next&lt;/strong&gt; node&lt;/td&gt;       &lt;td&gt;n&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;previous&lt;/strong&gt; node&lt;/td&gt;       &lt;td&gt;p&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;move &lt;strong&gt;up&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;u&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;select menu item by name&lt;/td&gt;       &lt;td&gt;m&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;select nth menu item by number (1-9)&lt;/td&gt;       &lt;td&gt;&lt;em&gt;n&lt;/em&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;follow cross reference (return with l)&lt;/td&gt;       &lt;td&gt;f&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;return to last node you saw&lt;/td&gt;       &lt;td&gt;l&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;return to directory node&lt;/td&gt;       &lt;td&gt;d&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;go to top node of Info file&lt;/td&gt;       &lt;td&gt;t&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;go to any node by name&lt;/td&gt;       &lt;td&gt;g&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h4&gt;Other:&lt;/h4&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;run Info &lt;strong&gt;tutorial&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;h&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;quit&lt;/strong&gt; Info&lt;/td&gt;       &lt;td&gt;q&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;search nodes for regexp&lt;/td&gt;       &lt;td&gt;M-s&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;    &lt;h2&gt;Registers&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;save region into register&lt;/td&gt;       &lt;td&gt;C-x r s&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;insert register contents into buffer&lt;/td&gt;       &lt;td&gt;C-x r i&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;save value of point in register&lt;/td&gt;       &lt;td&gt;C-x r SPC&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;jump to point saved in register&lt;/td&gt;       &lt;td&gt;C-x r j&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Keyboard Macros&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;start&lt;/strong&gt; defining a keyboard macro&lt;/td&gt;       &lt;td&gt;C-x (&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;end&lt;/strong&gt; keyboard macro definition&lt;/td&gt;       &lt;td&gt;C-x )&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;execute&lt;/strong&gt; last-defined keyboard macro&lt;/td&gt;       &lt;td&gt;C-x e&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;append to last keyboard macro&lt;/td&gt;       &lt;td&gt;C-u C-x (&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;name last keyboard macro&lt;/td&gt;       &lt;td&gt;M-x name-last-kbd-macro&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;insert Lisp definition in buffer&lt;/td&gt;       &lt;td&gt;M-x insert-kbd-macro&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Commands dealing with Emacs Lisp&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;eval &lt;strong&gt;sexp&lt;/strong&gt; before point&lt;/td&gt;       &lt;td&gt;C-x C-e&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;eval current &lt;strong&gt;defun&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;C-M-x&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;eval &lt;strong&gt;region&lt;/strong&gt;&lt;/td&gt;       &lt;td&gt;M-x eval-region&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;read and eval minibuffer&lt;/td&gt;       &lt;td&gt;M-:&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td&gt;load from standard system directory&lt;/td&gt;       &lt;td&gt;M-x load-library&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;   &lt;h2&gt;Simple Customization&lt;/h2&gt;  &lt;table class="muse-table" border="2" cellpadding="5"&gt;   &lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;customize variables and faces&lt;/td&gt;       &lt;td&gt;M-x customize&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;  &lt;p&gt;Making global key bindings in Emacs Lisp (examples): &lt;/p&gt;&lt;pre class="example"&gt;(global-set-key "\C-cg" 'goto-line)&lt;br /&gt;(global-set-key "\M-#" 'query-replace-regexp)&lt;br /&gt;&lt;/pre&gt;   &lt;h2&gt;Writing Commands&lt;/h2&gt;  &lt;p class="quoted"&gt;(defun &lt;em&gt;command-name&lt;/em&gt; (&lt;em&gt;args&lt;/em&gt;)&lt;br /&gt;"&lt;em&gt;documentation&lt;/em&gt;"&lt;br /&gt;(interactive "&lt;em&gt;template&lt;/em&gt;") &lt;em&gt;&lt;br /&gt;body&lt;/em&gt;)&lt;/p&gt;&lt;blockquote&gt;  &lt;/blockquote&gt;  &lt;p&gt;An example: &lt;/p&gt;&lt;pre class="example"&gt;(defun this-line-to-top-of-window (line)&lt;br /&gt;"Reposition line point is on to top of window.&lt;br /&gt;With ARG, put point on line ARG."&lt;br /&gt;(interactive "P")&lt;br /&gt;(recenter (if (null line)&lt;br /&gt;            0&lt;br /&gt;          (prefix-numeric-value line))))&lt;br /&gt;&lt;/pre&gt;  &lt;p&gt;The interactive spec says how to read arguments interactively. Type C-h f interactive for more details.&lt;/p&gt;  &lt;hr /&gt; Copyright (c) 2005 Free Software Foundation, Inc. v2.3 for GNU Emacs 22, 2005 designed by Stephen Gildea.  &lt;p&gt;Permission is granted to make and distribute copies of this card provided the copyright notice and this permission notice are preserved on all copies.&lt;/p&gt;  &lt;p&gt;For copies of GNU Emacs manual, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA&lt;/p&gt;  &lt;p&gt;&lt;a name="END" id="END"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;!-- Page published by Emacs Muse ends here --&gt;                                   &lt;table width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align="left"&gt;           &lt;span class="footrelated"&gt;                      &lt;/span&gt;     &lt;br /&gt;&lt;/td&gt;         &lt;td align="right"&gt;           &lt;span class="footdate"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-2635071042973655943?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/2635071042973655943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=2635071042973655943' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/2635071042973655943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/2635071042973655943'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/06/gnu-emacs-reference-card.html' title='Gnu Emacs Reference Card'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-8935442155888723540</id><published>2007-06-02T15:07:00.000+02:00</published><updated>2007-06-02T15:10:30.022+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Emacs 22 Released</title><content type='html'>Finally...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;a aiotitle="Development &amp; &amp;quot;Coming Soon&amp;quot;" name="Development" href="http://www.gnu.org/software/emacs/#TOCDevelopment" id="Development"&gt;Development &amp;amp; "Coming Soon"&lt;/a&gt;&lt;/b&gt; &lt;p&gt;GNU Emacs is actively being developed,&lt;/p&gt; &lt;ul&gt;&lt;li&gt;The next release will have improved &lt;a aiotitle="Unicode" href="http://www.unicode.org/"&gt;Unicode&lt;/a&gt; support.&lt;/li&gt;&lt;li&gt;For more info read next release's anticipated &lt;a aiotitle="TODOs" href="http://savannah.gnu.org/cgi-bin/viewcvs/emacs/emacs/etc/TODO"&gt;TODOs&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;The &lt;a aiotitle="GNU Emacs CVS repository" href="http://savannah.gnu.org/cgi-bin/viewcvs/emacs/"&gt;GNU Emacs CVS repository&lt;/a&gt; is available for general access courtesy of &lt;a aiotitle="savannah.gnu.org" href="http://savannah.gnu.org/"&gt;savannah.gnu.org&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a aiotarget="false" aiotitle="Current Stable Release" name="Stable" href="http://www.gnu.org/software/emacs/#TOCStable" id="Stable"&gt;Current Stable Release&lt;/a&gt;&lt;/b&gt; &lt;ul&gt;&lt;li&gt;Latest stable release: &lt;!-- Update Token Below --&gt;  &lt;b&gt;22.1&lt;/b&gt; (June 2, 2007)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-8935442155888723540?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/8935442155888723540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=8935442155888723540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/8935442155888723540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/8935442155888723540'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/06/emacs-22-released.html' title='Emacs 22 Released'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-4658343348361569569</id><published>2007-05-17T02:02:00.000+02:00</published><updated>2007-05-24T03:26:02.469+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unicad'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Unicad 0.65</title><content type='html'>&lt;h2&gt;&lt;a aiotarget="false" aiotitle="Unicad.el" href="http://unicad.googlecode.com/files/unicad-0.65.tar.gz"&gt;Unicad.el&lt;/a&gt; FAQ&lt;/h2&gt;&lt;br /&gt;project address: &lt;a aiotitle="http://code.google.com/p/unicad/" href="http://code.google.com/p/unicad/"&gt;http://code.google.com/p/unicad/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;What is Unicad?&lt;/h3&gt;  &lt;p class="first"&gt;Unicad is short for &lt;span style="font-weight: bold;"&gt;Uni&lt;/span&gt;versal &lt;span style="font-weight: bold;"&gt;C&lt;/span&gt;harset &lt;span style="font-weight: bold;"&gt;A&lt;/span&gt;uto &lt;span style="font-weight: bold;"&gt;D&lt;/span&gt;etector. It is an Emacs-Lisp port of Mozilla Universal Charset Detector.&lt;/p&gt;   &lt;h3&gt;What can Unicad do?&lt;/h3&gt;  &lt;p class="first"&gt;Unicad helps Emacs to guess the correct coding system when opening a file.&lt;/p&gt;   &lt;h3&gt;What languages and coding systems does Unicad support?&lt;/h3&gt;  &lt;ul&gt;&lt;li&gt;Chinese Simplified  (gb18030, gbk, gb2312, hz-gb-2312, iso-2022-cn)&lt;/li&gt;&lt;li&gt;Chinese Triditional (big5, gb18030, gbk, euc-tw)&lt;/li&gt;&lt;li&gt;Japanese (sjis, euc-jp, iso-2022-jp)&lt;/li&gt;&lt;li&gt;Korean (euc-kr, iso-2022-kr)&lt;/li&gt;&lt;li&gt;Greek (iso-8859-7, windows-1253)&lt;/li&gt;&lt;li&gt;Russian (iso-8859-5, windows-1251, koi8-r, ibm855)&lt;/li&gt;&lt;li&gt;Bulgarian (iso-8859-5, windows-1251)&lt;/li&gt;&lt;li&gt;Western European (latin-1)&lt;/li&gt;&lt;li&gt;Central European (latin-2)&lt;/li&gt;&lt;/ul&gt;   &lt;h3&gt;Who should use Unicad?&lt;/h3&gt;  &lt;p class="first"&gt;1. Emacs Users. Unicad is an Emacs extension that written in Elisp. It is designed and works for Emacs.&lt;/p&gt;  &lt;p&gt;2. Multilanguage Users. If you are English only speakers, then there is no need to install Unicad on Emacs. Otherwise, if you need to read and edit files in multiple language and use different coding systems, Unicad will definitely help you in recognizing coding systems.&lt;/p&gt;  &lt;p&gt;3. Anyone who is tired of struggling with garbled text. Normal Text Editors are not so intelligent to choose correct coding system among various and complicated charsets. I suggest you try the most powerful text editor ever in the world - Emacs and Unicad.&lt;/p&gt;   &lt;h3&gt;How to use Unicad?&lt;/h3&gt;  &lt;p&gt;&lt;a aiotitle="Download" href="http://unicad.googlecode.com/files/unicad-0.65.tar.gz"&gt;Download&lt;/a&gt; the latest unicad.el, copy it to your Emacs load path (e.g. site-lisp directory), and add the following line to your ~/.emacs: &lt;/p&gt;&lt;pre class="example"&gt;(require 'unicad)&lt;/pre&gt;  &lt;p&gt;You may byte compile this file to speed up the charset detecting process.&lt;/p&gt;    &lt;h3&gt;What's the difference between Unicad and Mozilla Universal Charset Detector?&lt;/h3&gt;  &lt;ul&gt;&lt;li&gt;optimized for detecting shorter text files.&lt;/li&gt;&lt;li&gt;add support for Central European Languages, which use iso-8859-2 coding system.&lt;/li&gt;&lt;li&gt;add support for Traditional Chinese that uses gbk coding system.&lt;/li&gt;&lt;li&gt;add support for single byte only katakana that uses sjis coding system.&lt;/li&gt;&lt;/ul&gt;     &lt;!-- Page published by Emacs Muse ends here --&gt;                                   &lt;table width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align="left"&gt;           &lt;span class="footrelated"&gt;                      &lt;/span&gt; &lt;br /&gt;&lt;/td&gt;         &lt;td align="right"&gt;           &lt;span class="footdate"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hints id="hah_hints"&gt;&lt;/hints&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-4658343348361569569?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/4658343348361569569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=4658343348361569569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/4658343348361569569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/4658343348361569569'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/05/unicad-064.html' title='Unicad 0.65'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-999064155891497048</id><published>2007-05-10T19:15:00.000+02:00</published><updated>2007-05-16T16:25:56.370+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>为什么我偏爱 Emacs</title><content type='html'>&lt;h2&gt;为什么我偏爱 Emacs&lt;/h2&gt;  &lt;p class="first"&gt;在Windows下我通常只使用 Emacs (NTEmacs)，用TotalCommander的F3快速查看文 件；在Linux下也基本用 Emacs，用 Vim 修改单个文件。Emacs和一般编辑器相比 到底有什么优点呢？尤其是和UltraEdit，EditPlus等等这样的所谓主流的Win32编辑器相比。&lt;/p&gt;  &lt;h3&gt;免费并且开源&lt;/h3&gt;  &lt;p class="first"&gt;虽然盗版满天飞，但是如果是工作的人用盗版软件做和工作相关的开发任务还是 不合适的。&lt;/p&gt;   &lt;h3&gt;全定制&lt;/h3&gt;  &lt;p class="first"&gt;包括外观，配色，字体，不同的中英文字体，编码，模式，快捷键，自建函数等 等一切都是可定制的，这种自由感是在win32软件里体会不到的。&lt;/p&gt;   &lt;h3&gt;解放鼠标&lt;/h3&gt;  &lt;p class="first"&gt;在噼里啪啦码字的过程中，如果还有伸手去找鼠标是很不爽的事。既然不需要鼠 标了，菜单栏，工具栏这些也都不需要了，这样可以同时扩大可视面积。在分辨 率有限的情况下看到更多有用的信息。&lt;/p&gt;   &lt;h3&gt;随意分割窗口&lt;/h3&gt;  &lt;p class="first"&gt;在 Emacs 里，可以任意分割窗口，可以水平分割，可以垂直分割，可以先水平分 割再垂直分割。还可以在2个或更多的窗口中看同一个文件。这对于编辑长文件是 很有用的，经常需要看同一个文件不同部分。&lt;/p&gt;   &lt;h3&gt;更好的选定方式&lt;/h3&gt;  &lt;p class="first"&gt;在 Win32 软件里，选定区域是一种连续的操作，稍不当心就得重新选过，如果 区域开头差了一个字，又得重新选了。&lt;/p&gt;  &lt;p&gt;在 Emacs 里的 mark 完全是一种全新的体验。在定好 mark 头之后可以用各种 方式移动，比如用 isearch 来更快的定位。还可以用 C-x C-x 交换 mark 和 point 的位置，调整选定的区域。&lt;/p&gt;  &lt;p&gt;在你进行了复制或者调整缩进的操作之后，还可以用 C-x C-x 再次高亮前一次 选中的区域。&lt;/p&gt;   &lt;h3&gt;列操作&lt;/h3&gt;  &lt;p class="first"&gt;我总是不能理解为什么老有人说UE的列操作多么优秀，却不见有什么例子以显示 哪些列操作是UE独有的。事实上我就觉得 Emacs 的列操作要方便得多。Emacs里 面根本不需要特殊的列模式。你可以像往常一样选中区域然后用列复制，列删除 等等命令就可以了。&lt;/p&gt;   &lt;h3&gt;dired 模式&lt;/h3&gt;  &lt;p class="first"&gt;可以把它看作一个 Emacs 文件管理器，在 dired-mode 里浏览文件，打开文件， 新建文件夹，改名等等。说起修改文件名，在 dired 里使用 wdired 配合列操作， 宏，正则表达式，这恐怕最方便的批处理改名软件了。比如一个文件夹里有20集 TV，名字是 Friends - s02e01 - TOW xxxx.avi 之类的，然后又从别处下载了 40个字幕文件，文件名是 0201.en.srt 0201.cn.srt 之类的，如何把字幕文件名 改为和相应的视频文件名呢？难道一个一个复制粘贴？如果有10季一共两百多集 怎么办？这时候宏和列操作就是最方便的了。只要定义一次宏，然后运行20次就 搞定了。切身体验，我觉得比Totalcommand 的批处理重命名还要好用。UE里面有 吗？&lt;/p&gt;&lt;h3&gt;Do What I Mean (dwim)&lt;br /&gt;&lt;/h3&gt;  &lt;p class="first"&gt;这是个很有意思的功能，Emacs 会自动猜测你想要做什么，用一个命令，或者一个快捷键就能完成好多操作。比如 comment-dwim (M-;)，在代码中如果没有选中区域，就是在这一行后面加上注释；如果选中一块区域，就会注释一块区域；如果选中的这块区域已经都是注释了，那就是反注释这块区域。&lt;br /&gt;&lt;/p&gt;   &lt;h3&gt;集成 shell&lt;/h3&gt;  &lt;p class="first"&gt;M-x eshell 可以启动 Emacs shell，方便的调试程序，运行脚本，文件管理等 等 command line 能做的事。&lt;/p&gt;&lt;p&gt;相关链接：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://jasonal.blogspot.com/2006/12/30emacs.html"&gt;30分钟快速上手Emacs&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="Win32下的Emacs字体设置" href="http://jasonal.blogspot.com/2006/10/emacs-font-set-for-windows.html"&gt;Win32下的Emacs字体设置&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="Getting CVS Emacs (下载cvs Emacs)" href="http://jasonal.blogspot.com/2006/05/getting-cvs-emacs-23.html"&gt;Getting CVS Emacs (下载cvs Emacs)&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="Emacs常用快捷键" href="http://jasonal.blogspot.com/2006/04/emacs_24.html"&gt;Emacs常用快捷键&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="Emacs一些常用包" href="http://jasonal.blogspot.com/2006/04/emacs_114593289264544642.html"&gt;Emacs一些常用包&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="Emacs ido.el" href="http://jasonal.blogspot.com/2006/06/emacs-idoel.html"&gt;Emacs ido.el&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="viper-mode in Emacs" href="http://jasonal.blogspot.com/2006/12/viper-mode-in-emacs.html"&gt;viper-mode in Emacs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="unicad.el (自动编码识别)" href="http://jasonal.blogspot.com/2007/02/unicadel.html"&gt;unicad.el (自动编码识别)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="Emacs for Windows 注册表设置" href="http://jasonal.blogspot.com/2006/04/emacs-for-windows.html"&gt;Emacs for Windows 注册表设置&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="Trick in query-replace-regexp" href="http://jasonal.blogspot.com/2006/09/trick-in-query-replace-regexp.html"&gt;Trick in query-replace-regexp&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hints id="hah_hints"&gt;&lt;/hints&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-999064155891497048?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/999064155891497048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=999064155891497048' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/999064155891497048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/999064155891497048'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/05/emacs.html' title='为什么我偏爱 Emacs'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-7141656279677145154</id><published>2007-03-26T21:56:00.001+02:00</published><updated>2007-03-26T21:56:50.187+02:00</updated><title type='text'>Test from Emacs</title><content type='html'>&lt;br /&gt;    &lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;br /&gt;&lt;br /&gt;This is a post from g-client, an Emacs client for Google Service.&lt;br /&gt;Here is the website for &lt;a href='http://emacspeak.blogspot.com/2007/03/emacs-client-for-google-services.html'&gt;g-client&lt;/a&gt;.&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-7141656279677145154?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/7141656279677145154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=7141656279677145154' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/7141656279677145154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/7141656279677145154'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/03/test-from-emacs.html' title='Test from Emacs'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-3209076578870787140</id><published>2007-03-19T17:33:00.000+01:00</published><updated>2007-03-19T17:40:56.634+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>curl and xsltproc for cygwin</title><content type='html'>for curl under cygwin you need to install curl and libcurl3, which could be found in any cygwin ftp mirror.&lt;br /&gt;For example:&lt;br /&gt;http://ftp.uni-kl.de/pub/cygwin/release/curl/&lt;br /&gt;unpack the tarballs to cygwin bin directory. done.&lt;br /&gt;&lt;br /&gt;for xsltproc you need to install xmlsec, xsldbg, libxslt and libxml, which can be found here:&lt;br /&gt;http://www.zlatkovic.com/libxml.en.html&lt;br /&gt;&lt;hints id="hah_hints"&gt;&lt;/hints&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-3209076578870787140?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/3209076578870787140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=3209076578870787140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/3209076578870787140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/3209076578870787140'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/03/curl-and-xsltproc-for-cygwin.html' title='curl and xsltproc for cygwin'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-5123462917390438296</id><published>2007-03-06T16:31:00.000+01:00</published><updated>2007-03-09T18:57:43.438+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FVWM'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><title type='text'>FVWM-Crystal</title><content type='html'>I have tried some window managers these days, such as Beryl and FVWM. The 3D effect of Beryl is really astonishing but its requirement is too high. Finally I found fvwm-crystal. It is both nice looking and light-weighted. I like it.&lt;br /&gt;&lt;br /&gt;However, I found the fvwm-crystal project is not well documented. Here are some tips for the configuration of fvwm-crystal.&lt;br /&gt;&lt;br /&gt;* fvwm-crystal is actually a nice configuration of fvwm with some handy small tools.  So almost all the configuration for fvwm can be used directly on fvwm-crystal.&lt;br /&gt;&lt;br /&gt;* The user configuration file is stored in ~/.fvwm-crystal/userconfig (for fvwm-crystal 3.0.4 and above). The configuration file for fvwm-crystal 3.0.3 and below is still in ~/.fvwm/ .&lt;br /&gt;&lt;br /&gt;* The most default key bindings are Meta- or Meta-Shift- which conflict with Emacs key bindings. So I have to disable them all like this:&lt;br /&gt;&lt;blockquote&gt;Key 1 A MS -   # disable M-S-1&lt;br /&gt;Key X A M -    # disable M-x&lt;/blockquote&gt;&lt;br /&gt;The default key bindings are in /usr/local/share/fvwm-crystal/fvwm/components/bindings/ .&lt;br /&gt;&lt;br /&gt;* Font set. The default font is Verdana. So the multibyte characters are not able to be displayed correctly. I have to change it to font like Vera Sans YuanTi. The window title bar font configuration is:&lt;br /&gt;&lt;blockquote&gt;Style * Font "Shadow=1 1:StringEncoding=gbk-0:xft:Vera Sans YuanTi:Bold:pixelsize=12:minspace=True:encoding=iso10646-1"&lt;/blockquote&gt;&lt;br /&gt;* I think 8 virtual desktops are too many. So change it to 6:&lt;br /&gt;&lt;blockquote&gt;DeskTopSize 6x1&lt;/blockquote&gt;&lt;br /&gt;* The "suspend" in the main menu doesn't work quite well. It will logout and then suspend to memory. I use Fn+F4 on my ThinkPad instead. This works fine. Maybe you need to install xscreensaver.&lt;br /&gt;&lt;br /&gt;* Removable devices can't be auto mounted as in GNOME. You can install ivman and put the following line into ~/.bashrc:&lt;br /&gt;&lt;blockquote&gt;ivman --nofork &gt; /dev/null 2&gt;&amp;1 &amp;amp;&lt;br /&gt;&lt;/blockquote&gt;&lt;a href="http://www.xaprb.com/blog/2006/05/20/how-to-auto-mount-removable-devices-in-gnulinux/"&gt;Here&lt;/a&gt; is some more information about how to auto mount removable devices.&lt;br /&gt;&lt;br /&gt;* KDE applications such as Amarok and Kopete don't stay in trayer. You may need to start Amarok this way:&lt;br /&gt;&lt;blockquote&gt;amarok&lt;br /&gt;dcop kded kded loadModule kdetrayproxy&lt;/blockquote&gt;After that, other kde apps like Kopete will stay in trayer as well. However, I have tried to put the second line in to InitFunction or StartFunction but it doesn't work.&lt;br /&gt;&lt;br /&gt;* Some startup applications. You can add startup apps like this:&lt;br /&gt;&lt;blockquote&gt;AddToFunc InitFunction&lt;br /&gt;+ I Exec exec dcop kded kded loadModule kdetrayproxy&lt;br /&gt;+ I Test (x gkrellm) Exec pidof gkrellm || exec gkrellm&lt;br /&gt;+ I Test (x update-notifier) Exec exec update-notifier&lt;br /&gt;+ I Test (x gdeskcal) X gdeskcal&lt;/blockquote&gt;&lt;br /&gt;***&lt;hints id="hah_hints"&gt;&lt;/hints&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-5123462917390438296?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/5123462917390438296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=5123462917390438296' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/5123462917390438296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/5123462917390438296'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/03/fvwm-crystal.html' title='FVWM-Crystal'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-2396019310069487104</id><published>2007-02-12T16:43:00.000+01:00</published><updated>2007-07-03T22:10:35.501+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unicad'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>unicad.el</title><content type='html'>Emacs文件编码识别，解决乱码问题&lt;br /&gt;&lt;br /&gt;unicad project is now hosted on Google Code: &lt;a aiotitle="http://code.google.com/p/unicad/ jasonal's unicad project" href="http://code.google.com/p/unicad/"&gt;http://code.google.com/p/unicad/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The latest unicad.el can be find in the &lt;a aiotitle="jasonal's unicad.el" href="http://code.google.com/p/unicad/downloads/list"&gt;download&lt;/a&gt; list.&lt;br /&gt;&lt;br /&gt;I would like to introduce unicad.el, a Universal charset auto detector for GNU Emacs.&lt;br /&gt;&lt;br /&gt;If you have to deal text files in multi language (Chinese, Japanese, Russian, German or Polish) or have the experience of reading a garbled text file or being confused to choose a correct encoding, this unicad.el is here for you. It can tell (or guess) which coding-system is most probably for a plain text file. It's very easy to use unicad.el. Simply &lt;a aiotitle="jasonal's unicad download google code" href="http://code.google.com/p/unicad/downloads/list"&gt;download&lt;/a&gt; and copy this file to your emacs loading path (like "site-lisp"), add following lines to your ~/.emacs:&lt;br /&gt;&lt;blockquote&gt;(require 'unicad)&lt;/blockquote&gt;done.&lt;br /&gt;&lt;br /&gt;It's supposed that the coding detection process will not interfere your regular edit tasks. If you found the speed of find-file is slowed down, you'd better byte-compile this file. &lt;hints id="hah_hints"&gt;&lt;/hints&gt;&lt;br /&gt;&lt;br /&gt;Hope you'll enjoy it.&lt;br /&gt;&lt;br /&gt;&lt;a aiotitle="Download page of jasonal's unicad.el" href="http://code.google.com/p/unicad/downloads/list"&gt;Download page of unicad.el&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-2396019310069487104?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/2396019310069487104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=2396019310069487104' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/2396019310069487104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/2396019310069487104'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2007/02/unicadel.html' title='unicad.el'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-116577976332319658</id><published>2006-12-10T20:40:00.000+01:00</published><updated>2007-06-11T09:56:24.755+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>30分钟快速上手Emacs (初级)</title><content type='html'>&lt;h3&gt;简介&lt;/h3&gt;  &lt;p class="first"&gt;没有听说过 Emacs 吗？没有关系，花上30分钟就能了解和熟悉这个古老而强大 的编辑器。他被很多人称作世界上最强大的编辑器。用户从无数高手到IT民工到 普通文本编辑器用户，可以符合几乎所有人的需求。甚至可以在 Emacs 里运行 音乐播放器、网页浏览器等等，Emacs 更像是一个操作平台。&lt;/p&gt;  &lt;p&gt;使用 Emacs 可以完全抛弃鼠标，不必在打字的同时把手移开键盘找鼠标，不必在 一大堆深藏不露的菜单里寻找那些常用功能，也不必被一条条工具栏遮挡视线。 大多数的 Windows 编辑器都有一条菜单栏，n条工具栏。菜单里有无数选项，很 多选项都会弹出一个对话框，这个对话框又会带有层层叠叠的标签，每个标签里 又有很多输入框很多按钮。一个简单的把所有字母大写的命令就要在菜单里翻半 天，说不定还找不到，而他们的帮助信息又总是不知所云。而 Emacs 的大多数操 作都可以通过快捷键或直接输入命令完成，而且有着极好的帮助系统，可以通过 多种方式找到你想要的命令或按键。&lt;/p&gt;  &lt;p&gt;不要被 Emacs 简单的外观和与众不同的操作方式迷惑，上手 Emacs 并不是什么 难事，看一遍 Tutorial 就可以了，Emacs23 已经带着多种语言版本的快速指南， 包括中文。仍然觉得 Tutor 太长？那可以继续看本文。&lt;/p&gt;   &lt;h3&gt;按键说明&lt;/h3&gt;  &lt;p class="first"&gt;首先说明一下，Emacs 的按键表示方法。最常用的是 Ctrl 和 Alt 的组合键， 分别用 C 和 M 表示，比如: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;C-x 就是 Ctrl+x，&lt;/li&gt;&lt;li&gt;M-x 就是 Alt+x，&lt;/li&gt;&lt;li&gt;C-M-f 就是 Ctrl+Alt+f，&lt;/li&gt;&lt;li&gt;M-% 就是 Alt+%，实际上是 Alt+Shift+5&lt;/li&gt;&lt;li&gt;C-x C-f 就是 Ctrl+x 然后再按 Ctrl+f，中间可以一直按着 Ctrl 也可以松 开，无所谓间隔多长时间。&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;这样你就可以简单的用 C 和 M 表示 ctrl 和 alt 了。Shift 可以用 S 表示。&lt;/p&gt;  &lt;p&gt;键盘上的特殊按键用&lt;&gt;表示，比如&lt;ret&gt;回车，&lt;spc&gt;空格，&lt;up&gt;方向键上，&lt;f1&gt; 等等，一看就知道什么意思。&lt;/f1&gt;&lt;/up&gt;&lt;/spc&gt;&lt;/ret&gt;&lt;/p&gt;  &lt;p&gt;不必追究为什么把 alt 写为 M，因为你这次只有30分钟时间。&lt;/p&gt;   &lt;h3&gt;下载及安装&lt;/h3&gt;  &lt;h4&gt;Windows 用户&lt;/h4&gt;  &lt;p class="first"&gt;Windows 用户可以去 &lt;a href="http://ntemacs.sf.net/"&gt;http://ntemacs.sf.net&lt;/a&gt; 下载可执行文件或者源代码。建议 下载Emacs23.x 。这是一个 7zip 的自动解压缩包，解压到你喜欢的目录就可以 了。&lt;/p&gt;  &lt;p&gt;到这里你大概用了5分钟，当然，下载和解压缩时间不算在内。:)&lt;/p&gt;   &lt;h4&gt;Linux 用户 (windows 用户可以忽略)&lt;/h4&gt;  &lt;p class="first"&gt;可以下载 CVS 的 Emacs 代码，编译一下就好了。下载 CVS Emacs23:&lt;/p&gt;  &lt;p&gt;$ cvs -z3 -d:pserver:&lt;a href="mailto:anonymous@cvs.savannah.gnu.org"&gt;anonymous@cvs.savannah.gnu.org&lt;/a&gt;:/sources/emacs co -r emacs-unicode-2 emacs&lt;/p&gt;  &lt;p&gt;编译:&lt;/p&gt;  &lt;p&gt;$ cd emacs $ ./configure —enable-font-backend —with-xft —with-freetype —with-gtk&lt;/p&gt;  &lt;p&gt;注意 configure 的输出，是否缺少什么东西，没有问题的话就可以 make:&lt;/p&gt;  &lt;p&gt;$ make bootstrap&lt;/p&gt;  &lt;p&gt;运行一下 src/emacs 如果没有问题的话就可以安装到默认路径：&lt;/p&gt;  &lt;p&gt;$ sudo make install&lt;/p&gt;    &lt;h3&gt;常用命令&lt;/h3&gt;  &lt;h4&gt;启动和退出&lt;/h4&gt;  &lt;p class="first"&gt;Windows 用户可以用 Emacs bin 目录下的 runemacs.exe 启动，Linux 用户键 入 emacs &amp; 就可以了。&lt;/p&gt;  &lt;p&gt;启动 Emacs 后应该能看到这个界面：&lt;/p&gt;  &lt;span id="BlogViewId" sortmode="Normal" sortkey="" firsthandle="cns!E9B3AD00B7B35ECC!1655" lasthandle="cns!E9B3AD00B7B35ECC!1615"&gt;&lt;a aiotitle="Emacs GUI" href="http://jasonal00.googlepages.com/emacs-gui.png"&gt;&lt;img alt="jasonal CVS Emacs 23 Emacs23 Startup GUI" src="http://jasonal00.googlepages.com/emacs-gui.png" height="300" width="400" /&gt;&lt;/a&gt;  &lt;/span&gt;  &lt;p&gt;退出 Emacs 按 C-x C-c (就是 Ctrl+x 接着按 Ctrl+c)。&lt;/p&gt;   &lt;h4&gt;打开和保存文件&lt;/h4&gt;  &lt;p class="first"&gt;启动 Emacs 后，按 C-x C-f，minibuffer (就是 Emacs 最下面一条) 会提示路 径，你可以在这里输入路径名和文件名，或者&lt;ret&gt;回车看到这个目录列表。可以 用方向键移动光标到文件名上&lt;ret&gt;回车打开文件，或者在子目录上&lt;ret&gt;进入子 目录，在 .. 上&lt;ret&gt;进入上一层目录。&lt;/ret&gt;&lt;/ret&gt;&lt;/ret&gt;&lt;/ret&gt;&lt;/p&gt;  &lt;p&gt;打开文件后像往常一样编辑，随便按字母键输入一些字符。按 C-x C-s 保存文件。按 C-x k 回车关闭这个 buffer。&lt;/p&gt;   &lt;h4&gt;小结：按键说明&lt;/h4&gt;  &lt;p class="first"&gt;这里可以看到很多 C-x 开头的组合键，这些通常都是 Emacs 预先定义，全局性 的命令。按了 C-x 不动，一秒钟后 minibuffer 提示 C-x- ，表示 Emacs 正在 等待用户按下一个键。如果你想取消这次按键，可以接下去按 C-g，minibuffer 提示 C-x C-g is undefined 也就是说 Emacs 什么都没有执行。C-g 一般都是取 消命令，取消按键。如果按了 C-x C-h 就会出现一个帮助 buffer，里面是以 C-x 开头的按键帮助。C-h 是一个帮助按键。如何获得更多的帮助，会在之后的 小节介绍。C-c 开头的按键通常是用户自定义的按键和扩展包或扩展模式定义的 按键，同样也可以获得帮助信息。&lt;/p&gt;   &lt;h4&gt;选定区域，剪切、复制、粘贴&lt;/h4&gt;  &lt;p class="first"&gt;好了，到现在为止你大概一共花了 10 分钟吧。&lt;/p&gt;  &lt;p&gt;你可以用鼠标拖选一块区域。当然，最好用键盘。按 C-@，minibuffer 提示 Mark set，设定了一个 mark。然后移动光标，这时候你就选定了光标和 Mark 之 间的区域。什么都看不到？你可以按 C-w，这块区域就消失了，C-w 是剪切。按 C-x u 可以撤销上一次的剪切，C-x u 是取消。你肯定想看到你到底选中了哪块 区域，可以按M-x 然后输入 transient-mark-mode ，回车。这次你就可以看到你 选中了哪块区域了。M-x 是执行 Emacs 命令。&lt;/p&gt;&lt;p&gt;【插播广告】如果是德语键盘，在 Windows 下很可能按不出 C-@, 而 C-&lt;spc&gt;又被输入法占去了。所以最好自己设定 set-mark 的按键。比如把 C-" 设为 mark 命令。按 C-: (ctrl-冒号) 输入下面这句话，然后回车：&lt;br /&gt;&lt;/spc&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;(global-set-key (kbd "C-\"") 'set-mark-command)&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;可以在你的.emacs文件里加入类似的语句&lt;/p&gt;&lt;p&gt;【广告结束】&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Emacs 有一个很有用的功能，在你选定了区域之后按 C-x C-x 可以交换光标 (point) 和 Mark 的位置，这样你就可以修改调整你选定的区域了。&lt;/p&gt;  &lt;p&gt;按 C-g 取消选定的区域。&lt;/p&gt;  &lt;p&gt;重新用 C-@ 选定一块区域，按 M-w，这是复制，移动光标到别处，按 C-y，这是 粘贴。紧接着再按一次 M-y，这时可以看到粘贴的内容变成了上一次剪切的内容。 再按 M-y 又变成之前一次复制的内容。&lt;/p&gt;  &lt;p&gt;C-k 可以剪切一行。连续的 C-k 会把剪切的内容放在一起，一次 C-y 就可以把 之前的 n 行一起贴上。&lt;/p&gt;  &lt;p&gt;C-x u 可以撤销，不过这个撤销和常规 windows 程序的撤销不太一样。按了 C-x u 撤销后，如果移动一下光标，再按一次 C-x u，可以撤销之前的撤销命令。 这样相当于是 redu。&lt;/p&gt;  &lt;p&gt;小结： &lt;/p&gt;&lt;ul&gt;&lt;li&gt;C-@ 选定区域&lt;/li&gt;&lt;li&gt;C-w 剪切&lt;/li&gt;&lt;li&gt;M-w 复制&lt;/li&gt;&lt;li&gt;C-y 粘贴&lt;/li&gt;&lt;li&gt;M-y 粘贴剪贴板之前的内容&lt;/li&gt;&lt;li&gt;C-k 剪切一行&lt;/li&gt;&lt;li&gt;C-x u 撤销&lt;/li&gt;&lt;/ul&gt;   &lt;h4&gt;查找&lt;/h4&gt;  &lt;p class="first"&gt;其他 windows 程序的查找通常会跳出一个对话框，这很讨厌，会遮住文本内容， 有时候我就会忘了我到底要找什么。Emacs 就不会这样。按 C-s 是查找， minibuffer 提示 I-search: 接下来你可以输入你要找的词，比如想找 windows， 输入 w，Emacs 开始找到 w，光标移动到 w 上，接着输入 i，Emacs 找到 wi， 并注意到Emacs 会同时高亮所有的 wi，接着输入 n，Emacs 找到 win，等等。这 就是 incremetal search，它的好处是，你想要找 windows，但实际上你只要输 入 win 就能定位到 windows 上了，不需要继续输入 dows 了。继续按 C-s 找下 一个匹配的。C-r 往回查找。按回车或者方向键结束本次查找，再按两次 C-s 重 复上次查找，按 C-g 取消查找，光标回到原处。&lt;/p&gt;  &lt;p&gt;C-s 或 C-r 也可以用作光标定位，比如想要移到前面 Emacs 处，就可以 C-r Emacs，效率很高，可以说是指哪打哪。&lt;/p&gt;  &lt;p&gt;如果查找输入的全是小写，那么这次查找是大小写不敏感的，如果输入字符中有 大写字母，那么这次查找就是大小写敏感的。很智能吧。&lt;/p&gt;  &lt;p&gt;C-M-s 或 C-M-r 是正则表达式查找。或者在 C-s 之后按 M-r 也可以切换到正则 表达式查找。这里不仔细讲 Emacs 的正则表达式是怎么样的。那样会多花一个小 时。&lt;/p&gt;   &lt;h4&gt;替换&lt;/h4&gt;  &lt;p class="first"&gt;M-% 是 query-replace，输入查找内容和替换内容，然后 Emacs 会询问是否要 替换，y 替换，n 不替换，! 替换光标之后所有，q 结束，? 可以得到帮助。&lt;/p&gt;  &lt;p&gt;Emacs 的替换有一个很好的特性，可以只在选定区域内进行替换。这样就可以放 心大胆地使用 ! 替换所用，而不用担心超出范围了。&lt;/p&gt;  &lt;p&gt;C-M-% 是正则表达式的替换。&lt;/p&gt;  &lt;p&gt;小结：&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;C-s 和 C-r 向前向后查找&lt;/li&gt;&lt;li&gt;C-% 替换&lt;/li&gt;&lt;li&gt;C-M-s 和 C-M-r 向前向后正则表达式查找&lt;/li&gt;&lt;li&gt;C-M-% 正则表达式替换&lt;/li&gt;&lt;/ul&gt;    &lt;h3&gt;寻求帮助&lt;/h3&gt;  &lt;p class="first"&gt;到这里你用了大概20分钟，基本的文本编辑功能都有了。&lt;/p&gt;  &lt;p&gt;接着你可以自己摸索了。&lt;/p&gt;  &lt;p&gt;Emacs 提供了极其强大的帮助系统。&lt;/p&gt;  &lt;p&gt;C-h t 是一个 tutorial，现在也有不同语言的 tutorial。按 M-x 输入 help-with-tutorial-spec-language 可以选择不同的语言。按 &lt;tab&gt; Emacs 可 以帮你补全命令。按两次 &lt;tab&gt; 会有补全的提示。&lt;/tab&gt;&lt;/tab&gt;&lt;/p&gt;  &lt;p&gt;C-h a 是 apropos command，你可以输入几个简单的单词，Emacs 可以帮你找到 相应的命令，这个帮助非常好用。比如你想把一个单词全部大写，但不知道该怎 么做，可以 C-h a 输入 upcase word 或者 up word，Emacs 就会找到几个命令， 其中一个是 upcase-word，并且对应的按键是 M-u，你只要把光标移动到单词前 按 M-u 就可以了。&lt;/p&gt;  &lt;p&gt;C-h k 是描述某个按键会执行什么。例如你要看看 M-; 是干什么的，按 C-h k， 接着按 M-; 你就会看到 M-; 会运行 comment-dwim，dwim 是 do what i mean 的缩写，这个命令会注释或反注释你选定的区域，如果没有选定区域，会在这一 行后面加上注释。很聪明的命令吧。&lt;/p&gt;  &lt;p&gt;C-h c 简单描述某个按键执行什么。&lt;/p&gt;  &lt;p&gt;C-h f 描述某个函数&lt;/p&gt;  &lt;p&gt;C-h v 描述某个变量&lt;/p&gt;  &lt;p&gt;C-h 会提供很多很多帮助信息，C-h ? 会显示有哪些帮助信息。&lt;/p&gt;   &lt;h3&gt;简单配置&lt;/h3&gt;  &lt;p class="first"&gt;Emacs 有超强的可配置性，1000个人可以有1000种配置，可以有自己的键绑定， 有自定义的函数，有自己喜欢的扩展包。配置放在 home 目录下的 .emacs 里， Emacs 启动的时候会自动读取这个文件。启动 Emacs 后，C-x C-f ~/.emacs 会 打开 .emacs 文件，如果不存在的话就是新建这个文件。home 目录在哪里呢？ 可以 M-x getenv &lt;ret&gt; home &lt;ret&gt; 得到 home 的位置。Linux 系统很好理解。 Windows 系统，会默认放在 C:\Documents and Settings\username\Application Data 下，有几种方法可以指定 home 的位置：&lt;/ret&gt;&lt;/ret&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;在 我的电脑-&gt;属性-&gt;高级-&gt;环境变量 里添加一个 HOME 环境变量，指定位 置。&lt;/li&gt;&lt;li&gt;在注册表 [HKEY_CURRENT_USER\SOFTWARE\GNU\Emacs] (如果没有 GNU 或 Emacs，添加一个即可) 添加 HOME 字符串变量，值为指定的 home 路径。&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;Emacs 配置使用的语言是 Elisp，Emacs 附带非常详细的 Elisp 手册，可以通 过 M-x info 得到。配置 .emacs 一般只需要几个简单语句，比如： &lt;/p&gt;&lt;ul&gt;&lt;li&gt;(setq variable-name value) 设置变量值，例如 (setq transient-mark-mode t) 设置选定区域范围高亮&lt;/li&gt;&lt;li&gt;(require 'extension) 安装一个扩展包。&lt;/li&gt;&lt;li&gt;(load "file-name") 使用一个 .el 文件&lt;/li&gt;&lt;li&gt;(global-set-key (kbd "C-c f") 'function-name) 全局自定义键绑定&lt;/li&gt;&lt;li&gt;(define-key dired-mode (kbd "j") 'dired-next-line) 局部键绑定，只在 dired-mode 起作用&lt;/li&gt;&lt;li&gt;(if ...) 一些简单的判断语句&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;这里提供一个简单的 .emacs 文件: &lt;a aiotitle="quick.emacs.el" href="http://jasonal00.googlepages.com/quick.emacs.el"&gt;quick.emacs.el&lt;/a&gt;&lt;/p&gt; &lt;p&gt;你可以把它复制到你的 home 目录下并改名为 .emacs 注意有个.&lt;/p&gt; &lt;p&gt;或者用 runemacs.exe -q -l quick.emacs.el 来指定 emacs 使用这个配置文件。&lt;/p&gt;   &lt;h3&gt;总结&lt;/h3&gt;  &lt;p class="first"&gt;到这里差不多就是30分钟吧，介绍一些文本编辑的基本操作。只是为了说明上手 Emacs 其实很简单，而且几乎每一样操作都有比普通 Windows 文本编辑器更好 的特性，比如可以任意调整已选定的区域，更好的复制粘贴机制，更好的撤销机 制，更好的 isearch 查找方式，可以在区域内替换，强大得多的帮助系统，没 有任何限制的扩展性。用了几天或几个星期后就会觉得其他的编辑是多么麻烦和 弱小。&lt;/p&gt;&lt;p class="first"&gt;相关链接：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://jasonal.blogspot.com/2007/05/emacs.html"&gt;为什么我偏爱Emacs&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="Win32下的Emacs字体设置" href="http://jasonal.blogspot.com/2006/10/emacs-font-set-for-windows.html"&gt;Win32下的Emacs字体设置&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="Getting CVS Emacs (下载cvs Emacs)" href="http://jasonal.blogspot.com/2006/05/getting-cvs-emacs-23.html"&gt;Getting CVS Emacs (下载cvs Emacs)&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="Emacs常用快捷键" href="http://jasonal.blogspot.com/2006/04/emacs_24.html"&gt;Emacs常用快捷键&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="Emacs一些常用包" href="http://jasonal.blogspot.com/2006/04/emacs_114593289264544642.html"&gt;Emacs一些常用包&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="Emacs ido.el" href="http://jasonal.blogspot.com/2006/06/emacs-idoel.html"&gt;Emacs ido.el&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="viper-mode in Emacs" href="http://jasonal.blogspot.com/2006/12/viper-mode-in-emacs.html"&gt;viper-mode in Emacs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="unicad.el (自动编码识别)" href="http://jasonal.blogspot.com/2007/02/unicadel.html"&gt;unicad.el (自动编码识别)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="Emacs for Windows 注册表设置" href="http://jasonal.blogspot.com/2006/04/emacs-for-windows.html"&gt;Emacs for Windows 注册表设置&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a aiotitle="Trick in query-replace-regexp" href="http://jasonal.blogspot.com/2006/09/trick-in-query-replace-regexp.html"&gt;Trick in query-replace-regexp&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; &lt;hints id="hah_hints"&gt;&lt;/hints&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-116577976332319658?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/116577976332319658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=116577976332319658' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/116577976332319658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/116577976332319658'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/12/30emacs.html' title='30分钟快速上手Emacs (初级)'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-116517930300731036</id><published>2006-12-03T21:26:00.000+01:00</published><updated>2006-12-03T22:50:33.073+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>viper-mode in Emacs</title><content type='html'>Maybe  you are disappointed at the cursor move around feature in Emacs and  envy  or miss the hjkl in vim.&lt;br /&gt;&lt;br /&gt;But don't worry. There is a viper-mode in Emacs, which emulates vi behavioral in Emacs.&lt;br /&gt;I have tried it. That is really attractive. It has added four states that are equivalent to VIM modes: Emacs-state, vi-state, insert-state and replace-state. Press C-z to toggle vi-state and emacs-state. Normally we don't need the Emacs-state when editing files, but it's still necessary for the major modes like info- and dired-mode that has lots of its own key bindings. We have all the powerful emacs features in insert-state, and meanwhile can move around conveniently in vi-state as in VIM.&lt;br /&gt;&lt;br /&gt;Here is the installation of viper-mode. In ~/.emacs , add following lines:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;(setq viper-mode t)&lt;br /&gt;(require 'viper)&lt;br /&gt;&lt;/blockquote&gt;The configuration of viper-mode is stored in &lt;span style="font-weight: bold; color: rgb(0, 0, 153);font-family:courier new;" &gt;~/.viper&lt;/span&gt; , add following lines:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;(setq-default viper-mode t&lt;br /&gt;           viper-expert-level '5&lt;br /&gt;           ;; ex-style don't allow you to move cross lines.&lt;br /&gt;           viper-ex-style-editing nil&lt;br /&gt;           viper-ex-style-motion nil&lt;br /&gt;           viper-auto-indent t&lt;br /&gt;           viper-inhibit-startup-message t&lt;br /&gt;           viper-eletric-mode t&lt;br /&gt;           viper-always t&lt;br /&gt;           viper-want-ctl-h-help t&lt;br /&gt;           viper-want-emacs-keys-in-insert t&lt;br /&gt;           viper-want-emacs-keys-in-vi t&lt;br /&gt;           viper-vi-style-in-minibuffer nil&lt;br /&gt;           viper-no-multiple-ESC t&lt;br /&gt;           viper-case-fold-search t&lt;br /&gt;           viper-re-search t&lt;br /&gt;           viper-re-query-replace t&lt;br /&gt;           viper-syntax-preference 'emacs&lt;br /&gt;           viper-delete-backwards-in-replace t&lt;br /&gt;           viper-parse-sexp-ignore-comments nil&lt;br /&gt;           viper-ESC-moves-cursor-back nil)&lt;br /&gt;&lt;br /&gt;(define-key viper-vi-global-user-map "\C-f" 'forward-char)&lt;br /&gt;(define-key viper-vi-global-user-map "\C-b" 'backward-char)&lt;br /&gt;(define-key viper-vi-global-user-map "\M-v" 'scroll-down)&lt;br /&gt;(define-key viper-vi-global-user-map "\C-v" 'scroll-up)&lt;br /&gt;(define-key viper-vi-global-user-map "\C-y" 'yank)&lt;br /&gt;(define-key viper-vi-global-user-map "\C-e"&lt;br /&gt;(or (command-remapping 'move-end-of-line) 'move-end-of-line))&lt;br /&gt;&lt;br /&gt;;; I don't like the default face in viper minibuffer&lt;br /&gt;(setq viper-minibuffer-vi-face nil&lt;br /&gt;   viper-minibuffer-emacs-face nil)&lt;br /&gt;&lt;/blockquote&gt;&lt;hints id="hah_hints"&gt;&lt;/hints&gt;  &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+emacs" rel="tag"&gt;emacs&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+viper" rel="tag"&gt;viper&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+vim" rel="tag"&gt;vim&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-116517930300731036?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/116517930300731036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=116517930300731036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/116517930300731036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/116517930300731036'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/12/viper-mode-in-emacs.html' title='viper-mode in Emacs'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-116194876652892423</id><published>2006-10-27T13:11:00.000+02:00</published><updated>2006-10-27T13:35:57.116+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Emacs font set for Windows</title><content type='html'>&lt;u&gt;Emacs 字体设置 (win32)&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Download &lt;a href="http://jasonal00.googlepages.com/fontset-win.el"&gt;fontset-win.el&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;只在我自己机器上的 Emacs 23 试验过，仅供参考&lt;br /&gt;&lt;br /&gt;;; 预设了几种字体设置：&lt;br /&gt;;; huangq-fontset-courier       ;; Courier New + 新宋体&lt;br /&gt;;; huangq-fontset-monaco        ;; Monaco + 新宋体&lt;br /&gt;;; huangq-fontset-lucida        ;; Lucida Sans Typewriter + 新宋体&lt;br /&gt;;; huangq-fontset-dejavu        ;; DejaVu Sans Mono+ 新宋体&lt;br /&gt;;; huangq-fontset-consolas      ;; Consolas + 微软雅黑&lt;br /&gt;;; huangq-fontset-consolas0      ;; Consolas + 新宋体&lt;br /&gt;&lt;br /&gt;;; .emacs 字体设置：&lt;br /&gt;;;   (huangq-fontset-monaco 15)&lt;br /&gt;&lt;br /&gt;;; 看累了切换字体：&lt;br /&gt;;;   M-x huangq-fontset-dejavu 或其他&lt;br /&gt;&lt;br /&gt;;; 改变字体大小:&lt;br /&gt;;;  C-x &lt;ret&gt; s FONTSIZE&lt;br /&gt;&lt;br /&gt;;; 当然字体文件要自己准备着&lt;br /&gt;&lt;br /&gt;相关链接：&lt;br /&gt;&lt;/ret&gt;&lt;a href="http://jasonal.blogspot.com/2006/05/getting-cvs-emacs-23.html"&gt;getting CVS emacs23&lt;/a&gt;&lt;br /&gt; &lt;a href="http://jasonal.blogspot.com/2006/04/emacs-for-windows.html"&gt;Emacs for windows 注册表配置&lt;/a&gt;&lt;br /&gt; &lt;a href="http://jasonal.blogspot.com/2006/06/strange-fontset-for-emacs23.html"&gt;Strange fontset for Emacs23 (奇怪的Emacs23字体设置)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+emacs" rel="tag"&gt;emacs&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+emacs23" rel="tag"&gt;emacs23&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+fontset" rel="tag"&gt;fontset&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+font" rel="tag"&gt;font&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-116194876652892423?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/116194876652892423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=116194876652892423' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/116194876652892423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/116194876652892423'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/10/emacs-font-set-for-windows.html' title='Emacs font set for Windows'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-116152374821592880</id><published>2006-10-22T14:57:00.000+02:00</published><updated>2006-10-23T14:08:51.870+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Browser comparison</title><content type='html'>&lt;u&gt;浏览器比较&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;updated on 23.10.2006: Firefox 2.0 is now available: &lt;a href="http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0/"&gt;http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In a word, IE7 has the largest memory usage and can only block popup ads. Firefox 1.5.0.7 with Adblock and Greasemonkey performs much better. Firefox 2.0 is more expectable.&lt;br /&gt;&lt;br /&gt;比较对象： Mozilla Firefox 1.5.0.7 , IE7.0.5370.11, Opera 9.02&lt;br /&gt;&lt;br /&gt;Mozilla Firefox 装了 Adblock, Greasemonkey, Tab mix lite, Google toolbar, Gmail notifier, IE tab 等插件。&lt;br /&gt;IE7 和 Opera 裸奔，使用默认配置。&lt;br /&gt;&lt;br /&gt;用这三个浏览器分别打开5个网页: Live Space, www.sina.com.cn, espn.go.com, Google Reader, Google Mail.&lt;br /&gt;&lt;br /&gt;资源消耗：&lt;br /&gt;IE7 最多，物理内存和虚拟内存分别高达 190 Mbyte 和 175 Mbyte.&lt;br /&gt;相比之下 Firefox 和 Opera 则要小得多。&lt;br /&gt;Opera 物理内存和虚拟内存分别是 102 Mbyte 和 106 Mbyte.&lt;br /&gt;Firefox 物理内存和虚拟内存分别是 76 Mbyte 和 75 Mbyte.&lt;br /&gt;见图&lt;a href="http://lh4.google.com/qichen.huang/RTtvX11VABI/AAAAAAAAAA4/HhGbpdJ8obA/Browsers.jpg"&gt;(点击放大)&lt;/a&gt;：&lt;br /&gt;&lt;a href="http://lh4.google.com/qichen.huang/RTtvX11VABI/AAAAAAAAAA4/HhGbpdJ8obA/Browsers.jpg"&gt;&lt;img alt="browser comparison" src="http://lh4.google.com/qichen.huang/RTtvX11VABI/AAAAAAAAAA4/HhGbpdJ8obA/Browsers.jpg" boarder="2" height="240" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;广告拦截能力：都能拦截弹出窗口。&lt;br /&gt;Firefox 装了 Adblock 和 一个专门拦截新浪广告的user script, 可以截杀页面上的所有 Flash 和 js 广告。&lt;br /&gt;Opera 和 Firefox 一样，由于天生的不兼容性，能够避免大部分 IE 专用的广告。&lt;br /&gt;IE7，浮云，页面内所有广告都能准确显示。。。&lt;br /&gt;&lt;br /&gt;结论：&lt;span style="font-size:130%;"&gt;继续使用 Firefox !&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;  &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+IE7" rel="tag"&gt;IE7&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Firefox" rel="tag"&gt;Firefox&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Opera" rel="tag"&gt;Opera&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Browser" rel="tag"&gt;Browser&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-116152374821592880?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/116152374821592880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=116152374821592880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/116152374821592880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/116152374821592880'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/10/browser-comparison.html' title='Browser comparison'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-116126652629715281</id><published>2006-10-19T15:52:00.000+02:00</published><updated>2006-10-19T16:59:42.400+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>XKeymacs</title><content type='html'>&lt;u&gt;XKeymacs - 推荐给 Win32 下的 Emacser &lt;/u&gt;&lt;br /&gt;&lt;br /&gt;可以在大多数的 Windows 程序里使用 Emacs 的键绑定，比如在 Word 里用 M-t 交换两个单词，用C-x C-s 保存文件。&lt;br /&gt;&lt;br /&gt;可以很方便的禁用或编辑某个快捷键，比如在 Firefox 里仍然用 C-t 开新 tab。&lt;br /&gt;&lt;br /&gt;Windows 里的全新体验，很有趣。如果觉得操作不习惯，可以在任何时候 C-q 禁用 XKeymacs.&lt;br /&gt;&lt;br /&gt;下载地址：&lt;a href="http://www.cam.hi-ho.ne.jp/oishi/indexen.html"&gt;http://www.cam.hi-ho.ne.jp/oishi/indexen.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;又是一个日本人的软件，日本人对 Emacs 的热情和贡献真是挺大的。 &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+emacs" rel="tag"&gt;emacs&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+windows" rel="tag"&gt;windows&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+xkeymacs" rel="tag"&gt;xkeymacs&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+keyboard" rel="tag"&gt;keyboard&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-116126652629715281?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/116126652629715281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=116126652629715281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/116126652629715281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/116126652629715281'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/10/xkeymacs.html' title='XKeymacs'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-115953244067426181</id><published>2006-09-29T13:55:00.000+02:00</published><updated>2006-10-29T16:50:07.253+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Trick in query-replace-regexp</title><content type='html'>&lt;u&gt;使用 query-replace-regexp 的小技巧&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;query-replace-regexp C-M-%&lt;br /&gt;&lt;br /&gt;eg. a). delete a blank line&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;C-M-% ^\s-* &lt;u&gt;C-q&lt;/u&gt; &lt;u&gt;C-j&lt;/u&gt; [RET][RET]&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;^ means beginning of a line.&lt;br /&gt;\s- means any white space.&lt;br /&gt;&lt;u&gt;C-q&lt;/u&gt; &lt;u&gt;C-j&lt;/u&gt; is to insert a new line in the minibuffer. Likely wise, you can use C-q C-i to insert a TAB, etc.&lt;br /&gt;Note, there should be no space between "^\s-*" and "C-q C-j" in the this example!&lt;br /&gt;&lt;br /&gt;eg. b). Insert a series of continued number in the beginning of each line.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;C-M-% ^ [RET] \# [RET]&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;\# means the number of replacements, starting with zero.&lt;br /&gt;&lt;br /&gt;eg. a). change (2) (3) (4) (5) ... into (4) (5) (6) (7) ...&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;C-M-% (\([0-9]+\)) [RET] (\,(+ \#1 2)) [RET]&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;\#1 means convert the match \1 into number. The match \1 is string by default.&lt;br /&gt;\, followed by a lisp expression. So from here you can do almost whatever you want. Yeah!  &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Emacs" rel="tag"&gt;Emacs&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+RegExp" rel="tag"&gt;RegExp&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+replace" rel="tag"&gt;replace&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-115953244067426181?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/115953244067426181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=115953244067426181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115953244067426181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115953244067426181'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/09/trick-in-query-replace-regexp.html' title='Trick in query-replace-regexp'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-115920144753646374</id><published>2006-09-25T18:23:00.000+02:00</published><updated>2006-09-25T18:24:08.866+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Have to abandon MSVDM for the second time</title><content type='html'>I love the virtual work space under linux X. I hoped the MSVDM (Microsoft virtual desktop manager)  could do the same job as well. However, it let me down again.&lt;br /&gt;The first time it is because it didn't work quite well with ATnote. This time I found it might have bugs in switching work spaces when using different wallpapers for different work spaces. Sometimes the wallpapers were gone. Plus, there are also bugs even in cooperating with Excel. The menu in excel is disappeared when switching to another desktop.&lt;br /&gt;I hate this poor M$ tool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-115920144753646374?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/115920144753646374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=115920144753646374' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115920144753646374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115920144753646374'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/09/have-to-abandon-msvdm-for-second-time.html' title='Have to abandon MSVDM for the second time'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-115798879947909886</id><published>2006-09-11T17:32:00.000+02:00</published><updated>2007-01-19T09:40:02.015+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Others'/><title type='text'>My Bloglist</title><content type='html'>Blog list&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech%2Bemacs"&gt;Emacs&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/04/emacs_24.html"&gt;Emacs 常用快捷键&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/04/emacs_114593289264544642.html"&gt;Emacs 一些常用包&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/04/emacs-for-windows.html"&gt;Emacs for windows 注册表配置&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/05/getting-cvs-emacs-23.html"&gt;getting CVS emacs23&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/06/emacs-idoel.html"&gt;Emacs ido mode&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/06/improvement-for-dired-single.html"&gt;Improvement for dired-single (改进一下dired-single返回上层目录的功能)&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/06/strange-fontset-for-emacs23.html"&gt;Strange fontset for Emacs23 (奇怪的Emacs23字体设置)&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a aiotarget="false" aiotitle="code-publish.el for MS Live Space (在live space贴代码的Elisp程序)" href="http://jasonal.blogspot.com/2006/08/code-publishel-for-msn-space.html"&gt;code-publish.el for MS Live Space (在live space贴代码的Elisp程序)&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a aiotitle="Trick in query-replace-regexp (使用 query-replace-regexp 的小技巧)" href="http://jasonal.blogspot.com/2006/09/trick-in-query-replace-regexp.html"&gt;Trick in query-replace-regexp (使用 query-replace-regexp 的小技巧)&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a aiotitle="XKeymacs (Win32 程序的 Emacs 风格键绑定)" href="http://jasonal.blogspot.com/2006/10/xkeymacs.html"&gt;XKeymacs (Win32 程序的 Emacs 风格键绑定)&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a aiotarget="false" aiotitle="Emacs font set for Windows (Windows 下一个比较灵活的 Emacs 字体设置)" href="http://jasonal.blogspot.com/2006/10/emacs-font-set-for-windows.html"&gt;Emacs font set for Windows (Windows 下一个比较灵活的 Emacs 字体设置)&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a aiotarget="false" aiotitle="viper-mode in Emacs" href="http://jasonal.blogspot.com/2006/12/viper-mode-in-emacs.html"&gt;viper-mode in Emacs&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a aiotarget="false" aiotitle="Getting start for Emacs in 30 minutes" href="http://jasonal.blogspot.com/2006/12/30emacs.html"&gt;Getting start for Emacs in 30 minutes (30分钟上手Emacs)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech%2Blinux"&gt;Linux&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/05/proxy-setting-for-ubuntu-510-gui.html"&gt;Proxy setting for Ubuntu 5.10 Update Manager (设置Ubuntu apt-get的代理服务器)&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/05/linux.html"&gt;一些Linux应用程序&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/05/grub.html"&gt;干掉和重建Grub&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/07/free-linux-cds.html"&gt;Free Linux CDs (免费获取Linux CD, 不是指Ubuntu)&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech%2Bgoogle"&gt;Google&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/05/strange-gmail-address.html"&gt;Strange Gmail Address (古怪精灵的Gmail地址)&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech%2Bvim"&gt;VIM&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/05/vim-tip-arrow-keys-print-abcd.html"&gt;Vim tip: arrow keys print ABCD? (VIM 方向键在编辑状态下是ABCD??)&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech%2BXilinx"&gt;Embedded System&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/04/xilinx-edk-error-and-solution-1.html"&gt;Xilinx EDK Eorror and Solution (1)&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/04/how-to-create-ise-project-including.html"&gt;Create ISE project including an embedded submodule (EDK project)&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/05/how-to-port-uclinux-kernel-to.html"&gt;Port uClinux kernel to MicroBlaze&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech%2BOffice"&gt;Office&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/09/wildcards-in-microsoft-word-compared_09.html"&gt;Wildcards in Microsoft Word compared with RegExp (在Word中使用通配符)&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech"&gt;Web Browsers&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/05/install-firefox-15-on-ubuntu.html"&gt;Install Firefox 1.5.x on Ubuntu (Ubuntu下安装Firefox)&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/10/browser-comparison.html"&gt;Browser Comparison (浏览器比较)&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech"&gt;Others&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/04/thinkpad.html"&gt;关于ThinkPad飞线&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://jasonal.blogspot.com/2006/05/mems.html"&gt;用MEMS来冷却芯片&lt;/a&gt;   &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://imemory.3000mb.com/blog/2006/09/blogblogspot.html"&gt;无法再忍受了，blog搬到blogspot去！&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;hints id="hah_hints"&gt;&lt;/hints&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-115798879947909886?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jasonal.blogspot.com/2006/09/my-bloglist.html' title='My Bloglist'/><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/115798879947909886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=115798879947909886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115798879947909886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115798879947909886'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/09/my-bloglist.html' title='My Bloglist'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-115780181509834534</id><published>2006-09-09T13:34:00.000+02:00</published><updated>2006-09-22T01:55:56.640+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Wildcards in Microsoft Word compared with Regular Expressions</title><content type='html'>&lt;u&gt;在Word里使用部分正则表达式&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;作为一套昂贵的字处理软件，Word里竟然不可用正则表达式，实在令人发指。不过他的查找替换里可以使用通配符(Wildcards)，可以实现一部分的正则表达式功能。&lt;br /&gt;&lt;br /&gt;例如：把所有email地址改写 mailto:xxx@gmail.com 的形式，可以用以下操作：&lt;br /&gt;Ctrl-H&lt;br /&gt;more&lt;br /&gt;Use wildcards&lt;br /&gt;Find what: &lt;span style="color: rgb(255, 0, 0);font-family:Courier New,Courier,Monospace;" &gt;([a-zA-Z0-9.+_-]@\@[a-zA-Z0-9]@.[a-z]@)&lt;/span&gt;&lt;br /&gt;Replace with: &lt;span style="color: rgb(255, 0, 0);font-family:Courier New,Courier,Monospace;" &gt;mailto:\1&lt;/span&gt;&lt;br /&gt;然后替换就可以了。&lt;br /&gt;&lt;h3&gt;一些常用的正则表达式(已含所有的 MS Word 可用的通配符)&lt;/h3&gt; &lt;table border="2" cellpadding="5"&gt; &lt;thead&gt; &lt;th&gt;含义&lt;/th&gt; &lt;th&gt;GNU grep&lt;/th&gt; &lt;th&gt;GNU Emacs&lt;/th&gt; &lt;th&gt;Perl&lt;/th&gt; &lt;th&gt;MS Word&lt;/th&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;任何单个字符&lt;/td&gt; &lt;td&gt;.&lt;/td&gt; &lt;td&gt;.&lt;/td&gt; &lt;td&gt;.&lt;/td&gt; &lt;td&gt;?&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;符合其中的任一字符&lt;/td&gt; &lt;td&gt;[...]&lt;/td&gt; &lt;td&gt;[...]&lt;/td&gt; &lt;td&gt;[...]&lt;/td&gt; &lt;td&gt;[...]&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;符合除此之外的任一字符&lt;/td&gt; &lt;td&gt;[^...]&lt;/td&gt; &lt;td&gt;[^...]&lt;/td&gt; &lt;td&gt;[^...]&lt;/td&gt; &lt;td&gt;[!...]&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;子表达式&lt;/td&gt; &lt;td&gt;\(&lt;i&gt;re&lt;/i&gt;\)&lt;/td&gt; &lt;td&gt;\(&lt;i&gt;re&lt;/i&gt;\)&lt;/td&gt; &lt;td&gt;(&lt;i&gt; re&lt;/i&gt;)&lt;/td&gt; &lt;td&gt;(&lt;i&gt;re&lt;/i&gt;)&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;表达式重复多次&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;\{...\}&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;\{...\}&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;{...}&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;{...}&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;表达式出现0或1次&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;\?&lt;/td&gt; &lt;td&gt;&lt;i&gt; re&lt;/i&gt;?&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;?&lt;/td&gt; &lt;td&gt;无&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;表达式出现0或多次&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;*&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;*&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;*&lt;/td&gt; &lt;td&gt;无&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;表达式出现1或多次&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;\+&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt; +&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;+&lt;/td&gt; &lt;td&gt;&lt;i&gt; re&lt;/i&gt;@&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;表达式出现0或1次(lazy mode)&lt;/td&gt; &lt;td&gt;无&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;??&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;??&lt;/td&gt; &lt;td&gt;无&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;表达式出现0或多次(lazy mode)&lt;/td&gt; &lt;td&gt;无&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;*?&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;*?&lt;/td&gt; &lt;td&gt;无&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;表达式出现1或多次(lazy mode)&lt;/td&gt; &lt;td&gt;无&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt; +?&lt;/td&gt; &lt;td&gt;&lt;i&gt;re&lt;/i&gt;+?&lt;/td&gt; &lt;td&gt;无&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;单词起始&lt;/td&gt; &lt;td&gt;\ &lt;&lt;/td&gt; &lt;td&gt;\&lt;&lt;/td&gt; &lt;td&gt;无&lt;/td&gt; &lt;td&gt;&lt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;单词结尾&lt; /td&gt;&lt;/td&gt; &lt;td&gt;\&gt;&lt;/td&gt; &lt;td&gt;\&gt;&lt;/td&gt; &lt;td&gt;无&lt;/td&gt; &lt;td&gt;&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;单词边界(起始或结尾)&lt;/td&gt; &lt;td&gt;\b&lt;/td&gt; &lt;td&gt;\b&lt;/td&gt; &lt;td&gt;\b&lt;/td&gt; &lt;td&gt;无&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;非单词边界&lt;/td&gt; &lt;td&gt;\B&lt;/td&gt; &lt;td&gt;\B&lt;/td&gt; &lt;td&gt;\B&lt;/td&gt; &lt;td&gt;无&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;任意字符串&lt;/td&gt; &lt;td&gt;.*&lt;/td&gt; &lt;td&gt;.*&lt;/td&gt; &lt;td&gt;.*&lt;/td&gt; &lt;td&gt;*&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;行首&lt;/td&gt; &lt;td&gt;^&lt;/td&gt; &lt;td&gt;^&lt;/td&gt; &lt;td&gt;^&lt;/td&gt; &lt;td&gt;无&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;行末&lt;/td&gt; &lt;td&gt;$&lt;/td&gt; &lt;td&gt;$&lt;/td&gt; &lt;td&gt;$&lt;/td&gt; &lt;td&gt;无&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;换行符&lt;/td&gt; &lt;td&gt;\n&lt;/td&gt; &lt;td&gt;C-q C-j&lt;/td&gt; &lt;td&gt;\n&lt;/td&gt; &lt;td&gt;^13&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;”或“&lt;/td&gt; &lt;td&gt;re\|re&lt;/td&gt; &lt;td&gt;re\ |re&lt;/td&gt; &lt;td&gt;re|re&lt;/td&gt; &lt;td&gt;无&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;引用上次找到的内容&lt;/td&gt; &lt;td&gt;不知道&lt;/td&gt; &lt;td&gt;\&amp;&lt;/td&gt; &lt;td&gt;不知道&lt;/td&gt; &lt;td&gt;^&amp;amp; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;引用被括号捕获的内容&lt;/td&gt; &lt;td&gt;\digit&lt;/td&gt; &lt;td&gt;\digit&lt;/td&gt; &lt;td&gt;\digit&lt;/td&gt; &lt;td&gt;\digit&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;** 注：&lt;em&gt;re&lt;/em&gt; 代表一个正则表达式 (RegExp)&lt;br /&gt;*** MS Word里多次匹配，最少是一次，没有0次。&lt;br /&gt;*** \digit 指 \后面加数字 如 \1 \2&lt;br /&gt;*** 正则表达式里括号子表达式可以嵌套使用，Word里好像不行&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;    &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Wildcards" rel="tag"&gt;Wildcards&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+RegExp" rel="tag"&gt;RegExp&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Word" rel="tag"&gt;Word&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Office" rel="tag"&gt;Office&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-115780181509834534?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/115780181509834534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=115780181509834534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115780181509834534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115780181509834534'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/09/wildcards-in-microsoft-word-compared_09.html' title='Wildcards in Microsoft Word compared with Regular Expressions'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-115446548294439547</id><published>2006-08-01T22:43:00.000+02:00</published><updated>2006-09-11T16:36:25.716+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>code-publish.el for MSN space</title><content type='html'>(for Emacs)&lt;br /&gt;This is my first elisp program.  It can convert program codes into html with font style and color format. The html codes can be pasted directly onto &lt;u&gt;Microsoft Live Space&lt;/u&gt; (MSN Space).&lt;br /&gt;&lt;br /&gt;Version 0.2:&lt;br /&gt;Add background color.&lt;br /&gt;Related link: &lt;span id="BlogViewId"&gt;&lt;span class="bvwordwrap"&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://jasonal.spaces.live.com/blog/cns%21E9B3AD00B7B35ECC%211446.entry"&gt;http://jasonal.spaces.live.com/blog/cns!E9B3AD00B7B35ECC!1446.entry&lt;/a&gt;&lt;br /&gt;Download: &lt;a href="http://jasonal00.googlepages.com/code-publish.el"&gt;code-publish.v0.2.el&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Version 0.1:&lt;br /&gt;Screenshots here: &lt;a href="http://jasonal.spaces.msn.com/blog/cns%21E9B3AD00B7B35ECC%211346.entry"&gt;test code&lt;/a&gt;&lt;br /&gt;&lt;a href="http://imemory.3000mb.com/download/code-publish.el.txt"&gt;click here to download code-publish.el&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Emacs" rel="tag"&gt;Emacs&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+code-publish" rel="tag"&gt;code-publish&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+msn" rel="tag"&gt;msn&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+space" rel="tag"&gt;space&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-115446548294439547?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/115446548294439547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=115446548294439547' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115446548294439547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115446548294439547'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/08/code-publishel-for-msn-space.html' title='code-publish.el for MSN space'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-115401739343338630</id><published>2006-07-27T18:20:00.000+02:00</published><updated>2006-07-27T18:28:21.470+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Shortcuts, Hotkeys</title><content type='html'>* Hot-keys, Shortcuts, 快捷键&lt;br /&gt;&lt;br /&gt;&lt;defanged-span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;** HoeKey&lt;/defanged-span&gt;&lt;br /&gt;&lt;br /&gt;占用内存非常小，只有几百K。用HoeKey可以方便地用快捷键运行一些常用程序。另外一个牛X的用处是执行一些特殊操作，比如最小化窗口，总在最前，窗口透明等等。&lt;br /&gt;Example:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;~F4=Transparency    ; Win+F4 Set current window to be&lt;br /&gt;=AlwaysOnTop        ; transparent and on top&lt;br /&gt;&lt;br /&gt;~32=Run|D:\Program Files\Mozilla Firefox\firefox.exe|3&lt;br /&gt;; Win+Space Start Firefox maximized&lt;br /&gt;&lt;br /&gt;~34=Msg||274|61472      ; win+PageDown minimize current window&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Screen-shot:&lt;br /&gt;&lt;img src="http://tkfiles.storage.msn.com/x1p4JHjVbcjTC804cRu7M6KI50H_IeqCWGGCguIo93G5RiOb-MhsCpO0cPCv_lp8UFE4eSt5IBdZL5uArti9CEaNCECiP-MbkYwi392d1QCy6RtRyeut4z8vABH8rdHn7OfSMB8eOya_zTJ22eWo1MfTw" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;defanged-span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;** Run&lt;/defanged-span&gt;&lt;br /&gt;&lt;br /&gt;Windows自带的Win+R。msconfig, regedit这些当然是最常用的了。此外还可以通过设置环境变量的方法极大的扩充win+R的功能，也就是把link加入Path里。比如把Quick Launch加入到Environment Variable的PATH里，快速启动里面的东西就可以全部用Win+R执行了。还可以另外搞个目录，加到PATH里，目录里面放&lt;br /&gt;些自己喜欢的快捷方式，可以是程序，文档，图片，文件夹等等。&lt;br /&gt;&lt;img src="http://tkfiles.storage.msn.com/x1p4JHjVbcjTC804cRu7M6KI50H_IeqCWGGCguIo93G5RiW5f-1kmIEuEOA8Jk4DQ7AfTzGOLM9wlpxvED3b_I_l_hBpUtcJpuur3novRotvpGHOpB8bmGIe0ZwMtlptMTSwHC7IIiT3alOtB8D2cY-wQ" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;defanged-span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;** TC (Total Commander)&lt;/defanged-span&gt;&lt;br /&gt;&lt;br /&gt;除了在wincmd.ini的[Shortcuts]里面定义快捷键之外，还可以利用Start Menu和Hotlist。&lt;br /&gt;&lt;br /&gt;比如用指定的编辑器(e.g. gvim)打开光标所在的文件:&lt;br /&gt;&lt;br /&gt;screen-shot:&lt;br /&gt;&lt;img src="http://tkfiles.storage.msn.com/x1p4JHjVbcjTC804cRu7M6KI50H_IeqCWGGCguIo93G5RiwDiLMpDORSlQHgLkZlu-AHCCrSrrZFD2HT8uF-EG-HR1P_lOCk5SiP8jJAIZJJxeXQlF_QH6CEwscBnR-8JtzXC-w7yX_PzNQH3iyDSt7Hw" /&gt;&lt;br /&gt;- 先加一个子目录(Add submenu) "&amp;Open with..." &amp;amp;amp;amp;amp;amp;O意思是此条对应键名是O&lt;br /&gt;- 再在此目录下加入条目(Add Item) "&amp;Vim"&lt;br /&gt;- 条目对应的命令(Command)是gvim的可执行文件&lt;br /&gt;- 命令参数(Parameters): %P%N. %P是光标所在的目录路径，%N是光标所在的文件名。所有能用的参数都可以在Help里找到。&lt;br /&gt;- OK&lt;br /&gt;&lt;br /&gt;这样在TC里看到一个文件后，按Alt-s o v 就可以用gvim打开这个文件了。有点像Emacs的按键风格，哈哈。&lt;br /&gt;&lt;br /&gt;再比如利用Hotlist运行常用程序:&lt;br /&gt;&lt;br /&gt;screen-shot&lt;br /&gt;&lt;img src="http://tkfiles.storage.msn.com/x1p4JHjVbcjTC804cRu7M6KI50H_IeqCWGGCguIo93G5Rh-RbiqXeqwBZ961_l7bH2xIIYH0-w0ephN-izJTwP7vF0e9j5xOnLxZVdjZqwxUw5hHl1QQDU-lVcRSi3LT4nyMCM94C69wdaimuGfls8Vow" /&gt;&lt;br /&gt;方法基本同上，设置Hotlist是Ctrl-d c，运行Xygwin就是Ctrl-d x x 了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;defanged-span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;** Firefox&lt;/defanged-span&gt;&lt;br /&gt;&lt;br /&gt;利用收藏夹的别名实现快速搜索。&lt;br /&gt;&lt;br /&gt;Screen-shot:&lt;br /&gt;&lt;img src="http://tkfiles.storage.msn.com/x1p4JHjVbcjTC804cRu7M6KI50H_IeqCWGGCguIo93G5Rg9t2kU1m9IW1_BThaX9RbW3XJKnRyrf0v6sXUMVnLwjKSvOKNBGClTdWKIg-95_pAqIZhExUHR3hOBZXBmHJld1NTG13eGh6u6NM5jKQl-xA" /&gt;&lt;br /&gt;例如在维基百科里搜索可以这样定义：&lt;br /&gt;- Name: 随意&lt;br /&gt;- Location: http://zh.wikipedia.org/wiki/Special:Search?search=%s&lt;br /&gt;- Keyword: wc&lt;br /&gt;&lt;br /&gt;这样只要在地址栏里输入 wc firefox 就可以快速定位到维基百科的Firefox页.&lt;br /&gt;&lt;br /&gt;&lt;defanged-span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;** TypeAndRun&lt;/defanged-span&gt;&lt;br /&gt;&lt;br /&gt;刚开始用的，感觉还不错，只是占用内存5M以上，不是很爽。在Settings-&gt;Registry 选中 Shell integration ("Add TypeAndRun..."context menu)，在右键菜单里增加一个 Add TypeAndRun，把选中的程序或文档或目录等等添加到它的别名里。如果连鼠标右键也不想动，可以在TC的StartMenu里添加一个条目，Command是TypeAndRun的可执行文件，参数是 --add=%P%N&lt;br /&gt;&lt;br /&gt;&lt;defanged-span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;** AutoHotKey&lt;/defanged-span&gt;&lt;br /&gt;&lt;br /&gt;一种Script语言，相比HoeKey复杂点，功能更强大，占用内存4M左右，大了一点。想要用的话看他的Wiki。&lt;br /&gt;&lt;br /&gt;PS: 参考多篇文章，不一一说明出处了。只要google一下软件名就能找到相应的网站   &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+hotkey" rel="tag"&gt;hotkey&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+hoekey" rel="tag"&gt;hoekey&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+TC" rel="tag"&gt;TC&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+firefox" rel="tag"&gt;firefox&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+TypeAndRun" rel="tag"&gt;TypeAndRun&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+AutoHotKey" rel="tag"&gt;AutoHotKey&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-115401739343338630?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/115401739343338630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=115401739343338630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115401739343338630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115401739343338630'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/07/shortcuts-hotkeys.html' title='Shortcuts, Hotkeys'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-115314956990343458</id><published>2006-07-17T17:17:00.000+02:00</published><updated>2006-09-09T15:11:43.113+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><title type='text'>Free Linux CDs</title><content type='html'>&lt;span id="BlogViewId"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;a href="http://free.thelinuxstore.ca/"&gt;TheLinuxStore.ca&lt;/a&gt; 正在进行一项新的计划，将                Linux和开源软件传送到全世界。你将可以免费获得你所喜欢的Linux光盘包括SUSE, Fedora, Mandriva, Gentoo,                Debian, Knoppix。其他的软件（当然是开源的）也可以写上。当然愿意的话你也可以捐助几美元来获取它。&lt;br /&gt;&lt;br /&gt;Related links:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="BlogViewId"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://linux.solidot.org/article.pl?sid=06/07/14/0629235"&gt;solidot新闻&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Linux" rel="tag"&gt;Linux&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-115314956990343458?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/115314956990343458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=115314956990343458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115314956990343458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115314956990343458'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/07/free-linux-cds.html' title='Free Linux CDs'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-115150357172765077</id><published>2006-06-28T15:49:00.000+02:00</published><updated>2006-09-09T15:09:24.903+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='E-tech'/><title type='text'>500GHz! Developed by IBM</title><content type='html'>An unbelievable speed of 500GHz!!!&lt;br /&gt;&lt;br /&gt;When cooled to -268.5C, using liquid helium, it is able to perform a speed of 500 GHz! Even at room temperature they can be running at 350 GHz.&lt;br /&gt;&lt;br /&gt;Other than standard silicon chips, these chips are manufactured using Si-Ge technology.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Germanium &lt;/span&gt;is already added to the silicon chips used in mobile phones to make them operate more efficiently.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-style: italic;"&gt;Adding the element allows chips to run faster and use less power. &lt;span style="font-weight: bold;"&gt;Importantly, they can also be fabricated using existing silicon techniques.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-style: italic;"&gt;The team believes it is possible to make chips run at &lt;span style="font-weight: bold;"&gt;1,000 Ghz&lt;/span&gt;, or one Terahertz, &lt;span style="font-weight: bold;"&gt;at room temperature&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;OK. After some digging. This is a transistor which can be switched at 500GHz. It could probably be used in RF usage. The largest advantage is it uses SiGe. This technology is relative cheaper than others in high frequency transistor.&lt;br /&gt;&lt;br /&gt;Related Links:&lt;br /&gt;&lt;a href="http://news.bbc.co.uk/1/hi/technology/5099584.stm"&gt;http://news.bbc.co.uk/1/hi/technology/5099584.stm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+EE-Tech" rel="tag"&gt;EE-Tech&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+SiGe" rel="tag"&gt;SiGe&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+IBM" rel="tag"&gt;IBM&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-115150357172765077?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/115150357172765077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=115150357172765077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115150357172765077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115150357172765077'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/06/500ghz-developed-by-ibm.html' title='500GHz! Developed by IBM'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-115063170929540363</id><published>2006-06-18T13:34:00.000+02:00</published><updated>2007-03-08T13:06:53.332+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Strange fontset for Emacs23</title><content type='html'>&lt;u&gt;奇怪的Emacs23字体设置&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;从&lt;a href="http://ntemacs.sourceforge.net/"&gt;sourceforge&lt;/a&gt;&lt;br /&gt;下载了最新的预编译Emacs23 for Windows。这个版本应该是支持Unicode，中文GBK字库。但是用了原先Emacs22的设置，却不能显示所有的GBK汉字，比如“镕”，显示为一个方框。&lt;br /&gt;后来在newsmth上找了一下，必须把中文字体设置为&lt;u&gt;新宋体&lt;/u&gt;，用以下代码：&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;(create-fontset-from-fontset-spec&lt;br /&gt;"-outline-Courier New-normal-r-*-*-17-97-96-96-c-*-fontset-chinese")&lt;br /&gt;(set-fontset-font&lt;br /&gt;"fontset-default" nil&lt;br /&gt;"-outline-新宋体-*-r-*-*-20-*-96-96-c-*-iso10646-1" nil 'prepend)&lt;br /&gt;(set-fontset-font&lt;br /&gt;"fontset-chinese" 'kana&lt;br /&gt;"-outline-新宋体-*-r-*-*-20-*-96-96-c-*-iso10646-1" nil 'prepend)&lt;br /&gt;(set-fontset-font&lt;br /&gt;"fontset-chinese" 'han&lt;br /&gt;"-outline-新宋体-*-r-*-*-20-*-96-96-c-*-iso10646-1" nil 'prepend)&lt;br /&gt;(set-fontset-font&lt;br /&gt;"fontset-chinese" 'cjk-misc&lt;br /&gt;"-outline-新宋体-*-r-*-*-20-*-96-96-c-*-iso10646-1" nil 'prepend)&lt;br /&gt;(set-fontset-font&lt;br /&gt;"fontset-chinese" 'symbol&lt;br /&gt;"-outline-新宋体-*-r-*-*-20-*-96-96-c-*-iso10646-1" nil 'prepend)&lt;br /&gt;(set-default-font "fontset-chinese")&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;但是发现直接把这段写在.emacs里不起作用，启动后必须重新编译这段代码才行。相当诡异，因为其他人只要直接这样设置就可以了。难道是因为XP英文系统就不行吗？&lt;br /&gt;&lt;p&gt;后来再次试了一下，把这段字体设置写入fontset.el，然后在.emacs里load就可以了，需要注意的是，必须在设置了语言环境之后再load。有可能XP中文的默认语言环境已经是chinese-gbk了，所以就可以直接设置字体？&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;br /&gt;(add-to-list 'load-path "~/emacs.configuration")&lt;br /&gt;(setq w32-charset-info-alist&lt;br /&gt;(cons&lt;br /&gt; '("gbk" w32-charset-gb2312 . 936) w32-charset-info-alist))&lt;br /&gt;(set-w32-system-coding-system 'chinese-gbk)&lt;br /&gt;(set-keyboard-coding-system 'chinese-gbk)&lt;br /&gt;(set-language-environment 'chinese-gbk)&lt;br /&gt;(setq locale-coding-system 'chinese-gbk)&lt;br /&gt;(setq current-language-environment "Chinese-GBK")&lt;br /&gt;(set-selection-coding-system 'chinese-gbk)&lt;br /&gt;(set-language-environment 'chinese-gbk)&lt;br /&gt;(setq current-language-environment "Chinese-GBK")&lt;br /&gt;&lt;br /&gt;(load "fontset")&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;使用Courier New 17号和新宋体20号，字体看起来都比较大，不费眼力，而且汉字的宽度正好是字母的两倍。&lt;br /&gt;&lt;br /&gt;相关链接：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a aiotitle="Emacs font set for Windows" href="http://jasonal.blogspot.com/2006/10/emacs-font-set-for-windows.html"&gt;Emacs font set for Windows (Win32下的Emacs字体设置)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jasonal.blogspot.com/2006/12/30emacs.html"&gt;30分钟上手Emacs(初级)&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Emacs" rel="tag"&gt;Emacs&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Emacs23" rel="tag"&gt;Emacs23&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+fontset" rel="tag"&gt;fontset&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;hints id="hah_hints"&gt;&lt;/hints&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-115063170929540363?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/115063170929540363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=115063170929540363' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115063170929540363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115063170929540363'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/06/strange-fontset-for-emacs23.html' title='Strange fontset for Emacs23'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-115058897425606283</id><published>2006-06-18T02:02:00.000+02:00</published><updated>2006-06-18T03:21:06.886+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>improvement for dired-single</title><content type='html'>&lt;u&gt;改进一下dired-single返回上层目录的功能&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Improvement for going back to parent directory (using &lt;a href="http://www.emacswiki.org/cgi-bin/wiki/dired-single.el"&gt;dired-single&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;在.emacs里改一下dired-single设置代码:&lt;br /&gt;&lt;blockquote&gt;(require        'dired-single)&lt;br /&gt;(define-key dired-mode-map (kbd "RET") 'joc-dired-single-buffer)&lt;br /&gt;(define-key dired-mode-map (kbd ".")&lt;br /&gt;;; type . to go back to the parent directory&lt;br /&gt;'(lambda ()&lt;br /&gt;  (interactive)&lt;br /&gt;  (let ((current-dir (dired-current-directory)))&lt;br /&gt;      (joc-dired-single-buffer "..")&lt;br /&gt;      (dired-goto-file current-dir))))&lt;/blockquote&gt;&lt;br /&gt;按.返回上层目录，光标停留在原先的目录名上。 &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Emacs" rel="tag"&gt;Emacs&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Elisp" rel="tag"&gt;Elisp&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-115058897425606283?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/115058897425606283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=115058897425606283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115058897425606283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115058897425606283'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/06/improvement-for-dired-single.html' title='improvement for dired-single'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-115006623219237501</id><published>2006-06-12T00:16:00.000+02:00</published><updated>2006-09-11T16:19:08.783+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Emacs ido.el</title><content type='html'>The ido.el is now a default elisp package in Emacs 23. You can get the newest version from &lt;a href="http://cvs.savannah.gnu.org/viewcvs/emacs/emacs/lisp/ido.el"&gt;CVS&lt;/a&gt;.&lt;br /&gt;Use following elisp to enable ido-mode:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;(require 'ido)&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;(ido-mode t)&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Typing &lt;span style="font-weight: bold; color: rgb(51, 51, 255);font-family:georgia;" &gt;C-x C-f&lt;/span&gt; will run ido-find-file. There are some advantages, the files can be found more quickly. However, the ido-cache will not be refreshed automatically when directories are modified. There are some useful commands.&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;C-d&lt;/span&gt; to enter dired.&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;C-l&lt;/span&gt; to run ido-reread-directory to refresh the current work directory.&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;C-j&lt;/span&gt; to stop automatically completing file names. For example, you have "test.01" and "test.02" in your work directory, but you want to create a new file "test" instead of finding "test.01" or "test.02". Then you should type &lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;C-j&lt;/span&gt; after inputting "test", to run ido-select-text.&lt;br /&gt;Or &lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;C-f&lt;/span&gt; to return to normal find-file.&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Tab&lt;/span&gt; or &lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;?&lt;/span&gt; to show completion help.&lt;br /&gt;&lt;br /&gt;Don't use ido-mode to find files on ftp server, since that is quite slow and requires to type user name and password. And similarly don't search files in other directories. Add following codes into .emacs :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;;; use normal find-file function for ftp files&lt;br /&gt;(setq ido-slow-ftp-host-regexps '(".*"))&lt;br /&gt;;; don't search files in other directories&lt;br /&gt;(setq ido-work-directory-list-ignore-regexps '(".*"))&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt; &lt;br /&gt;&lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Emacs" rel="tag"&gt;Emacs&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+ido" rel="tag"&gt;ido&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-115006623219237501?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/115006623219237501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=115006623219237501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115006623219237501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/115006623219237501'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/06/emacs-idoel.html' title='Emacs ido.el'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114815465942432844</id><published>2006-05-20T21:44:00.000+02:00</published><updated>2006-11-02T01:10:25.016+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Vim tip: arrow keys print ABCD?</title><content type='html'>&lt;u&gt;VIM 方向键在编辑状态下是ABCD?&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;I have just build vim7 and found weird when i pressed arrow keys in the Insert mode, the cursor didn't move but printed A, B, C and D. And the -- INSERT -- doesn't show up.&lt;br /&gt;&lt;br /&gt;As soon as I introduced the ~/.vimrc, although with no contents in this file, the problem disappeared (under ubuntu).&lt;br /&gt;&lt;tt&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;for more information：&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;a href="http://www.vim.org/tips/tip.php?tip_id=550"&gt;Arrow keys/cursor movement prints A B C D letters&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;    &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+vim" rel="tag"&gt;vim&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114815465942432844?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jasonal.blogspot.com/2006/09/my-bloglist.html' title='Vim tip: arrow keys print ABCD?'/><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114815465942432844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114815465942432844' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114815465942432844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114815465942432844'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/05/vim-tip-arrow-keys-print-abcd.html' title='Vim tip: arrow keys print ABCD?'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114752590903413240</id><published>2006-05-13T14:25:00.000+02:00</published><updated>2006-07-01T23:27:44.476+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPGA'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><title type='text'>How to port uClinux kernel to MicroBlaze</title><content type='html'>&lt;a href="http://www.itee.uq.edu.au/%7Ejwilliams/mblaze-uclinux/"&gt;MicroBlaze uClinux Project by John Williams, University of Queensland&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.itee.uq.edu.au/%7Elistarch/microblaze-uclinux/"&gt;Mailing list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now I have successfully boot uclinux kernel on my &lt;a href="http://www.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?key=HW-SPAR3E-SK-US"&gt;Spartan3E-Starter-Kit&lt;/a&gt; (XC3S500E-4FG320C) with EDK 8.1 sp2.&lt;br /&gt;A useful tutorial by Jason Wu: &lt;a href="http://www.itee.uq.edu.au/%7Ewu/downloads/uClinux_ready_Microblaze_design.pdf"&gt;uClinux ready Microblaze design&lt;/a&gt;. However, the information in the tutorial and on John Williams' Website is not updated for new boards and new tools.&lt;br /&gt;&lt;br /&gt;Here is my steps for spartan 3E:&lt;br /&gt;&lt;br /&gt;1. Getting uClinux BSP&lt;br /&gt;&lt;br /&gt;2. Build an EDK project&lt;br /&gt;&lt;br /&gt;... to be continued...&lt;br /&gt;&lt;br /&gt;&lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+howto" rel="tag"&gt;howto&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+uclinux" rel="tag"&gt;uclinux&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+microblaze" rel="tag"&gt;microblaze&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+fpga" rel="tag"&gt;fpga&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+xilinx" rel="tag"&gt;xilinx&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+spartan" rel="tag"&gt;spartan&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114752590903413240?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114752590903413240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114752590903413240' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114752590903413240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114752590903413240'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/05/how-to-port-uclinux-kernel-to.html' title='How to port uClinux kernel to MicroBlaze'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114725779027544428</id><published>2006-05-10T11:46:00.000+02:00</published><updated>2006-05-10T16:43:21.136+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><title type='text'>Strange gmail address</title><content type='html'>&lt;u&gt;古怪精灵的Gmail地址&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;1. Suffix&lt;br /&gt;abc@googlemail.com=abc@gmail.com&lt;br /&gt;这个很早就发现了，最初申请的google帐号是gmail.com后缀，后来申请的后缀是googlemail.com，(据说gmail商标在欧洲被注册了？), 但实际上这两个邮箱地址是通用的。&lt;br /&gt;&lt;br /&gt;2. plus&lt;br /&gt;abc@gmail.com=abc+123@gmail.com=abc+abc@gmail.com&lt;br /&gt;在邮箱地址后可以用加号加上仍和英文或者数字。这样可以便于邮件分类。不过有些地方认为+是非法邮件地址，不能被用于注册。&lt;br /&gt;&lt;br /&gt;3. dot&lt;br /&gt;abc.xyz@gmail.com=abcxyz@gmail.com&lt;br /&gt;万一少打或者错加了几个点也毫无关系。handy&lt;br /&gt;&lt;br /&gt;Any more tips or tricks? Tell me please!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+google" rel="tag"&gt;google&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+email" rel="tag"&gt;email&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+gmail" rel="tag"&gt;gmail&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114725779027544428?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114725779027544428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114725779027544428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114725779027544428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114725779027544428'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/05/strange-gmail-address.html' title='Strange gmail address'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114709118617941628</id><published>2006-05-08T13:58:00.000+02:00</published><updated>2006-05-08T14:30:24.346+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Install Firefox 1.5 on Ubuntu</title><content type='html'>&lt;u&gt;在ubuntu上安装或升级Firefox&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Firefox不能用apt-get install来安装(bt, 为什么不行)。所以要从Mozilla.com上下载Firefox. 由于编译的gcc版本不同，导致这个Firefox和中文输入法SCIM有冲突。&lt;a href="https://wiki.ubuntu.com/FirefoxNewVersion"&gt;wiki.ubuntu.com&lt;/a&gt;上推荐下载源码并重新编译Firefox。我试过之后发现启动Firefox的时候，提示缺少一个库，有错误产生。&lt;br /&gt;&lt;br /&gt;在Ubuntu中文wiki上倒是有很好的&lt;a href="http://old.ubuntu.org.cn/support/documentation/wiki/FirefoxNewVersion/?searchterm=firefox"&gt;解决方法&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;译注:由于scim可能导致使用libstdc++5的GTK程序出现"段错误",如果出现新装的&lt;/span&gt;&lt;span style="font-style: italic;" class="highlightedSearchTerm"&gt;firefox&lt;/span&gt;&lt;span style="font-style: italic;"&gt;1.5无法运行,可修改 export GTK_IM_MODULE="scim"为GTK_IM_MODULE="xim" 来绕过,这句一般在/etc/X11/Xsession.d/95xinput中.(catinsnow)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;安装完后的配置极其方便，只要把windows里的配置文件(C:\Documents and Settings\user_name\Application Data\Mozilla\Firefox\Profiles\xxxxxxxx.default)直接复制到Linux里就可以了(~/.mozilla/firefox/profiles)。所有的收藏夹、扩展、及其配置全部都有了，甚至包括原先保存的密码。当然复制之前可以先清除cookie减小体积。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+firefox" rel="tag"&gt;firefox&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+ubuntu" rel="tag"&gt;ubuntu&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+linux" rel="tag"&gt;linux&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114709118617941628?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114709118617941628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114709118617941628' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114709118617941628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114709118617941628'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/05/install-firefox-15-on-ubuntu.html' title='Install Firefox 1.5 on Ubuntu'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114705057707973560</id><published>2006-05-08T03:03:00.000+02:00</published><updated>2006-05-08T03:24:24.690+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='E-tech'/><title type='text'>用MEMS来冷却芯片</title><content type='html'>&lt;u&gt;用MEMS来冷却芯片&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Source: &lt;a href="http://www.eetimes.com/news/design/technology/showArticle.jhtml?articleID=187000011"&gt;eetimes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;基于MEMS的微型冷却器件，推动冷却液，小到可以蚀刻在芯片上。恩，不错的想法。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+EE-Tech" rel="tag"&gt;EE-Tech&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+MEMS" rel="tag"&gt;MEMS&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+thermo" rel="tag"&gt;thermo&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114705057707973560?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114705057707973560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114705057707973560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114705057707973560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114705057707973560'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/05/mems.html' title='用MEMS来冷却芯片'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114696758865611900</id><published>2006-05-07T04:05:00.000+02:00</published><updated>2007-04-07T17:04:15.414+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>getting CVS Emacs 23</title><content type='html'>If you don't have CVS installed, install one:&lt;br /&gt;&lt;blockquote&gt;$ sudo apt-get install cvs&lt;/blockquote&gt;&lt;br /&gt;Checkout the latest cvs version, the unicode-2 branch:&lt;br /&gt;&lt;blockquote&gt;$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co -r emacs-unicode-2 emacs&lt;/blockquote&gt;&lt;br /&gt;Preparing for compile. Install all dependencies:&lt;br /&gt;&lt;blockquote&gt;$ sudo apt-get build-dep emacs21&lt;/blockquote&gt;Compile:&lt;br /&gt;&lt;blockquote&gt;$ cd emacs&lt;br /&gt;$ ./configure --enable-font-backend --with-xft --with-freetype --with-gtk&lt;br /&gt;$ make bootstrap&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Try to run src/emacs, if there is no problem,&lt;br /&gt;&lt;blockquote&gt;$ sudo make install&lt;/blockquote&gt;That's all.&lt;br /&gt;&lt;br /&gt;I've encounted such error during the ./configure:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;checking for gtk+-2.0 &gt;= 2.4 glib-2.0 &gt;= 2.4... no&lt;br /&gt;Package gtk+-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gtk+-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'gtk+-2.0' found&lt;br /&gt;configure: error: Library requirements (gtk+-2.0 &gt;= 2.4 glib-2.0 &gt;= 2.4) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Solution:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;$sudo apt-get install libidl-dev&lt;br /&gt;$sudo apt-get install libgtk2.0-dev&lt;br /&gt;&lt;/blockquote&gt;Now there's no conflict to use scim in Emacs under gnome.&lt;br /&gt;However, if emacs is started with --enable-font-backend I still can't use scim.&lt;br /&gt;&lt;br /&gt;If you are under Windows and so lazy as me, download the latest Emacs23 for win32 (binary and/or source) from here:&lt;br /&gt;&lt;a href="http://ntemacs.sourceforge.net/"&gt;http://ntemacs.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;last update on 2006-11-01&lt;hints id="hah_hints"&gt;&lt;/hints&gt; &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+emacs" rel="tag"&gt;emacs&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+ubuntu" rel="tag"&gt;ubuntu&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+cvs" rel="tag"&gt;cvs&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+linux" rel="tag"&gt;linux&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114696758865611900?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jasonal.blogspot.com/2006/05/getting-cvs-emacs-23.html' title='getting CVS Emacs 23'/><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114696758865611900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114696758865611900' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114696758865611900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114696758865611900'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/05/getting-cvs-emacs-23.html' title='getting CVS Emacs 23'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114679125395121631</id><published>2006-05-05T02:37:00.000+02:00</published><updated>2006-12-05T07:20:37.883+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><title type='text'>干掉和重建Grub</title><content type='html'>&lt;u&gt;干掉和重建Grub&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;装了ubuntu，Grub是装在MBR的。有一次从Windows XP休眠，再次开机后就无法进入Windows，情况是：在Grub  list 选择Windows，然后回到Grub list。进入ubuntu没有问题。&lt;br /&gt;&lt;br /&gt;当时手头有张Win XP恢复盘(德语)，比较土，以前没有用过。从光盘启动后，没有任何停顿，没有任何选项，开始嘎叽嘎叽地安装了。新的Windows是装在D盘的。我不想有两个XP，安装过程中强行关机了。再次开机后只有windows自己的boot list了。选了老的那个，直接把D的windows目录删除，再把C盘下的boot.ini改成只有C盘的Windows。重启后一切正常，只不过开机过程中的语言成了德语。比较郁闷，这个语言是在哪里改的？&lt;br /&gt;&lt;br /&gt;用ubuntu安装盘重装Grub。没有Suse的recovery那么简单。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;在boot提示行输入rescue&lt;/li&gt;&lt;li&gt;之后就好像要重新安装ubuntu一样，选择语言、地区、键盘等。&lt;/li&gt;&lt;li&gt;然后是配置网络，设置主机名，这些都可以随便设。&lt;/li&gt;&lt;li&gt;然后出来一个分区表，选择原先的ubuntu分区，格式是 dev/discs/disc0/partX. X是1到n，可以一个个试过来，如果不是linux分区，会有错误提示，然后返回。选择linux分区之后进入# 命令行。&lt;/li&gt;&lt;li&gt;输入 # grub-install /dev/sda 重装Grub，有些机器是/dev/hda  (?)。&lt;/li&gt;&lt;li&gt;之后有个警告，可以去 /boot/grub/device.map 查看原先是把grub装在哪里的。&lt;/li&gt;&lt;li&gt;最后 # exit，重启，Grub菜单又回来了。&lt;/li&gt;&lt;/ul&gt;整个过程不到10分钟。&lt;br /&gt;&lt;br /&gt;后来又重试了几次，发现windows休眠后的重启仍然正常。又试了一下fdisk /MBR，对于windows启动来说是绝对安全的。比较BT的是，用XP安装盘的恢复模式进入DOS命令行（实际上不是dos?）没有fdisk这个命令。要fdisk /MBR 只能用其他的dos启动盘。 &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+linux" rel="tag"&gt;linux&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114679125395121631?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114679125395121631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114679125395121631' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114679125395121631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114679125395121631'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/05/grub.html' title='干掉和重建Grub'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114670921630629313</id><published>2006-05-04T04:10:00.000+02:00</published><updated>2006-05-08T03:22:05.270+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><title type='text'>一些Linux应用程序</title><content type='html'>&lt;u&gt;一些Linux应用程序&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;来源：&lt;a href="http://learn.tsinghua.edu.cn:8080/2001315450/index.html"&gt;王垠&lt;/a&gt;的《&lt;a href="http://www.cqacmm.com/myweb/teach/workinlinux.htm"&gt;完全用Linux工作&lt;/a&gt;》&lt;span style="font-size:100%;"&gt;&amp;amp; &lt;a href="http://learn.tsinghua.edu.cn:8080/2001315450/linux.html"&gt;处理日常事务的 Linux 程序和它们的配置&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Shell: bash。它结合了 csh 和 ksh 的优点，并且有 readline 功能，你可以随意绑定自己的键盘。 &lt;/li&gt;&lt;li&gt;   编辑器： VIM, Emacs。 &lt;/li&gt;&lt;li&gt;   程序开发： GCC, make, ld, Scheme48, j2sdk, Perl, Python, Tcl/Tk ... &lt;/li&gt;&lt;li&gt;   论文，幻灯工具：LaTeX, ConTeXt &lt;/li&gt;&lt;li&gt;   绘图工具：MetaPost。这个语言太强了，以至于我只用它了。你不熟悉的话可以用xfig, dia 来画一些流程图之类的图片。 &lt;/li&gt;&lt;li&gt;   图像处理：ImageMagick。其中的 import 程序可以屏幕抓图，convert 程序可以转换图像格式，display 可以显示图片和简单编辑(缩放，换质量，转格式，简单绘图，简单虑镜)。通常我就这么点需要。如果你要更强大的图像工具可以用    Gimp, 它几乎和Photoshop差不多。 &lt;/li&gt;&lt;li&gt;   自动管理工具：make。我可以用make来自动编译程序，自动编译文档，自动更新插图…… 全自动，而且不会重复劳动。 &lt;/li&gt;&lt;li&gt;   数值计算程序：SciLab。这个程序基本上可以代替 Matlab。 &lt;/li&gt;&lt;li&gt;   代数计算程序：MAXIMA。这个程序基于世界上最老的计算机代数系统之一: 由美国能源部(DOE)发行的 MIT Macsyma 系统。它是用 Common    Lisp 实现的。很多现在的符号计算程序比如 Maple 都从 MAXIMA 身上学到很多东西。它现在经过 DOE 批准以GPL发行，永远是一个自由软件。    &lt;/li&gt;&lt;li&gt;   加密程序：GnuPG。我的 PGP 密钥就是它搞出来的。 &lt;/li&gt;&lt;li&gt;   打包，压缩程序。什么都有: tar, gzip, bzip2, zip, rar, ... &lt;/li&gt;&lt;li&gt;   虚拟光驱程序。Linux 不需要虚拟光驱程序，直接 mount 就行了。 &lt;/li&gt;&lt;li&gt;   ftp 服务器：proftpd, vsftpd。proftpd 功能很强，但是我只用了最简单的一种设置。 &lt;/li&gt;&lt;li&gt;   WWW 服务器：apache。(我一般没有开) &lt;/li&gt;&lt;li&gt;   ftp 客户程序：lftp，ncftp。它们都是文本方式操作的，但是比起图形界面的方便的多。比如 lftp 几乎具有 bash 的所有方便功能，Tab    补全，bookmark, queue, 后台下载，镜像…… Linux 也有图形界面的 ftp 客户程序，但是大多不稳定，有很多问题。这就是很多人抱怨    Linux 不如 Windows 的一个小原因。还有很多人用 Wine 模拟 Windows 的leapftp，其实 lftp 比 leapftp 好很多，你需要的只是适应一下。    &lt;/li&gt;&lt;li&gt;   自动下载工具：wget。它非常稳定，有一次我下载一个程序，用 IE 和 Mozilla 下载回来的文件都是坏的，最后还是 wget 可靠的传输了数据。用它甚至可以镜像整个网站，比起WebZip    这样的 Windows 程序强多了，而且不会因为你不付钱就在下载回来的网页里强制插入广告。 &lt;/li&gt;&lt;li&gt;   虚拟终端：rxvt, xterm, gnome-terminal, mlterm, ... &lt;/li&gt;&lt;li&gt;   X server: XFree86 &lt;/li&gt;&lt;li&gt;   窗口管理器：FVWM。编译加入了 libstroke。 &lt;/li&gt;&lt;li&gt;   中文输入：XSIM。被我修改过以适应 FVWM 的需要。另外推荐你还可以用 SCIM。 &lt;/li&gt;&lt;li&gt;   email 处理：Mutt + Postfix + fetchmail &lt;/li&gt;&lt;li&gt;   看 PDF, PS, DJVU 文件：Acrobat Reader, xpdf, GhostScript, gv, djvu工具包和netscape 插件。    &lt;/li&gt;&lt;li&gt;   看CAJ文档。我从来不看CAJ之类的文档，如果找不到PDF或PS，直接去图书馆借最好。&lt;/li&gt;&lt;li&gt;   看网页：Mozilla, Phoenix, lynx。Mozilla-Xft 的显示效果比IE 好很多。 &lt;/li&gt;&lt;li&gt;   英汉字典：IBM智能词典，星际译王。 &lt;/li&gt;&lt;li&gt;   编辑网页：我用VIM 直接写 HTML。你如果想要图形方式的可以用其它的比如screem, BlueFish。 &lt;/li&gt;&lt;li&gt;   登录其它 UNIX, Linux 机器：openSSH, telnet。 我喜欢用 openSSH 把其它机器的X 程序通过 ssh 加密的隧道传到我机器上显示。    &lt;/li&gt;&lt;li&gt;   登录 Windows2000 server 的 display service: rdesktop，...我有一天试了一下，不错。后来就没有用过了。 &lt;/li&gt;&lt;li&gt;   同步程序：rsync。我用 rsync 通过 ssh 来跟某些机器同步数据，或者做自己机器上不同目录间的同步。 &lt;/li&gt;&lt;li&gt;   上BBS：rxvt(或任何一种终端) + telnet + chatbot(helloooo 机器人的程序) &lt;/li&gt;&lt;li&gt;   QQ, ICQ: 我没有 QQ 或 ICQ。不过你可以用 Gaim, 它同时支持 QQ, ICQ 和很多其它的即时通信方式。ICQ 用户也可以用 Licq。    &lt;/li&gt;&lt;li&gt;   放录像：MPlayer, RealPlayer。MPlayer 太好了，直接就可以放 VCD, DVD, divx, wma, wmv ... 用 Windows    的同学都很羡慕我，说 Windows 要放这个需要大堆插件。rm 最好还是用 realplayer 放，它也是免费的。 &lt;/li&gt;&lt;li&gt;   放音乐： xmms(mp3,ogg都可以), mpg321(放mp3), ogg123(放ogg)。mpg321 不如xmms管理音乐文件那么方便，但是有时我还是用    mpg321 放 mp3 作为背景音乐，因为懒得开一个xmms窗口:-)&lt;/li&gt;&lt;li&gt;   游戏：我觉得 KDE 的那个 ksokoban(推箱子)，很好玩 :-) &lt;/li&gt;&lt;li&gt; 看 Word 文档。请 Word 用户把文档全部转为 PDF 或 PS 再给我，文档里没有特殊的格式干脆就用文本吧，何必那么麻烦。以前很奇怪的是，通知里本来没有什么特殊的格式居然还要发doc附件的email。现在好 了，我们系发通知都用文本，PDF，甚至图片了。&lt;/li&gt;&lt;li&gt;   其它程序：还有很多我需要用而你不一定用得着的。比如，Doctor Scheme, &lt;/li&gt;&lt;li&gt;   Scheme48, Scsh, kawa...这些程序只有 Doctor Scheme 有Windows版本。还有很多幕后工作但是你一般不察觉的：xinetd,    telnetd, sshd, crond, atd, lpd, ... 他们都比 Windows 的对应者强的多，或者根本没有对应者。&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://blog.cathayan.org/item/1244"&gt;后续&lt;/a&gt;略 &lt;br /&gt;&lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Linux" rel="tag"&gt;Linux&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114670921630629313?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114670921630629313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114670921630629313' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114670921630629313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114670921630629313'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/05/linux.html' title='一些Linux应用程序'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114653020020355810</id><published>2006-05-02T02:34:00.000+02:00</published><updated>2006-06-13T22:00:17.336+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><title type='text'>Proxy setting for ubuntu 5.10 GUI Update Manager</title><content type='html'>Proxy setting for ubuntu 5.10 Update Manager:&lt;br /&gt;&lt;br /&gt;Set proxies in Gnome "Network Proxy Setting", or in /etc/bash.bashrc, or /etc/wget.rc won't apply to Update Manager.&lt;br /&gt;You had to put a line like this in &lt;span style="font-weight: bold; color: rgb(255, 0, 0);font-family:courier new;" &gt;/etc/apt/apt.conf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;&lt;blockquote&gt;Acquire::http::Proxy "http://proxy.mydomain.com:8080"&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In "Breezy Badger" you must edit apt.conf as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;Acquire&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;http::proxy "http://proxy.mydomain.com:8080"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;&lt;/span&gt;  &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+ubuntu" rel="tag"&gt;ubuntu&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Linux" rel="tag"&gt;Linux&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+proxy" rel="tag"&gt;proxy&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114653020020355810?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114653020020355810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114653020020355810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114653020020355810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114653020020355810'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/05/proxy-setting-for-ubuntu-510-gui.html' title='Proxy setting for ubuntu 5.10 GUI Update Manager'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114627969595099656</id><published>2006-04-29T03:47:00.000+02:00</published><updated>2006-05-12T12:32:25.906+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thinkpad'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><title type='text'>关于ThinkPad飞线</title><content type='html'>&lt;u&gt;关于联想ThinkPad飞线&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://image2.sina.com.cn/IT/it/2006-04-27/U67P2T1D921258F13DT20060428082128.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://image2.sina.com.cn/IT/it/2006-04-27/U67P2T1D921258F13DT20060428082128.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;相关报道：&lt;br /&gt;&lt;a href="http://doc.intozgc.com/200604/27/00085573_2.shtml"&gt;&lt;span id="title" class="shadow2"&gt;                   ThinkPad T60现重大缺陷!主板居然飞线&lt;/span&gt;&lt;/a&gt; (&lt;a href="http://tech.sina.com.cn/n/2006-04-27/0914920260.shtml"&gt;替代链接&lt;/a&gt;)&lt;br /&gt;&lt;span id="title" class="shadow2"&gt;                   &lt;a href="http://doc.intozgc.com/200604/28/00085723.shtml"&gt;联想承认ThinkPad飞线 否认质量问题&lt;/a&gt; (&lt;a href="http://tech.sina.com.cn/it/2006-04-27/2200921258.shtml"&gt;替代链接&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;这个是联想ThinkPad T60(P)主板背面的飞线，X60上也有类似的飞线。ThinkPad竟然也有飞线，粗看着实吓了一跳。不过仔细分析的话，其实也不是什么大问题，对本本质量没有影响。&lt;br /&gt;&lt;br /&gt;首先，这条线还是焊得比较精细的，而且用蜡封固定，走线方向也没有大问题，所以这条线本身不会出什么大问题。&lt;br /&gt;&lt;br /&gt;其次更为重要的是，这条线到底是干什么的。&lt;br /&gt;&lt;br /&gt;先看看这块芯片，&lt;a href="http://www.maxim-ic.com/"&gt;Maxim&lt;/a&gt; 1540E，根据&lt;a href="http://pdfserv.maxim-ic.com/en/ds/MAX1540A-MAX1541.pdf"&gt;1540A/1541的Datasheet&lt;/a&gt;，此芯片是专用于笔记本电脑，提供0.7~5.5V电源电压，双PWM控制器。可输出两个电压，可用于DDR或其他低电压IC的供电。相当重要的哦。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://tk.files.storage.msn.com/x1p4JHjVbcjTC804cRu7M6KI50H_IeqCWGGCguIo93G5Ri2XbaErVpPSwqJUrVN5QEkEbbBps1kj75uqEoHCpXYJ9GfIAgwnyg_vJKPabuxaFVX-0PtGtL-y5U98soVLV6mtGgxaRiHQjbySWyyHJLhFQ"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 400px;" src="http://tk.files.storage.msn.com/x1p4JHjVbcjTC804cRu7M6KI50H_IeqCWGGCguIo93G5Ri2XbaErVpPSwqJUrVN5QEkEbbBps1kj75uqEoHCpXYJ9GfIAgwnyg_vJKPabuxaFVX-0PtGtL-y5U98soVLV6mtGgxaRiHQjbySWyyHJLhFQ" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;根据Datasheet，这条飞线是第13个引脚，也就是PGOOD2，Open-Drain Power-Good Output。Function: &lt;span style="font-family:arial;"&gt;PGOOD2 is low when the output voltage is more than 10% (typ) above or below the normal regulation point, during soft-start, and in shutdown. After the soft-start circuit has terminated, PGOOD2 becomes high impedance if the output is in regulation.&lt;/span&gt; 就是说当输出电压异常的时候这个引脚会变成低电平。否则是高阻态。有可能原先是悬空的，估计这条飞线让他接上一个上拉电阻，既没有大电流，也不是高频率，正常的时候变成高电平而不再是高阻。所以这个脚只是一个报错信号，平常是用不到的。即使出错了，也仍然会报错，即使没有这条线也没关系。&lt;br /&gt;&lt;br /&gt;分析了一大通，就算剪掉这条线也没有关系。好像对面的PGOOD1也没有接上拉电阻，不过预留了电阻的空位。&lt;br /&gt;&lt;br /&gt;顺便转一个&lt;a href="http://forum.thinkpads.com/viewtopic.php?t=24106"&gt;forum.thinkpads.com&lt;/a&gt;的评论：&lt;br /&gt;&lt;span class="postbody"  style="font-family:webdings;"&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;After a 30 year career with IBM, engineering changes to circuit boards were a way of life. When engineers design a circuit board, it is nearly impossible to foresee every condition that will ever be presented to that design. Therefore when that change is needed, the “yellow wire” is applied to the existing boards to allow their use in the production cycle. Hence engineering change numbers are applied to circuit boards, as they are manufactured, to show their level in the ongoing design process. In software or application development, this process is called “bug fixes” or “patches”, you could look at these changes as the “yellow wire” wire applied to programs. Frequently these corrections to code are added to enhancements, and called &lt;span style="font-weight: bold;"&gt;upgrades&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="title" class="shadow2"&gt;&lt;br /&gt;&lt;/span&gt;        &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Thinkpad" rel="tag"&gt;Thinkpad&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+notebook" rel="tag"&gt;notebook&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+laptop" rel="tag"&gt;laptop&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+lenovo" rel="tag"&gt;lenovo&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+ibm" rel="tag"&gt;ibm&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+EE-Tech" rel="tag"&gt;EE-Tech&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114627969595099656?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114627969595099656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114627969595099656' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114627969595099656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114627969595099656'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/04/thinkpad.html' title='关于ThinkPad飞线'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114599086614538034</id><published>2006-04-25T20:42:00.000+02:00</published><updated>2006-09-13T16:42:47.356+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPGA'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><title type='text'>How to create an ISE project including an embedded submodule</title><content type='html'>&lt;a href="http://toolbox.xilinx.com/docsan/xilinx8/EDKHelp/platform_studio/html/ps_p_cxd_embedded_submodule_design_overview.htm"&gt;Embedded Submodule Design Overview&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://toolbox.xilinx.com/docsan/xilinx8/EDKHelp/platform_studio/html/ps_p_cxd_adding_embedded_submodule_to_ise.htm"&gt;Adding an Embedded Submodule to ISE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Top-down&lt;br /&gt;&lt;br /&gt;Bottom-up&lt;br /&gt;&lt;br /&gt;&lt;a href="http://toolbox.xilinx.com/docsan/xilinx8/EDKHelp/platform_studio/html/ps_p_cxd_creating_xps_design_as_submodule.htm"&gt;Creating an XPS Design as an ISE Submodule&lt;/a&gt;&lt;br /&gt;Only the XMP file must be added as the source file. The BMM file should not be added to the ISE project.&lt;br /&gt;&lt;a href="http://toolbox.xilinx.com/docsan/xilinx8/EDKHelp/platform_studio/html/ps_p_cxd_including_embedded_submodule_in_toplevel_design.htm"&gt;Including an Embedded Submodule in Your Top-Level Design&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And next... &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+xilinx" rel="tag"&gt;xilinx&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+FPGA" rel="tag"&gt;FPGA&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+XPS" rel="tag"&gt;XPS&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+EDK" rel="tag"&gt;EDK&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+ISE" rel="tag"&gt;ISE&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114599086614538034?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114599086614538034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114599086614538034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114599086614538034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114599086614538034'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/04/how-to-create-ise-project-including.html' title='How to create an ISE project including an embedded submodule'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114597477386778608</id><published>2006-04-25T15:35:00.000+02:00</published><updated>2006-06-13T21:49:55.883+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Emacs for windows 注册表配置</title><content type='html'>&lt;u&gt;Emacs for windows 注册表配置&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;参考heriberaht@smth转发的Windows下Emacs启动时最大化设置步骤&lt;br /&gt;&lt;br /&gt;Environment:Windows xp + emacs-version "22.0.50.1" (CVS20060320)&lt;br /&gt;&lt;br /&gt;注：&lt;a href="http://learn.tsinghua.edu.cn:8080/2001315450/emacs24/index.htm"&gt;Sams 一书&lt;/a&gt;有这样一句&lt;br /&gt;Any variable that the UNIX user can set with the Xdefaults file is one&lt;br /&gt;that the NT Emacs user can set in the Registry.&lt;br /&gt;&lt;br /&gt;Windows 下 Emacs 启动时最大化设置步骤&lt;br /&gt;=====================================&lt;br /&gt;&lt;br /&gt;1. 去掉 MenuBar/ToolBar/ScrollBar 查 Emacs 最大化时的 Geometry 参数&lt;br /&gt;在 *scratch* 中输入 (frame-parameters (selected-frame)) C-j&lt;br /&gt;其中有四个参数：(top + -4) (left + -4) (width . 111) (height . 39)&lt;br /&gt;这里的宽和高每台机器的配置或许不同，字体改变后，这个两个值也会变化。我的Laptop上甚至得不到height的值。&lt;br /&gt;&lt;br /&gt;2. 根据查到的参数设置注册表和 .emacs 文件&lt;br /&gt;（ width 和 height长宽可能要加 1，可以自行调试。如果把windows外观主题设为windows classic, 效果比较好）&lt;br /&gt;(1) 注册表设置&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 0);font-size:100%;" &gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;    REGEDIT4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    [HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    "Emacs.Background"="Black"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    "Emacs.Foreground"="Wheat"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    "Emacs.ScrollBars"="OFF"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    "Emacs.MenuBar"="OFF"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    "Emacs.ToolBar"="OFF"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    "Emacs.Geometry"="124x45+-4+-4"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    "Emacs.Font"="-*-Courier New-normal-r-*-*-13-*-*-*-c-*-*-*"&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;设置 Emacs.Font 避免启动时窗口有一个由小到大的变化过程，字体串取自 .emacs&lt;br /&gt;中 (create-fontset-from-fontset-spec ...) 相应设置，如下第一行。&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;这段没有测试过&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:100%;" &gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 153);font-size:100%;" &gt;&lt;span style="font-family:courier new;"&gt;        (create-fontset-from-fontset-spec&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     "-*-Bitstream Vera Sans Mono-normal-r-*-*-15-*-*-*-c-*-fontset-most,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     chinese-gbk:-*-宋体-normal-r-*-*-18-*-*-*-*-*-gbk*-*,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     chinese-gb2312:-*-宋体-normal-r-*-*-18-*-*-*-*-*-gb2312*-*,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     chinese-cns11643-5:-*-宋体-medium-r-*-*-18-*-*-*-*-*-gbk*-*,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     chinese-cns11643-6:-*-宋体-medium-r-*-*-18-*-*-*-*-*-gbk*-*,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     chinese-cns11643-7:-*-宋体-medium-r-*-*-18-*-*-*-*-*-gbk*-*,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     korean-ksc5601:-*-Batang-normal-r-*-*-18-*-*-*-c-*-ksc5601.1987*-*,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     chinese-big5-1:-*-宋体-normal-r-*-*-18-*-*-*-*-*-big5*-*,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     chinese-big5-2:-*-宋体-normal-r-*-*-18-*-*-*-*-*-big5*-*,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     japanese-jisx0208:-*-MS UI&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     Gothic-medium-r-*-*-18-*-*-*-*-*-jisx0208*-*" t)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(2) 设置 .emacs 文件（可以不设，设了可使 C-x 5 2 开 Frame 也最大化）&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;font-size:100%;"  &gt;&lt;blockquote&gt;        (setq default-frame-alist&lt;br /&gt;     (append '((top + -4)(left + -4)(width . 124) (height . 45))&lt;br /&gt;             default-frame-alist))&lt;/blockquote&gt;&lt;/span&gt; &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+emacs" rel="tag"&gt;emacs&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+register" rel="tag"&gt;register&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114597477386778608?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114597477386778608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114597477386778608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114597477386778608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114597477386778608'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/04/emacs-for-windows.html' title='Emacs for windows 注册表配置'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114596833547827034</id><published>2006-04-25T14:19:00.000+02:00</published><updated>2006-09-09T14:11:51.586+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPGA'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><title type='text'>Xilinx EDK Error and solution (1)</title><content type='html'>最近在用xilinx EDK 8.1i (embedded design kit)，又叫 XPS(xilinx platform studio)。期间遇到一些错误及解决方法，顺手记录下来。&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-weight: bold;" lang="EN-US"&gt;ERROR:&lt;/span&gt;&lt;br /&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;In function ‘write’: undefined reference to 'outbyte' &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US"&gt;or&lt;b style=""&gt; in function ‘read’: undefined reference to ‘inbyte’&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  Solution:&lt;br /&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style="font-family:times new roman;"&gt;Define peripheral as standard-out and standard-in by using the Software Platform Settings dialog box.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;FATAL_ERROR:Xst:Portability/export/Port_Main.h:127:1.16 - This application has discovered an exceptional condition from which it cannot recover.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  Solution:&lt;span lang="EN-US"&gt;&lt;br /&gt;Delete an unused GPIO instance.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;ERROR:Place:207 - Due to SelectIO banking constraints, the IOBs in your design cannot be automatically placed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Solution 1:&lt;/span&gt;&lt;span style="" lang="DE"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Modify the IOstandard in FPGA Editor and run BitGen without the DRC check (bitgen -d).&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Solution 2:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Some pins are not defined. Define all used ports in Project_Dir\data\system.ucf.  The complete ports definition is in the EDK directroy: D:\EDK\board\Xilinx\boards\... It is an xbd file. Here I am using a xilinx eva-board, for other boards or customized boards the definition file may be different.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;    &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+xilinx" rel="tag"&gt;xilinx&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+FPGA" rel="tag"&gt;FPGA&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+XPS" rel="tag"&gt;XPS&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+EDK" rel="tag"&gt;EDK&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114596833547827034?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114596833547827034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114596833547827034' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114596833547827034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114596833547827034'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/04/xilinx-edk-error-and-solution-1.html' title='Xilinx EDK Error and solution (1)'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114593289264544642</id><published>2006-04-24T23:28:00.000+02:00</published><updated>2007-03-20T13:53:50.468+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Emacs 一些常用包</title><content type='html'>&lt;u&gt;Emacs 一些常用包&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;参考newsmth.net的&lt;a href="http://www.newsmth.net/bbsdoc.php?board=Emacs"&gt;emacs版&lt;/a&gt;，bethoven@smth的&lt;a href="http://learn.tsinghua.edu.cn:8080/2004211031/publish/GNU/ntemacs.html"&gt;windows下使用Emacs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://mule-gbk.sourceforge.net/"&gt;mule-gbk&lt;/a&gt;&lt;br /&gt;用于中文编码，直接复制里面的.el文件就可以用了。&lt;br /&gt;参见&lt;a href="http://learn.tsinghua.edu.cn:8080/2004211031/publish/GNU/ntemacs.html#sec4"&gt;这里&lt;/a&gt;。&lt;br /&gt;emacs 23 就不需要这个包了。不过据说现在23版本还有很多Bug, 而且没有正式的预编译版本，所以暂时先搁着了。&lt;br /&gt;&lt;br /&gt;2. &lt;a href="http://www.emacswiki.org/cgi-bin/wiki/WDired"&gt;wdired&lt;/a&gt;&lt;br /&gt;用于在dired模式下直接修改文件或目录名(默认配置按r)&lt;br /&gt;下载wdired.el到%HOME%/site-lisp/&lt;br /&gt;在.emacs添加：&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:100%;" &gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;(require 'wdired)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(autoload 'wdired-change-to-wdired-mode "wdired")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(define-key dired-mode-map "r"&lt;br /&gt;  'wdired-change-to-wdired-mode)&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3. &lt;a href="http://www.emacswiki.org/cgi-bin/wiki/ColorTheme"&gt;color-theme&lt;/a&gt;&lt;br /&gt;很多漂亮的配色主体。我现在用gnome2感觉挺舒服的。&lt;a href="http://download.gna.org/color-theme/6.5.5/"&gt;下载&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:100%;" &gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;(require 'color-theme)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(color-theme-gnome2)  ;; change the theme here&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4. cygwin-mount&lt;br /&gt;windows下Emacs最好配合cygwin使用，这样就能用ediff(文件比较)这样的功能了。&lt;br /&gt;参见&lt;a href="http://www.khngai.com/emacs/cygwin.php"&gt;这里&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;5. &lt;a href="http://www.emacswiki.org/cgi-bin/wiki/InteractivelyDoThings"&gt;ido&lt;/a&gt;&lt;br /&gt;加强c-x c-f(find file)和c-x b(切换buffer)功能。由于备选文件和备选Buffer存在Cache里，所以切换Buffer和寻找文件非常迅速。有点像i-search那样，只要输入文件名的一部分就能找到文件了。按方向键或者C-s, C-r可以在ido-find-file切换匹配的Buffer或文件名。&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:100%;" &gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;(require 'ido)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(ido-mode t)&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;用了ido后有一些“副作用”，比如回去访问过的ftp上找匹配的文件名，这样会很慢，解决方法看&lt;a href="http://jasonal.blogspot.com/2006/06/emacs-idoel.html"&gt;&lt;span style="text-decoration: underline;"&gt;这里&lt;/span&gt;&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;6. &lt;a href="http://www.emacswiki.org/cgi-bin/wiki/IbufferMode"&gt;ibuffer&lt;/a&gt;&lt;br /&gt;加强c-x c-b (buffer list)的功能，用起来和目录差不多, 按 g 刷新&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;(require 'ibuffer)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;(global-set-key (kbd "C-x C-b") 'ibuffer)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;(autoload 'ibuffer "ibuffer" "List buffers." t)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;7. &lt;a href="http://www.northbound-train.com/emacs/dired-single.el"&gt;dired-single&lt;/a&gt;&lt;br /&gt;只产生一个dired buffer.&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:100%;" &gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;(require 'dired-single)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(define-key dired-mode-map (kbd "RET") 'joc-dired-single-buffer)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(define-key dired-mode-map (kbd ".")&lt;br /&gt;  '(lambda ()&lt;br /&gt;      (interactive)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        (joc-dired-single-buffer "..")))&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;副作用是回上层目录不能选..了，只能另找个按键代替，这里用了"."&lt;br /&gt;刚改进了一下&lt;a href="http://imemory.3000mb.com/blog/2006/06/improvement-for-dired-single.html"&gt;dired-single返回上层目录的功能&lt;/a&gt;，返回上层目录后光标停在原先的目录名上。&lt;br /&gt;&lt;br /&gt;8. midnight&lt;br /&gt;自动整理Buffer. 到午夜会自动关闭一些很久不用的buffer。&lt;br /&gt;&lt;br /&gt;9. &lt;a href="http://www.emacswiki.org/cgi-bin/wiki/RectangleMark"&gt;rect-mark&lt;/a&gt;&lt;br /&gt;矩形操作或者说列操作。使用方法在rect-mark.el里有。基本上就是C-x r + 常规区域操作。&lt;br /&gt;&lt;br /&gt;10. &lt;a href="http://www.wyrdrune.com/index.html?gnuserv.html"&gt;gnuserv&lt;/a&gt;/gnuclient&lt;br /&gt;可以让emacs代替notepad了。&lt;br /&gt;参见&lt;a aiotarget="false" aiotitle="这里" href="http://learn.tsinghua.edu.cn:8080/2004211031/publish/GNU/ntemacs.html#sec7"&gt;这里&lt;/a&gt;。&lt;br /&gt;如果使用&lt;a aiotitle="TC" href="http://shannycn.googlepages.com/"&gt;TC&lt;/a&gt;的话可以用&lt;a href="http://www.totalcmd.net/plugring/ChoiceEditor.html"&gt;ChoiceEditor&lt;/a&gt;把文本文件绑定到gnuclientw.exe上。就可以非常方便地用F4启用Emacs了。&lt;br /&gt;更新 2007/3/20：&lt;br /&gt;最新的NT Emacs 22 和 23 已经带了 emacsclient.exe 和 emacsclientw.exe，所以gnuserv就不用装了。使用方法是，在~/.emacs里加上这些：&lt;br /&gt;&lt;blockquote&gt;(server-start)&lt;br /&gt;;;退出的时候删掉server文件&lt;br /&gt;(add-hook 'kill-emacs-hook&lt;br /&gt;          (lambda()&lt;br /&gt;            (if (file-exists-p "~/.emacs.d/server/server")&lt;br /&gt;                (delete-file "~/.emacs.d/server/server"))))&lt;/blockquote&gt;用emacsclientw.exe打开文件的方法是：&lt;br /&gt;&lt;blockquote&gt;d:\Emacs\bin\emacsclientw.exe -f "d:\Emacs\home\.emacs.d\server\server" -n -a "d:\Emacs\bin\runemacs.exe" path\to\file&lt;/blockquote&gt;11. &lt;a href="http://www.emacswiki.org/cgi-bin/wiki/download/w32-browser.el"&gt;w32-browser&lt;/a&gt;&lt;br /&gt;在windows里相当好用。&lt;br /&gt;加上下面几句：&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:100%;" &gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;(require 'w32-browser)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(eval-after-load "dired"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  '(define-key dired-mode-map [f4] (lambda ()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                                     (interactive)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                                     (w32-browser&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                                      (dired-replace-in-string&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                                       "/" "\\"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                                       (dired-get-filename)))))) &lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;在dired浏览文件时只要按F4就能用对应的windows程序打开文件了。&lt;br /&gt;&lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Emacs" rel="tag"&gt;Emacs&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Elisp" rel="tag"&gt;Elisp&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;hints id="hah_hints"&gt;&lt;/hints&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114593289264544642?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114593289264544642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114593289264544642' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114593289264544642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114593289264544642'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/04/emacs_114593289264544642.html' title='Emacs 一些常用包'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114588925555862111</id><published>2006-04-24T16:32:00.000+02:00</published><updated>2006-05-08T03:17:15.500+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Emacs 常用快捷键</title><content type='html'>&lt;u&gt;Emacs 常用快捷键&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Emacs的快捷键都是绑定于ctrl和alt(或称meta)上的，例如c-x就是ctrl+x，m-x就是alt+x.&lt;br /&gt;当然所有的按键都可以自定义。&lt;br /&gt;&lt;br /&gt;常用的帮助按键:&lt;br /&gt;c-h a : 查询一个命令&lt;br /&gt;c-h c : 查询一个按键&lt;br /&gt;c-h t : Tutorial&lt;br /&gt;m-x customized-group RET ... 自定义模式&lt;br /&gt;m-x describe-... RET 各种各样的帮助信息&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;光标操作:&lt;br /&gt;m-&lt; : 光标到buffer头 m-&gt; : 光标到buffer尾&lt;br /&gt;m-a : 光标到前一&lt;span style="font-weight: bold;"&gt;句&lt;/span&gt;&lt;br /&gt;m-e : 光标到后一&lt;span style="font-weight: bold;"&gt;句&lt;/span&gt;&lt;br /&gt;c-up : 光标到前一&lt;span style="font-weight: bold;"&gt;段&lt;/span&gt;&lt;br /&gt;c-down : 光标到后一&lt;span style="font-weight: bold;"&gt;段&lt;/span&gt;&lt;br /&gt;c-left 或 m-left : 光标到前一个词&lt;br /&gt;c-right 或 m-right : 光标到后一个词&lt;br /&gt;&lt;br /&gt;常用按键：&lt;br /&gt;c-g : 取消当前命令或者按键&lt;br /&gt;&lt;br /&gt;文件操作：&lt;br /&gt;c-x c-f : 打开文件或目录&lt;br /&gt;c-x c-s : 保存当前文件&lt;br /&gt;c-x c-w : 当前文件另存为&lt;br /&gt;c-x u : undo&lt;br /&gt;&lt;br /&gt;剪切操作：&lt;br /&gt;c-spc : 选定区域，建议自行绑定此键，因为和windows的ctrl+space冲突。&lt;br /&gt;c-x h : 全选&lt;br /&gt;m-w : 复制&lt;br /&gt;c-w : 剪切&lt;br /&gt;c-y : 粘贴 (handy for german keyboard :)&lt;br /&gt;m-y : 粘贴剪贴板前一项内容&lt;br /&gt;c-k : 剪切一行&lt;br /&gt;&lt;br /&gt;查找和替换：&lt;br /&gt;c-s : 向后寻找 (i-search)&lt;br /&gt;c-r : 向前寻找(i-search)&lt;br /&gt;m-% : 查找并替换&lt;br /&gt;&lt;br /&gt;窗口操作：&lt;br /&gt;c-x l : 显示文件(buffer)总行数&lt;br /&gt;c-x 1 : 当前窗口最大化&lt;br /&gt;c-x 2 : 上下两窗口模式&lt;br /&gt;c-x 3 : 左右两窗口模式&lt;br /&gt;c-x 0 : 关闭当前窗口(Buffer仍然存在)&lt;br /&gt;c-x o : 切换窗口&lt;br /&gt;&lt;br /&gt;Buffer操作：&lt;br /&gt;c-x b : 切换buffer&lt;br /&gt;c-x c-b : buffer 列表&lt;br /&gt;c-x k : 关闭buffer&lt;br /&gt;g : 刷新目录(dired)或者buffer列表&lt;br /&gt;&lt;br /&gt;编码操作：&lt;br /&gt;c-x RET r : 改变当前buffer的编码&lt;br /&gt;c-x RET f : 改变保存当前文件所使用的编码&lt;br /&gt;&lt;br /&gt;几个好用的自定义按键：&lt;br /&gt;(global-set-key [(meta g)] 'goto-line) ;; m-g 跳到某一行&lt;br /&gt;(global-set-key [(ctrl tab)] 'kill-this-buffer) ;; c-tab 关闭当前buffer&lt;br /&gt;(global-set-key [(ctrl c) (ctrl c)] 'comment-or-uncomment-region) ;;c-c c-c区域注释或取消注释&lt;br /&gt;(global-set-key [(meta r)] 'eval-buffer) ;; m-r 执行buffer中的lisp代码&lt;br /&gt;(global-set-key [(ctrl &lt;)] 'set-mark-command) ;; c-&lt; 选定区域&lt;br /&gt;&lt;br /&gt;dired操作尚在研究中，据说可以有替代TC的可能。&lt;br /&gt;&lt;br /&gt;ps:&lt;br /&gt;Emacs是什么？ Emacs是世界上最强大的编辑器，但他不仅仅是编辑器，Emacs是一种生活方式。&lt;br /&gt;世界上有三种人，一种使用 Emacs，一种使用 vi，另一种包括其他所有人。wakaka&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+emacs" rel="tag"&gt;emacs&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+shortcut" rel="tag"&gt;shortcut&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114588925555862111?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114588925555862111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114588925555862111' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114588925555862111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114588925555862111'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/04/emacs_24.html' title='Emacs 常用快捷键'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114583699385120757</id><published>2006-04-24T01:13:00.000+02:00</published><updated>2006-04-24T02:38:53.970+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='All'/><title type='text'>Startup with Blogger</title><content type='html'>之所以用Blogger是想换换环境，之前一直用msn space的。&lt;br /&gt;注册了之后发现国内原来是上不了blogspot.com的，郁闷。后来google了很久，原来可以找个免费空间当载体，把Blogger当作一个发布器。&lt;br /&gt;具体方法可以见这里：&lt;a href="http://nologo.cn/articles/play_blogger/"&gt;玩转Blogger&lt;/a&gt; 或者 &lt;a href="http://newchen.blog-journals.com/2006/03/bloggerftp.html"&gt;妖精の翼&lt;/a&gt;&lt;br /&gt;免费ftp空间我找的是 &lt;a href="http://www.3000mb.com/"&gt;3000mb.com&lt;/a&gt;, 大概有3G吧，短期内肯定足够用了。使用ftp发布的坏处就是发文非常慢。&lt;br /&gt;&lt;br /&gt;之后的一个问题是tag. 用过&lt;a href="http://www.gmail.com"&gt;Gmail&lt;/a&gt;和&lt;a href="http://del.icio.us"&gt;delicious&lt;/a&gt;之后越来越喜欢这个功能了。而这个大名鼎鼎的Blogger竟然默认是没有标签的，虽然space也没有标签，但至少也有目录功能嘛。不过既然是用户最多的blog，那网上的大牛们肯定早有解决方法了吧。&lt;br /&gt;我现在采用的方法是: Firefox + &lt;a href="http://greasemonkey.mozdev.org/"&gt;GreaseMonkey&lt;/a&gt; + delicious. 步骤如下:&lt;br /&gt;1. 使用Firefox并安装插件&lt;a href="http://greasemonkey.mozdev.org/"&gt;GreaseMonkey&lt;/a&gt;，重起Firefox.&lt;br /&gt;2. Install user script &lt;a href="http://userscripts.org/scripts/show/2182"&gt;2182&lt;/a&gt;，重起Firefox.&lt;br /&gt;3. 申请一个&lt;a href="http://del.icio.us/"&gt;del.icio.us&lt;/a&gt;帐号.&lt;br /&gt;4. 登陆Blogger，settings-&gt;formatting-&gt;show link field，yes.&lt;br /&gt;5. 现在可以发文了，或者编辑原来的Blog，在标题下方会多出一栏Tags，单击Tags可以设定标签栏的名称，默认的标签名，和将要加入del.icio.us的帐户名。&lt;br /&gt;6. 发表文章，上传完毕后会多一个links at del.icio.us，单击这里跳出del.icio.us的提示窗口，文章链接、标题、发表时间、标签等都已经设好，直接save即可。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Blogger" rel="tag"&gt;Blogger&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+GreaseMonkey" rel="tag"&gt;GreaseMonkey&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+del.icio.us" rel="tag"&gt;del.icio.us&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+tagging" rel="tag"&gt;tagging&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114583699385120757?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114583699385120757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114583699385120757' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114583699385120757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114583699385120757'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/04/startup-with-blogger.html' title='Startup with Blogger'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26796774.post-114582437275219609</id><published>2006-04-23T22:32:00.000+02:00</published><updated>2006-04-24T02:12:07.483+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='All'/><category scheme='http://www.blogger.com/atom/ns#' term='Others'/><title type='text'>Getting started from here</title><content type='html'>这个&lt;a style="font-weight: bold;" href="http://imemory.3000mb.com/blog/"&gt;Blog&lt;/a&gt;将作为我的学习笔记。&lt;br /&gt;有一些上手比较难的工具，比如Emacs，曾经有段时间用得比较熟，隔了两三个月基本没用后，就几乎全忘了。这时候感觉到有个学习笔记还是很有用的。&lt;br /&gt;恩，这里就这样开始吧。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;div class="tags"&gt;del.icio.us Tags: &lt;ul&gt;&lt;li&gt;&lt;a href="http://del.icio.us/jasonal/iTech+Blog" rel="tag"&gt;Blog&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26796774-114582437275219609?l=jasonal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonal.blogspot.com/feeds/114582437275219609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26796774&amp;postID=114582437275219609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114582437275219609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26796774/posts/default/114582437275219609'/><link rel='alternate' type='text/html' href='http://jasonal.blogspot.com/2006/04/getting-started-from-here.html' title='Getting started from here'/><author><name>jasonal</name><uri>http://www.blogger.com/profile/13629985940503743620</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://imemory.3000mb.com/images/jasonal.jpg'/></author><thr:total>0</thr:total></entry></feed>
