1,svn-status下如何删除选中(mark)的未受版本控制(unknow)的文件?
  为svn-status-rm提供强制删除参数
  M-u 1
  M-x svn-status-rm
2,同时开多个shell
  M-x shell                     ;开个SHELL先
    M-x rename-buffer             ;改成*shell*以外的名字
                                  ;继续上面的步骤, 同理可实现开多个gdb多个telnet。
3, 以其它编码方式打开文件或执行命令
    C-x Ret c <命令>

4,protobuf-mode出现错误:error: `c-lang-defconst' must be used in a file 
  删除emacs的cc-mode.elc文件。
  不行则尝试将.emacs中该mode的load語句移到后面

5,emacs的跳转
 C-M-f和C-M-b是forward-sexp和backward-sexp,在括号后则匹配括号,否则匹配一个词。
 C-M-n和C-M-p是forward-lise和backward-list,专用于括号间跳转。

6,花括号补齐时自动换行并缩进
 (defun my-c-cpp-mode-common-hook()
  (c-set-style "linux")
  (setq c-basic-offset 4)
  ;(c-toggle-auto-hungry-state 1)                            
  (which-function-mode t)
  (define-key c-mode-base-map [(return)] 'newline-and-indent)
  (local-set-key (kbd "RET") 'newline-and-indent)
  (setq c-macro-shrink-window-flag t)
  (setq c-macro-preprocessor "cpp")
  (setq c-macro-cppflags " ")
  (setq c-macro-prompt-flag t)
  (setq abbrev-mode t)
  (make-local-variable 'skeleton-pair-alist)
  (setq skeleton-pair-alist  '(
    (?{ > \n > _ \n ?} >)))
  (setq skeleton-pair t)
  (local-set-key (kbd "\'") 'skeleton-pair-insert-maybe)
  (local-set-key (kbd "\"") 'skeleton-pair-insert-maybe)
  (local-set-key (kbd "(") 'skeleton-pair-insert-maybe)
  (local-set-key (kbd "{") 'skeleton-pair-insert-maybe)
  (local-set-key (kbd "`") 'skeleton-pair-insert-maybe)
  (local-set-key (kbd "[") 'skeleton-pair-insert-maybe)
  )
(add-hook 'c-mode-common-hook 'my-c-cpp-mode-common-hook)
(add-hook 'c++-mode-common-hook 'my-c-cpp-mode-common-hook)

7,获得快捷键的文本表示。
样板语句为(kbd ""),将光标放在""之间,然后执行M-x edmacro-insert-key,然后按照提示开始按键就产生了完整的文本表示。

8,让cedet的跳转更精确
cedet是基于源代码解析来运作的,所以非常精确,对于一个稍具规模(多目录层次)的程序,cedet会因为不能定位到include让效果大打折扣,
ede-cpp-root-project用于解决这个问题:
#Project.ede
(ede-cpp-root-project "tempproject":file "~/learn/tempproject/Project.ede"
    :include-path '( "/common" )
    :spp-table '( ("_DEBUG" . "")))

"tempproject"  是项目名称,随便填一个
"~/learn/tempproject/Project.ede" 是项目根目录下的一个文件,仅用于标记项目根目录
"/common" 是项目的包含路径,最开始是"/"表示的是项目根目录(这里是"~/learn/tempproject/")。
                     如果使用system-include-path,则最开始的/表示的就是系统根目录了。
        不以"/"开始的目录则表示是当前buffer(需要展开include路径的源文件buffer)所在目录。
"_DEBUG"  是定义的宏

9,xshell中compile时,编译输出的中文导致界面内容显示错乱,不输出中文就可以了.
(setq compile-command "LANG=en_US make")

10,长句子总是自动换行显示
(custom-set-variables
'(truncate-partial-width-windows nil))

11,内联函数缩进过多
  (c-set-offset 'inline-open 0)

12,不让光标闪烁
(blink-cursor-mode nil)
如果在gnome-terminal中运行emacs时:
  运行gconf-editor,取消/desktop/gnome/interface/cursor_blink
如果在linux text mode中运行时:
  ~/.bashrc中添加: alias emacst="echo -e '\033[?17;0;64c' && TERM=vt100 emacs -nw"
  然后以emacst启动emacs,注意:退出emacs后光标也不再闪烁。
13,ediff-directories默认显示同时存在于两个目录中的文件,要显示不同时存在于两个目录中的文件,按D即可。
14,gnus中当我进入一个组,所有的已读消息都没有了,我如何再看到它们?
当你通过 `RET' 进入一个 Summary buffer 时,只有未读邮件和标记的邮件
被加载。用 `C-u RET' 来取得所有可用邮件。如果只想读最新的300 个,用
`C-u 300 RET'。
参考:http://zoomquiet.org/res/scrapbook/ZqFLOSS/data/20101130102435/index.html