emacs学习笔记

 

emacs学习笔记

hanlray@gmail.com
Reversion: 0.95 Date:2006/08/12

1. C-h

任何命令都可以忘掉,C-h不能忘,因为通过它你可以找到其他所有的命令,不知道C-h怎么用?C-h C-h 这里第二个C-h是个help option,常用的option还有:

  • a 列出包含给定字符串的所有命令。这里的命令实际上是函数名,因为emacs中的所用功能都是通过函数来实现的,把这些功能(函数)绑定到键盘上,就叫做key binding,这种设计使我们可以很容易地把某项功能绑定到我们喜好的按键上。
  • b 显示所有的key bindings
  • C 显示指定编码的信息,如果不带参数则显示当前和编码有关的设置
  • r info形式的emacs guide,最好的参考资料

2. user option和变量

两者都是perl变量,用来定制emacs环境,区别在于M-x set-variable只能设置user option变量,要设置任何变量,在*scratch*buffer输入(setq variable-name value),用C-j执行;用C-h v VAR则可以查看任何变量的值

3. buffer

  • 查看buffer列表 C-x C-b
  • 切换buffer C-x b
  • 关闭buffer C-x k
  • 保存当前的buffer到它关联的文件 C-x C-s

4. 编码相关

emacs使用language environment来进行编码相关的设置。一个language environment为emcas中编码相关的变量设置默认值,比较重要的设置项有:

  • 优先编码列表 当读入一个文件时,以该列表的顺序来识别文件的编码,用prefer-coding-system在该列表首插入一个编码
  • default-buffer-file-coding-system 新建文件的默认编码

     

    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。

5. registers

emacs用来存放文本、矩形、位置或其他内容的地方,供以后使用。每个register都有一个名字,为一个英文字母。 C-x r s R 保存region的文本到register R C-x r i R 从register R中插入文本

  1. deleting, killing and yanking killing会把删掉的文本放到kill ring中,随后可以用yanking来把它copy到别处,类似win下的copy/paste,deleting则不把删掉的文本放到kill ring中,因此也无法copy删掉的文本。
    • C-k killing从当前光标到行尾的文本,如果是空行则包括其换行符,在行首两次C-k就删掉该行
    • C-w Killing region
    • C-y yanking上次killing的文本

6. undo and redo

用C-x u进行undo,用什么来redo呢?不幸的是,emacs没有redo的命令,它是用undo来实现redo的:任意一个非undo的命令将会打断undo命令的顺序,从那时起,以前的undo命令就成为了普通的改变文本的命令,这样当再使用undo命令时将会undo以前undo命令的改变,于是就redo了

7. region

很多emacs命令操作buffer中任意一段连续的区域,怎么指定这段区域呢?在这个区域的一端设置一个mark,再移动光标到另一端,位于光标和mark之间的内容就是选择的区域。用C-<SPC>来设置mark。

  • Kill region C-w
  • save region到一个register C-x r s
  • 设置整个buffer为region C-x h

8. indentation

在多数mode下,Tab键是被绑定到indent相关的命令上的,要插入tab字符,需要用C-q tab转义一下。

  • 对region中的每一行indent C-M-/
  • <RET>并<TAB> C-j

9. 字体

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

 

10. Move

  • 以word为单位的前移/后移 M-b/M-f
  • 以word为单位的前删/后删 M-Delback/M-d
  • 移到行首/行尾 C-a/C-e
  • 移到页首/页尾 M-a/M-e
  • 移动到buffer首/尾 M-</M->

11. 常用命令

  • 列出某个主题的帮助 C-h a
  • 删除从当前光标到行尾/行首 C-k/C-u
  • Undo/Redo C-x u/
  • 在window间切换 C-x o(other)
  • 翻页 C-v/M-v
  • 退出 C-x C-c
  • 启动emacs时不加载~/.emacs:-q
  • 配合sudo打开文件 C-x C-f /sudo::/etc/emacs/
  • 把一个文件的内容插入到当前位置 C-x i
  • 在当前光标处插入一行 C-o
  • 使光标所在文本滚动到离窗口顶部n行处 C-u n C-l

12. 插件/扩展

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来查看该函数时,这些信息将得到体现。

  1. 如何在buffer中输入回车和换行 C-q C-m 输入回车(/r),这里C-q代表转义,C-m代表ascii的控制字符/r C-q C-j 输入换行(/n),C-j代表ascii的控制字符/n

13. key binding

  (global-set-key [?/C-2] 'set-mark-command)

方括号中的是key sequence,后面的是要绑定到的command。对key sequence中的字符元素,用lisp的字符常量来表示:问号后跟该字符,用/C-表示控制字符;对key sequence中的symbo元素,直接写其名称,如f7

14. lisp

注释 以;;开头的行为注释

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值