Chinaunix首页 | 论坛 | 博客
  • 博客访问: 661732
  • 博文数量: 156
  • 博客积分: 4833
  • 博客等级: 上校
  • 技术积分: 1554
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-21 19:36
文章分类

全部博文(156)

文章存档

2016年(2)

2013年(1)

2012年(13)

2011年(30)

2010年(46)

2009年(29)

2008年(23)

2007年(12)

分类: LINUX

2008-04-05 04:43:36

Emacs中文FAQ

键绑定

  1. 记住在所有要绑定到快捷键的函数上面加上(interactive)关键字,否则,会发生(wrong-type-argument commandp my-command)的错误
    对于要绑定到鼠标的函数,要在函数声明中指定参数(event),在修饰段,加入(interactive "e"),然后才能绑定
  2. 对于要传递参数的函数,可以用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
  3. (read-event)可以得到emacs的键码的内部表示
  4. 如果你觉得每次为了关闭一个buffer都要按C-x k很麻烦,那么你可以这样绑定:
    (global-set-key (kbd "") (lambda () (interactive) (kill-buffer (current-buffer))))
    
  5. 在emacs中可以用buffer-menu调出bufferlist窗口,建议绑定到Menu key上,并且将point转到buffer List上面。很方便的,与之相比,C-x C-b则显得有点慢。建议用buffer-menu
  6. 在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-\      #在当前区域的行尾加入"\"
    

光标移动

  1. 如何在匹配的括号之间移动光标
    `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').
    
  2. emacs用M-.可以跳到tag定一处,要回来可以用M-即可

参数设置

  1. Emacs 变量可在命令行中设置(如果您知道它们的名字和适当的值),设置方法是输入 M-x set-variable,然后在提示符后输入变量名和它的新值。

模式相关

cc-mode

  1. 在emacs中要想打开诸如:#include之类的文件,必须保证ffap-c-path包含stdio.h的路径
  2. emacs可以实现程序变量得自动对齐功能。要达到这样的效果
    int main() {
        int          aa;
        unsigned int bb;
        double       cc;
    }
    
    选择区域,让后M-x align即可
  3. 如何使""成为语法的单词的一部分. (add-hook 'c-mode-hook (lambda () (modify-syntax-entry ? "w" c-mode-syntax-table))) (setq c++-mode-hook c-mode-hook)

emacs-lisp-mode

  1. 再emacs中编译整个目录下的.el文件输入 [Alt]-x 。 当提示输入命令时,输入 byte-force-recompile [Enter] 。
  2. 如何再emacs下编译整个目录下的*.el文件两个办法,一是在dired里面用m标记,然后用B编译还有就是用emacs的批处理:
     
    emacs -batch -f batch-byte-compile *.el 
    

hs-minor-mode

  1. 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

  1. 寻找下一个对应的tag匹配,menu-bar-next-tag,也可以用C-u M-.
  2. 递归建立TAGS文件
    find ./ -name "*.[hc]" -type f -exec etags -a {} \;
    

文本编辑

  1. 每行显示30个汉字 (setq fill-column 60)放到.emacs M-x auto-fill-mode
  2. narrow 功能.用于隐藏文本,在进行string replace时十分有用选中要保留的文本, 然后C-x n n 或M-x narrow-to-region 要展开文本: C-x n w 或 M-x widen
  3. emacs的自动排版用M-q
  4. 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
    
  5. emacs下的su 可以用C-x C-f安下列方式实现su文件编辑
    /su::/etc/foobar.conf
    
  6. 用空格代替tab (setq-default indent-tabs-mode nil)
    M-x untabify
  7. 指定文件的编码方式:C-x RET f

常用命令

  1. 下一个错误 [C-x `]
  2. 列出 Emacs 自动识别的所有主要模式的方法是输入 M-x describe-variable,按 Enter,然后在小缓冲区的提示符后输入 auto-mode-alist。一些我常用的模式包括文本、c 和 SGML,有时还用 LISP。
  3. redo C-g C-/
  4. 左右滚屏 C-x < C-x >
  5. emacs执行shell命令,可以用 M-!来执行一个shell命令也可以用C-u M-!将一个命令的结果插入当前的光标处.
  6. 用shell-command-on-region命令在选择的区域上面执行shell命令,快捷键是M-¦
  7. 列出emacs所有可用的颜色
    M-x list-colors-display
    
  8. 更改正在编写的文件的编码 C-x RET f 编码名 RET
    设置emacs打开文件的默认编码
    set-buffer-file-coding-system
    
    如果你想用另一种不同的编码打开文件:
    revert-buffer-with-coding-system
    
  9. 如何在终端启动emacs.
    emacs -nw
    
    如果你不想每次都这样麻烦,可以在bash里面设置alias.如在你的HOME目录下的.bashrc文件中加入下面一行
    alias emacs='emacs -nw'
    
  10. 修改tages文件: M-x visit-tags-table

查找与替换

  1. emacs中要对换行进行匹配的查找和替换的话,请用C-q C-j来代替.既不是,也不是\n,这一点千万注意.
  2. 去掉一个文件中所有的空行
    M-x query-replace-regexp ^^q [ret] [ret]
    
    [note] ^^q的输入方式是 shift-6 C-q C-j
  3. 如何搜索cursor所在处的单词? C-s C-w
  4. 正则表达式搜索 C-A-r
  5. 切换查找时是否区分大小写 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 
    ...
    #include 
    C-u 0 C-x a g includec RET
    now create a new buffer and type
    includec RET
    info/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 主题),请参见行话文件。
阅读(1823) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~