任何命令都可以忘掉,C-h不能忘,因为通过它你可以找到其他所有的命令,不知道C-h怎么用?C-h C-h 这里第二个C-h是个help option,常用的option还有:
两者都是perl变量,用来定制emacs环境,区别在于M-x set-variable只能设置user option变量,要设置任何变量,在*scratch*buffer输入(setq variable-name value),用C-j执行;用C-h v VAR则可以查看任何变量的值
emacs使用language environment来进行编码相关的设置。一个language environment为emcas中编码相关的变量设置默认值,比较重要的设置项有:
C-h L来查看当前或其他language environment的信息,使用M-x set-lanaguage-environment来修改。 如果没有指定language enviroment,emacs将会根据locale中设置的编码来选择一个language environment,比如在我的en_US.UTF-8下,language environment设置的是UTF-8。不过这里似乎有个问题,按理说这时相关的编码变量应该也被设置为UTF-8 language environment设置的默认值,不过在我的环境下这些变量的值似乎和UTF-8 language environment无关,于是不得不在.emacs下明确设置一下:
(if (equal current-language-environment "UTF-8") (prefer-coding-system 'gb2312) (prefer-coding-system 'Utf-8) ) ) ) (add-hook 'set-language-environment-hook 'utf8gbk) (set-lanaguage-environment 'UTF-8)在UTF-8这个language environment下,emacs并不能自动识别gbk编码的文件,因为其缺省设置的优先编码列表没有gbk,上面的lisp对UTF-8 language environment做了定制,之所以又加了一次utf-8编码是因为希望在UTF-8这个language environment下首选的编码是utf-8。
emacs用来存放文本、矩形、位置或其他内容的地方,供以后使用。每个register都有一个名字,为一个英文字母。 C-x r s R 保存region的文本到register R C-x r i R 从register R中插入文本
用C-x u进行undo,用什么来redo呢?不幸的是,emacs没有redo的命令,它是用undo来实现redo的:任意一个非undo的命令将会打断undo命令的顺序,从那时起,以前的undo命令就成为了普通的改变文本的命令,这样当再使用undo命令时将会undo以前undo命令的改变,于是就redo了
很多emacs命令操作buffer中任意一段连续的区域,怎么指定这段区域呢?在这个区域的一端设置一个mark,再移动光标到另一端,位于光标和mark之间的内容就是选择的区域。用C-<SPC>来设置mark。
在多数mode下,Tab键是被绑定到indent相关的命令上的,要插入tab字符,需要用C-q tab转义一下。
emacs是针对charset来配置字体的,对要显示的coding system中的字符,emacs把它们归到这些charset中,然后使用在这些charset上指定的字体来显示它们。这样的一个字体配置在emacs里叫做fontset,如:
Emacs.Fontset-0:-*-courier-medium-r-normal-*-18-*-*-*-*-*-fontset-courier,/ chinese-gb2312:-*-simsun-medium-r-*-*-18-*-*-*-p-*-iso10646-1,/ chinese-cns11643-5:-*-simsun-medium-r-*-*-18-*-*-*-p-*-iso10646-1,/ chinese-cns11643-6:-*-simsun-medium-r-*-*-18-*-*-*-p-*-iso10646-1,/ chinese-cns11643-7:-*-simsun-medium-r-*-*-18-*-*-*-p-*-iso10646-1,/ Emacs.font:fontset-courier
emacs是用lisp扩展的,M-x load-file用来执行任意一段lisp脚本,M-x load-library则从变量load-path定义的一个目录列表中寻找指定的文件并执行它,autoload函数把一个函数和一个lisp脚本相关联,当执行这个函数时,加载对应的脚本文件并执行,如: (autoload 'javascript-mode "javascript" nil t) 当执行javascript-mode函数时,load-library javacript,nil是该函数的描述,t表示该函数是interactive的,当以后用C-h f来查看该函数时,这些信息将得到体现。
(global-set-key [?/C-2] 'set-mark-command)
方括号中的是key sequence,后面的是要绑定到的command。对key sequence中的字符元素,用lisp的字符常量来表示:问号后跟该字符,用/C-表示控制字符;对key sequence中的symbo元素,直接写其名称,如f7
注释 以;;开头的行为注释