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