Emacs

1. emacs 配置整理

2015-06-12  本文已影响1317人  文卿

配置使用emacs也有一段时间了,随着插件的增加和对emacs的更深入理解,有必要对现在的配置做一个更新了。

先说说问题:

  1. 目前插件与依赖关系很混乱,都集中在.emacs这个文件中,需要整理

  2. 目前对于跨平台的支持不是很好,只有最大化函数,以及工作目录设置做了跨平台

  3. 目前对于插件的整理不是很好,插件有放在elpa中的,也有放在plugin中的

  4. 一些插件配置了,但是未生效或者与其他插件的快捷键冲突。如:hlem, smex等等。

整理准则

具体解释下:

  1. 什么是依赖单一化,即一个插件需要有一个插件的init_xxx.el文件,里面用于做该插件的相关配置。

  2. 什么是插件集中化,这个首先针对的是emacs24以上的版本。通过package包管理器对插件进行管理,分为三大类插件:功能性插件(如:主题显示,hlem,smex),UI类插件(如:主题包,tabbar-mode),模式类插件(如:php-mode, web-mode)。

  3. 去平台化,顾名思义,可以在mac,linux, windows下运行。 因为package中安装的包绝大多数都是支持各个平台的,所以唯一需要做区分的,就是自己用emacs lisp实现的一些代码,以及对工作环境的私人定制等等。

Ok, 废话说了不少了,直接上步骤。

安装

关于这个不在赘述,各位看官可以看上一篇博文或者自行google。
此处唯一需要注意的点,就是.emacs, .emacs.d 文件与目录所在的路径,以及~所代表的路径是什么。(恩,主要是针对windows)。

引用规则设定

首先,在.emacs中,引入一行代码:


至此,关于.emacs的文件更改就已经结束,剩下的就需要在init.el文件中完成。

在init.el中,只load所需模块或者插件的init-xxx.el文件,不做任何配置或者设置,配置与设置,均在init-xxx.el文件中处理。

包管理器

emacs的特色就是丰富的插件,而emacs24版本之前,需要依赖第三方插件和el-get来下载各种插件,或者自己下载插件的源码进行编译,安装或者直接配置。而emacs24集成了包管理器,只需要M-x package-install,然后输入所需的包名即可。(那个谁,说sublime有包管理器而emacs没有的,速速去领50大板。题外话,sublime的package manager还需要先进行安装,而非集成。)

当然,因为地域以及天朝原因,一些资源包的获取不是非常方便,所以此处我们需要配置下包管理器的下载源。代码如下:


init-package.el

基本配置

最初的emacs带有菜单栏,滚动条,以及工具栏等等,而且一打开的时候也不是最大化,和以前的习惯还是有较大出入的,怎么办呢?莫慌,基本配置修改下即可:

;;不显示工具栏
(tool-bar-mode 0)

;;不现实菜单栏
(menu-bar-mode 0)

;;不显示滚动条
(scroll-bar-mode 0)

;;显示行号与列号
(global-linum-mode 1)
(column-number-mode 1)

;;关闭启动动画
(setq inhibit-startup-message 1)

;;设置初始工作目录
(if (string-equal system-type "windows-nt")
    (setq default-directory "G:\\projects")
  (setq default-directory "~/work"))

;;设置问答提示为 y-or-n,而不是yes-or-no
(fset 'yes-or-no-p 'y-or-n-p)

;;不生成备份文件,即 xxx.xx~ 类文件
(setq make-backup-files nil)

插件

ido 插件用于在mini buffer中显示最近使用的命令或者文件,与smex, hlem的功能类似,不过打开文件时,个人比较习惯 ido。
emacs内置ido,要开启这个模式,只需要:

(ido-mode 1)

另外,他需要python支持,wakatime官方提供了wakatime-cli的程序,用于向wakatime推送数据,使用python的 pip install完成安装,并在emacs中设置好路径即可。

;;加载wakatime mode
(load "~/.emacs.d/elpa/mode/wakatime-mode.el")

;;设定wakatime api key
(custom-set-variables
 '(wakatime-api-key "api key")
 '(wakatime-cli-path "wakatime-cli 的路径"))

;;全局开启wakatime-mode
(global-wakatime-mode 1)

mode

所谓的mode,就是根据文件类型做出不同类型的提示,比如打开.cpp文件,就会自动匹配为c++ mode,然后所有在c++ mode中的操作均为生效,而不影响其他mode,非常赞的一个功能,也是我喜欢emacs的原因之一。

目前配置的mode比较少,大概有如下几种 cmake-mode, markdown-mode, php-mode

上一篇下一篇

猜你喜欢

热点阅读