Emacs学习心得之 基础配置
Emacs学习心得之 基础配置
1.前言
2.基础配置
一、前言
本篇博文记录了Emacs的一些基础配置,
其中,具体配置基于博客:
http://www.tuicool.com/articles/uaUNBzN (Emacs 配置文件新手攻略(2014))
并参考了以下文章:
http://blog.csdn.net/blueboy82006/article/details/5309280 (在emacs中显示行号)
http://www.cnblogs.com/liyongmou/archive/2013/04/26/3044155.html#sec-1-1 (emacs自动补全插件auto-complet和yasnippet,安装、配置和扩展)
https://github.com/joaotavora/yasnippet (yasnippet in Github)
https://www.douban.com/group/topic/9403585/ (大家如何在emacs里面执行命令行?)
二、基础配置
使用目录(~/.emacs.d/ ) 对Emacs进行简单配置,完成了如下配置:
1. 自动补完( auto-complete 和yasnippet )
2. 显示行数
配置放在 这里 ,目录结构如下
~/.emacs.d/
README.md #请无视该文件
init.el #Emacs会自动从init.el开始执行
lisp/ #就是加载各个插件的初始化文件的位置啦
init-xxx.el #某初始化文件
具体配置如下:
init.el
init.el 主要就是下面几句:
(add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory)) (require 'init-utils)
(require 'init-elpa)
(require 'init-yasnippet)
(require 'init-auto-complete) //显示行数
(global-linum-mode t) (provide 'init)
init-utils.el
来自 Purcell ,目的是把一些相互依赖的feature的加载顺序理顺,例如feature A依赖于feature B,则可以写成 (after-load 'B 'A) ,这样如果错误地在B之前require了A也不会影响正常启动。
;;after-load
;;例如feature A依赖于feature B,则可以写成 (after-load 'B 'A) (defmacro after-load (feature &rest body)
"After FEATURE is loaded, evaluate BODY."
(declare (indent defun))
`(eval-after-load ,feature
'(progn ,@body))) (provide 'init-utils)
init-elpa.el
也是来自 Purcell 那里截取过来的,但是去掉了很多用不上的函数。
该文件初始化Emacs的包管理系统 ELPA ,
(require 'package) ;; 增加软件包仓库
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
(when (< emacs-major-version )
(add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/")))
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(add-to-list 'package-archives '("melpa-stable" . "http://melpa-stable.milkbox.net/packages/")) ;; 定义require-package函数
(defun require-package (package &optional min-version no-refresh)
"Install given PACKAGE, optionally requiring MIN-VERSION.
If NO-REFRESH is non-nil, the available package lists will not be
re-downloaded in order to locate PACKAGE."
(if (package-installed-p package min-version)
t
(if (or (assoc package package-archive-contents) no-refresh)
(package-install package)
(progn
(package-refresh-contents)
(require-package package min-version t))))) (package-initialize)
(provide 'init-elpa)
有了ELPA,给Emacs装插件就变的非常容易了。比方说你需要一个叫 example 的插件,那么可以在 lisp/ 目录下增加一个文件 init-example.el :
;; init-example.el
(require-package 'example)
(require 'example-autoloads)
(provide 'init-example)
然后在 init.el 中加入一句 (require 'init-example) (注意这一句要放在 (require 'init-elpa) 之后)即可。
init-auto-complete.el 和 init-yasnippet.el
init-auto-complete.el 和 init-yasnippet.el 一起用于配置自动补完, 分别如下配置:
init-auto-complete.el:
(require-package 'auto-complete)
(require 'auto-complete-config) (global-auto-complete-mode t)
;; 把自定义的dict加到auto-complete的字典中去
(add-to-list 'ac-dictionary-directories
(expand-file-name "lisp/custom-dicts" user-emacs-directory))
;; 按下TAB时首先缩进所在行,然后尝试补全
(setq tab-always-indent 'complete)
;; 阻止自动触发补全动作
(setq-default ac-expand-on-auto-complete nil)
(setq-default ac-auto-start nil)
;; 用TAB作为手动触发补全动作的快捷键
(ac-set-trigger-key "TAB")
;; 使用after-load来确保ac-source-yasnippet已经完成加载
(after-load 'init-yasnippet
(set-default 'ac-sources
'(ac-source-dictionary
ac-source-words-in-buffer
ac-source-words-in-same-mode-buffers
ac-source-words-in-all-buffer
ac-source-functions
ac-source-yasnippet)))
(require 'init-ac-source) (provide 'init-auto-complete)
init-yasnippet.el:
(require-package 'yasnippet)
(require 'yasnippet)
;; 使用Ctrl-c k作为唯一的触发快捷键
(define-key yas-minor-mode-map (kbd "<tab>") nil)
(define-key yas-minor-mode-map (kbd "TAB") nil)
(define-key yas-minor-mode-map (kbd "C-c k") 'yas-expand) (yas-global-mode t) (provide 'init-yasnippet)
Emacs学习心得之 基础配置的更多相关文章
- Emacs学习心得之 基础操作
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Emacs学习心得之 基础操作 1.前言与学习计划2.Emacs基础操作 一. 前言与学习计 ...
- GitHub学习心得之 安装配置与多帐号管理
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 GitHub学习心得之 安装配置与多帐号管理 1.前言2.GitHub Linux安装(ub ...
- Emacs学习心得之 LaTeX编辑
目录 1. 前言 2. texlive的安装 3. AUCTEX的安装和配置 4. RefTEX的安装和配置 一.前言 本篇博文记录了Emacs下LaTeX编辑环境的搭建,参考一下文章: http:/ ...
- Java开发学习(三)----Bean基础配置及其作用范围
一.bean基础配置 对于bean的基础配置如下 <bean id="" class=""/> 其中,bean标签的功能.使用方式以及id和clas ...
- GitHub学习心得之 简单操作
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 前言 本文对Github的基本操作进行了总结, 主要基于以下文章: http://gitre ...
- Hibernate学习笔记2.1(Hibernate基础配置)
Hibernate基础配置 1.<property name="hbm2ddl.auto">update</property> 在SessionFactor ...
- Linux基础入门---学习心得
之前一直以为Linux和Windows差不多,但是学习了Linux基础入门之后才发现两种操作系统之间差距非常大. Linux只是在硬件之上的内核和系统调用,就连我们在Windows里习以为常的图形界面 ...
- hibernate学习笔记(1)基础配置与jar包
下载hibernate基础jar包,并解压hibernate-core-4.2.4.final 在myeclipse中添加hibernate的dtd支持: location为D:\学习\imooc-h ...
- Linux系统学习 十六、VSFTP服务—本地用户访问—基本用户基础配置
缺点,ftp密码是和系统密码是一致的,并不安全 先设置两个测试用户 test1 123123 test2 123123 基本用户基础配置 1.本地用户基本配置 local_enab ...
随机推荐
- 微信支付v3发布到iis时的证书问题
一开始报“出现了内部错误” 解决方法是 方法一 var cer = new X509Certificate(certpath, password,X509KeyStorageFlags.Machine ...
- Windows GUI代码与Windows消息问题调试利器
Windows GUI代码与Windows消息问题调试利器 记得很久前有这么一种说法: 人类区别于动物的标准就是工具的使用.同样在软件开发这个行业里面,对于工具的使用也是高手和入门级选手的主要区别,高 ...
- js文件合并,压缩,缓存,延迟加载
做web前段也有一段时间了,对于web中js文件的加载有些体会想跟大家一起分享一下. 1.首先说说js文件的合并和压缩吧 为了便于集中式管理js的合并和压缩我们创建一个Js.ashx文件来专门处理合并 ...
- linux service命令解析
我们平时都会用service xxx start来启动某个进程,那么它背后究竟执行了什么? 其实service的绝对路径为/sbin/service ,打开这个文件cat /sbin/servic ...
- Json.Net
下载地址:Json.NET 文档地址:Json.NET Documentation 基本的序列化与反序列化 public class Product { public string Name { ge ...
- .Net(C#)最简单的邮件发送案例
一.序言 刚开始接触邮件发送功能的时候,在网上找的资料都挺复杂的!对于新手入门有点难(至少对于本人来说,第一次接触的时候确实不容易).这里就写一段简单的邮箱发送代码,备忘,也给新手一个参考(相关类的字 ...
- Ajax学习笔记1之第一个Ajax应用程序
代码 <head> <title>An Ajax demo</title> <script src="../js/jquery-1.4.1.js&q ...
- ASP.NET访问Excel 失败的解决方法(错误号:80070005,8000401a)
用asp.net把值写入Excel在本地测试通过,然后提交服务器后老是写入不成功 并提示错误: Retrieving the COM class factory for component with ...
- webapi+entityframework分享
1. webapi允许跨域的增删改查要在web.config中加入以下文字 <system.webServer> <validation validateIntegratedMode ...
- SSH实例(7)
运行结果. 浏览课程: 添加课程: 还有删除课程,这里就不演示了.