emacs diy

浏览: 167 发布日期: 2016-08-31 分类: emacs

要充分享受emacs的乐趣必然是从装插件开始的。

  1. 与ubuntu等一样,先换个国内的源

    (require 'package)
    
    (setq package-archives '(("gnu"   . "http://elpa.zilongshanren.com/gnu/")
                             ("melpa" . "http://elpa.zilongshanren.com/melpa/")))
    
    (package-initialize)
  2. 好的插件
    这里其实因人而异,但是有几个包是所有地方都用的上的。

    • helm:这是一个功能强大的命令提示框架。支持正则,按下空格后进行二次搜索,左右方向键在历史命令与可用命令间切换。。
      比如helm-M-x,功能与原来的M-x一样。但是更加友好方便。如果想开启某项mode又想不起来,如linum-mode:显示行号。先看看有哪些mode,先调用helm-M-x再键入.*-mode。有好多,行号跟line 有关系吧。 再按下SPC li,马上就看到了。完整命令.*-mode li

    • helm-ag:使用helm扩展的ag命令。需要先安装ag。这个命令可以查询目录中所有文件的内容。同样支持正则,收益于helm,可以很方便的跳转与二次搜索。

    • 我的配置文件基本上是使用这个的:https://github.com/tuhdo/emac...

  3. 解决冲突。
    装上一大堆插件后,不可避免地遇到了按键冲突。

  • global-set-key: (global-set-key KEY COMMAND),例:(global-set-key (kbd "C-c k") 'helm-ag )

  • local-set-key:用法一样但是将按键绑定到local-map上。

  • define-key(define-key KEYMAP KEY DEF)将快捷键绑定到keymap中。
    KEYMAP是一个存储按键信息的特殊结构,使用make-sparse-keymap构造一个空的keymap,而make-keymap构造一个所有按键为空的keymap。
    KEY 绑定的按键:(kbd "")|[remap COMMAND]|[t]:随机分配一个
    DEF 的类型:
    nil (means key is undefined in this keymap),
    a command | symbol(a Lisp function suitable for interactive calling),
    a string (treated as a keyboard macro),
    a keymap (to define a prefix key),

    如果自定义了keymap,还需要配合mode (define-minor-mode )中填写:keymap参数来使得keymap生效。

返回顶部