光标移动命令、翻页命令、查找、替换等最基本的编辑命令在启动emacs后按下C-h t可以看到很详细的介绍,或者也可以在菜单中找到。emacs其它菜单项点击后的帮助文档都是info文档,阅读info文档只需要记住七个按键就可以:u---up,回上层结点;p---previous,前一个结点;n---next,后一个结点;空格---向下翻一页;TAB---转到下一个超链接;i---搜索index;s---搜索文字。知道这些命令阅读info文档已经非常轻松,其实空格翻页都不用记,info文档中滚动和翻页等命令和emacs是一样的。另外还有shift-TAB转向上一个超链接。g—goto node,快速跳到指定的结点处。
1. M-x make-command-summary会列出当前所能用的所有命令。
2.
3. 修改了.emacs文件后是可以使用M-x load-file命令重新载入.emacs文件并使其生效的。例如,M-x load-file c:/.emacs
4.
5. M-x load-file, M-x eval-buffer与C-x C-e:
6. 这是查找不用重新启动emacs使新的配置生效时看到的三种方法。使用C-h f load-file可以查看load-file函数的用法。其中:
7. M-x load-file:用法为load-file filename。作用是载入名为filename的lisp文件并执行其中的代码。如果载入的文件不是有效的lisp语言文件,就输出一条错误信息。
8.
9. M-x eval-buffer:用法为(eval-buffer &optional buffer printflag filename unibyte do-allow-print)。其作用是将当前缓冲区的内容作为lisp代码来执行。在emacs中使用C-h f eval-buffer可以看到关于这个函数的各个参数的详细说明。
10.
11. C-x C-e:这是eval-last-sexp命令的快捷键。这条命令把光标前面的内容作为lisp代码执行,并在mini buffer中输出信息。如果带有命令前缀,则将输出信息输出到当前缓冲区中。可以使用C-h k C-x C-e来查看详细说明。
12.
13. emacs中还有很多以eval开头的函数,都是用作动态执行某些内容的。可以使用C-h f,然后输入eval,连续按两次TAB,来查看它们。
14.
15. 在自己的使用过程中,M-x load-file有可能会影响emacs的界面。因此,用M-x eval-buffer更好一些。
16.
17. ;;设置在emacs的标题栏中显示当前正在编辑的缓冲区的名字:
18. (setq frame-title-format "emacs - %b")
19.
20. ;;设置emacs启动时的初始目录,使用C-x C-f打开文件时emacs就会在这个目录下找
21. (setq default-directory "d:/mydocuments/mysourcecode/myselfcode/c_c++/adps/")
22.
23. ;;不产生备份文件
24. (setq make-backup-files nil)
25.
26. ;; 自动保存
27. (setq auto-save-mode nil)
28.
29. ;;设置emacs执行出错时进入调试状态,能看到emacs出错时的具体调用栈
30. (setq debug-on-error 1)
31.
32. ;;允许emacs和外部其他程序的粘贴
33. (setq x-select-enable-clipboard t)
34.
35. ;;设置编译命令
36. (setq compile-command (concat "c:/mingw/bin/g++ -g " "/"" buffer-file-name "/""))
37.
38. ;;设置调试命令
39. (setq gud-gdb-command-name "c:/mingw/bin/gdb --annotate=3")
40.
41. ;;自动扫描函数名
42. (setq imenu-auto-rescan 1)
43.
44. ;; 当光标在行尾上下移动的时候,始终保持在行尾。
45. (setq track-eol t)
46.
47. ;;ido的配置,ido就是在打开文件或者是在转向其它buffer的时候提供非常方便的功能,
48. ;;可以看emacs中提供的文档
49. (ido-mode t)
50.
51. ;;去掉工具栏,去掉工具栏的方法很多,这是最简单的一种
52. (tool-bar-mode nil)
53.
54. ;;去掉菜单栏
55. (menu-bar-mode nil)
56.
57. ;;去掉滚动条
58. (set-scroll-bar-mode nil)
59.
60. ;;让选中的区域高亮显示
61. (setq-default transient-mark-mode t)
62.
63. ;; 行尾自动加上一个新行,怪不得以前使用gcc编译时总是显示行尾没有新行的警告。
64. (setq require-final-newline t)
65.
66. ;;写代码的时候在下面的mode条上显示当前光标在哪个函数中,还有设置当前
67. ;;所在行高亮什么的,都在cc-mode里面,可以看cc-mode的文档
68. (which-function-mode 1)
69.
70. ;;不显示启动信息,看起来舒服点,但好像并不能加快启动速度
71. (setq inhibit-startup-message t)
72.
73. ;;用y和n来代替yes和no。
74. (fset 'yes-or-no-p 'y-or-n-p)
75.
基本编辑:
C-o 插入一个新的换行,光标留在换行符前面。即”open-line”命令的快捷键。一般的回车之后光标是在换行符的后面。
C-x C-o 命令delete-black-lines的快捷键。删除从光标所在行的下一行起的所有连续的空行。
C-x z 重复执行命令。C-x 后面有几个z就重复执行几次。
M-x list-command-history 显示执行过的命令。有点像dos-key。
C-x 1 最大化当前光标所在的窗口。
C-x 2 将当前光标所在的窗口分成上下两个窗口。
C-x 3 将当前光标所在的窗口分成左右两个窗口。
M-x follow-mode 尤其是做翻译工作时非常好用。
查找替换:
C-s 命令isearch-forward的快捷键。向前做incremental search。
C-r 向后做incremental search。
在查找的时候想中断查找可以按回车或者C-g,按回车结束查找则光标停留在当前位置上,按C-g结束查找则光标返回到开始查找的那个位置上。重复按C-s向前查找下一个。
关于emacs的替换命令输入M-x replace再按两次TAB会列出所有的替换命令,包括查询替换和不查询替换的,正则表达式替换和非正则表达式替换的。emacs中的正则表达式语法可以在info文档中找到,做法是打开一份info文档,输入g,然后输入regexp按TAB,会自动列出关于正则表达式的那些结点。
M-x list-matching-lines 另开一个buffer列出当前buffer中所有匹配正则表达式的那些行。
版本控制:
在windows中下载解压rcs后使用前要先定义一个环境变量TZ,表示当前的时区。上次自己点击windows下面那个时间区域,看到是GMT+08:00,于是就这样设置了,可是这样设置以后发现RCS记录的时间和自己的系统时间相差很大。最近在网上看到,这个环境变量的值应该设置为JST-8的。
C-x v i指定对当前的文件使用版本控制。
C-x v v或者是check in或者是check out,这个不用自己操心,只要记住在编辑文件前来一次,保存的时候再来一次,就可以了。当前文件到底是处于lock还是unlock的状态在emacs的mode栏里可以看出来。如果是类似RCS:1.3这样的,表示当前处于lock状态,就是说当前自己编辑的只是一个副本,那个1.3版本是已经被记录在案了,不能修改了,这个时候如果按下C-x v v,则会产生一个1.4版本出来。如果类似RCS-1.3这样的,表示当前处于unlock状态,如果想编辑文件,必须先使用一次C-x v v 来先lock这个文件。
C-x v ~ VERSION查看指定版本号为VERSION的版本。查看时文件是只读的,且有一个后缀,比如查看test.cpp的1.3版本,则输入C-x v ~ 1.3,这个buffer的名字是test.cpp.~1.3~。创建一个旧版本的Branch的时候就不能用这个命令转到旧版本了。
C-x v =将当前缓冲区的内容和该文件的主版本比较。
C-u C-x v = FILE <RET> OLDVERS <RET> NEWVERS将OLDVERSION版本和NEWVERSION版本进行比较。
C-x v g将当前缓冲区中的文件每一行属于哪个版本都高亮显示出来。
C-x v l查看当前文件的版本控制历史。
C-x v u撤消操作。假设你从test.cpp的1.3版本中check out出来一份副本,然后编程,最后感觉不好,但是文件已经存盘了,就可以使用这个命令回到1.3版本时候的样子。使用这条命令后,文件的最新版本还是1.3版本,但是如果使用了C-x v c,那么1.3版本就会被一起拿掉了。
C-x v c见上。
C-u C-x v v这是转到另一个版本的一真正方法。上面的C-x v ~只是查看另一个版本,这个命令是转到那个版本,缓冲区中是没有~VERSION~这样的后缀的。通常用于为一个旧的版本创建子版本。