Emacs中文FAQ

    技术2022-05-11  69

    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 主题),请参见行话文件。  

    最新回复(0)