Emacs中文FAQ
键绑定
常用的键绑定
光标移动
参数设置
模式相关
cc-mode
emacs-lisp-mode
hs-minor-mode
矩形模式
text-mode
flyspell-mode
auto-fill-mode
misc
文本编辑
常用命令
查找与替换
some tips about emacs
参考资料
键绑定
记住在所有要绑定到快捷键的函数上面加上(interactive)关键字,否则,会发生(wrong-type-argument commandp my-command)的错误 对于要绑定到鼠标的函数,要在函数声明中指定参数(event),在修饰段,加入(interactive "e"),然后才能绑定 对于要传递参数的函数,可以用lambda匿名函数来实现 (global-set-key [(prior)] '(
lambda ()
"Previous" (interactive) (scroll-down 1))) 或则 (global-set-key [(prior)] (function (
lambda ()
"Previous" (interactive) (scroll-down 1)))) 记住对于 global-set-key函数需要的第二个参数是一个symble或者是list (read-event)可以得到emacs的键码的内部表示 如果你觉得每次为了关闭一个buffer都要按C-x k很麻烦,那么你可以这样绑定: (global-set-key (kbd "<M-f4>") (lambda () (interactive) (kill-buffer (current-buffer)))) 在emacs中可以用buffer-menu调出bufferlist窗口,建议绑定到Menu key上,并且将point转到buffer List上面。很方便的,与之相比,C-x C-b则显得有点慢。建议用buffer-menu 在emacs中交互的绑定键 M-x global-set-key
常用的键绑定
打开文件 C-x i #插入一个文件的内容C-x r #以只读的方式打开一个文件 查找和替换 M-% #确认替换 其他 C-x ESC ESC #调出上一条复杂命令C-x C-q #清除一个窗口的只读属性M-/ #自动补齐M-; #注释C-c C-e #扩展宏C-c C-/ #在当前区域的行尾加入"/"
光标移动
如何在匹配的括号之间移动光标 `C-M-n' Move forward over a parenthetical group (`forward-list'). `C-M-p' Move backward over a parenthetical group(`backward-list'). `C-M-u' Move up in parenthesis structure (`backward-up-list'). `C-M-d' Move down in parenthesis structure (`down-list'). emacs用M-.可以跳到tag定一处,要回来可以用M-即可
参数设置
Emacs 变量可在命令行中设置(如果您知道它们的名字和适当的值),设置方法是输入 M-x set-variable,然后在提示符后输入变量名和它的新值。
模式相关
cc-mode
在emacs中要想打开诸如:#include
之类的文件,必须保证ffap-c-path包含stdio.h的路径
emacs可以实现程序变量得自动对齐功能。要达到这样的效果 int main() { int aa; unsigned int bb; double cc;} 选择区域,让后M-x align即可 如何使"
"成为语法的单词的一部分. (add-hook 'c-mode-hook (lambda () (modify-syntax-entry ? "w" c-mode-syntax-table))) (setq c++-mode-hook c-mode-hook)
emacs-lisp-mode
再emacs中编译整个目录下的.el文件 输入 [Alt]-x 。 当提示输入命令时,输入 byte-force-recompile [Enter] 。 如何再emacs下编译整个目录下的*.el文件 两个办法,一是在dired里面用m标记,然后用B编译 还有就是用emacs的批处理: emacs -batch -f batch-byte-compile *.el
hs-minor-mode
hs-minor-mode 就可以用C-c @ C-c 进行代码隐藏了
矩形模式
Keystrokes Command name Action C-x r k kill-rectangle Delete a rectangle and store it. C-x r d delete-rectangle Delete a rectangle and do not store it. C-x r y yank-rectangle Insert the last rectangle killed C-x r c clear-rectangle Using spaces, blank out the area marked as a rectangle and do not store it. C-x r o open-rectangle Insert a blank rectangle in the area marked. C-x r r r copy-rectangle-to-register Copy rectangle to register r (where r is any character) . C-x r i r insert-register Insert rectangle from register r (where r is any character). none) delete-whitespace-rectangle If a rectangle includes initial whitespace, deletes it, narrowing rectangle. C-x r t string Enter string-rectangle Change contents of marked rectangle to string (if string is narrower or wider than rectangle, dimensions change accordingly). (none) string-insert-rectangle Prompts for string and inserts rectangle.
text-mode
居中 M-s
flyspell-mode
启动flyspell-mode可以在输入的同时完成拼写检查. M-$提示如何修正
auto-fill-mode
用于实现单词的自动折行
misc
寻找下一个对应的tag匹配,menu-bar-next-tag,也可以用C-u M-. 递归建立TAGS文件 find ./ -name "*.[hc]" -type f -exec etags -a {} /;
文本编辑
每行显示30个汉字 (setq fill-column 60)放到.emacs M-x auto-fill-mode narrow 功能.用于隐藏文本,在进行string replace时十分有用 选中要保留的文本, 然后C-x n n 或M-x narrow-to-region 要展开文本: C-x n w 或 M-x widen emacs的自动排版用M-q window下面用emacs远程编辑文件,可以用 ftp方式: C-x C-f RET /ftp:user@host:/path/test.txt ssh方式: 下载plink.exe,将其路径加入PATH变量 C-x C-f RET /ftp:user@host:/path/test.txt emacs下的su 可以用C-x C-f安下列方式实现su文件编辑 /su::/etc/foobar.conf 用空格代替tab (setq-default indent-tabs-mode nil) M-x untabify 指定文件的编码方式:C-x RET f
常用命令
下一个错误 [C-x `] 列出 Emacs 自动识别的所有主要模式的方法是输入 M-x describe-variable,按 Enter,然后在小缓冲区的提示符后输入 auto-mode-alist。一些我常用的模式包括文本、c 和 SGML,有时还用 LISP。 redo C-g C-/ 左右滚屏 C-x < C-x > emacs执行shell命令,可以用 M-!来执行一个shell命令 也可以用C-u M-!将一个命令的结果插入当前的光标处. 用shell-command-on-region命令在选择的区域上面执行shell命令,快捷键是M-¦ 列出emacs所有可用的颜色 M-x list-colors-display 更改正在编写的文件的编码 C-x RET f 编码名 RET 设置emacs打开文件的默认编码 set-buffer-file-coding-system 如果你想用另一种不同的编码打开文件: revert-buffer-with-coding-system 如何在终端启动emacs. emacs -nw 如果你不想每次都这样麻烦,可以在bash里面设置alias.如在你的HOME目录下的.bashrc文件中加入下面一行 alias emacs='emacs -nw' 修改tages文件: M-x visit-tags-table
查找与替换
emacs中要对换行进行匹配的查找和替换的话,请用C-q C-j来代替.既不是,也不是/n,这一点千万注意. 去掉一个文件中所有的空行 M-x query-replace-regexp ^^q [ret] [ret] [note] ^^q的输入方式是 shift-6 C-q C-j 如何搜索cursor所在处的单词? C-s C-w 正则表达式搜索 C-A-r 切换查找时是否区分大小写 M-c (也就是在C-s M-c).
some tips about emacs
windows下面远程编辑文件可以下载plink.exe, 放入path路径即可 C-x C-f RET /plink:reality@10.0.0.99:/home/reality/test.txt 捕捉程序的输出可以用 C-u M-! ls 如何让dired不显示隐藏文件 (setq dired-omit-files "^//.") 如何在dos和unix文件类型之间转化 C-x RET f unix #转化成Unix文件格式C-x RET f dos #转化成dos文件格式 abbrevs C-SPC#include <stdio.h>...#include <stdlib.h>C-u 0 C-x a g includec RETnow create a new buffer and typeincludec RETinfo/emacs/abbrevs for detail
参考资料
以下是使您更快掌握 Emacs 的一些参考资料:
Linux 文档计划(Linux Documentation Project)中的 The Emacs Beginner HOWTO 是不错的入门读物。 The GNU Emacs Manual 是该编辑器的最终参考资料,链接来自 GNU Emacs 主页。 如果您更喜欢 XEmacs,那么您需要访问 XEmacs 主页。 在 IBM 的 developerWorks 站点,您可以找到各种参考资料,用于扩展您对 Emacs 的使用,例如 Using Regular Expressions。 还有,在 Emacs 的讨论中如果不讲它在 Linux 文本编辑器范围中的死对头,那么这种讨论是不完全的。请查看 vi intro - the cheat sheet method,自己看看它到底怎样。 Emacs 的终级的首选的参考资料是永远流行的 Learning GNU Emacs 和 GNU Emacs Pocket Reference,均来自 O'Reilly。请在您喜欢的在线或传统书商那挑选它们。 Emacs 的授权协议是自由软件基金的 GNU GPL。 如果您想获得更多关于 Emacs 的历史(和许许多多其它 UNIX 主题),请参见行话文件。