emacs安装及配置
目录
平台
- 操作系统:win10 64位
- emacs版本:emacs 26.1 64位
安装
- 官网
http://www.gnu.org/software/emacs/ - 国内镜像
http://mirrors.nju.edu.cn/gnu/emacs/windows - 安装包
emacs-26.1-x86_64.zip - 安装
解压并重命名 emacs-26.1-x86_64.zip 到所需安装位置。
如"D:\emacs-26.1",后面均以此为例。 - 配置HOME目录
在注册表中添加"计算机\HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs"项
为Emacs项添加字符串值
名称 数据 HOME D:\emacs-26.1 增加环境变量D:\emacs-26.1
基本配置
配置文件结构
- 参考purcell的配置。
- 结构图
- 结构详解
- lisp/
插件配置文件目录,配置文件命名格式为init-xxx.el - site-lisp/
放置无法从elpa或其它仓库获取的第三方插件,本目录及其子目录须在启动时添加到load-path - init.el
初始化load-path,初始化elpa,加载各插件配置文件等
- lisp/
- 我的配置
https://files.cnblogs.com/files/eat-and-die/emacs配置文件.7z
elpa仓库管理
- 仓库源
- 配置文件init-elpa.el
添加仓库
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)
初始化package
(package-initialize)
主题配色
- solarized-theme
配置文件init-mytheme.el
(add-to-list 'custom-theme-load-path "your path")
(load-theme 'solarized t)
- molokai
配置文件init-mytheme
(setq molokai-theme-kit t)
(add-to-list 'custom-theme-load-path "your path")
(load-theme 'molokai t)
字体显示配置(解决中文卡顿)
dejavu-fonts
https://dejavu-fonts.github.io/Download.html编码设置
(set-language-environment 'UTF-8)
(set-locale-environment "UTF-8")
(set-default-coding-systems 'utf-8)
中英文等宽设置
(defun set-font (english chinese english-size chinese-size)
(set-face-attribute 'default nil :font
(format "%s:pixelsize=%d" english english-size))
(dolist (charset '(kana han symbol cjk-misc bopomofo))
(set-fontset-font (frame-parameter nil 'font) charset
(font-spec :family chinese :size chinese-size)))) (set-font "Dejavu Sans Mono" "WenQuanYi Zen Hei Mono" 14 14)
插件配置
以下所有插件均可使用以下命令安装:
M-x package-install RET xxx RET
markdown
简介
markdown-mode支持emacs markdown编辑,效果预览需要pandoc工具支持。
插件markdown-toc用于自动生成目录。
markdown-mode
下载地址
- Markdown-mode
https://github.com/jrblevin/markdown-mode - pandoc
https://github.com/jgm/pandoc/releases
- Markdown-mode
配置
(autoload 'markdown-mode "markdown-mode"
"Major mode for editing Markdown files" t)
(add-to-list 'auto-mode-alist '("\\.text\\'" . markdown-mode))
(add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode))
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode)) (autoload 'gfm-mode "markdown-mode"
"Major mode for editing GitHub Flavored Markdown files" t)
(add-to-list 'auto-mode-alist '("README\\.md\\'" . gfm-mode)) ;; 需安装pandoc
(setq markdown-command "D:/Program/Pandoc/pandoc.exe")
快捷指令
指令 功能 C-c C-s b 加粗 C-c C-s i 倾斜 C-c C-s c(C) code C-c C-s 1~6(或 h) 标题 C-c C-s f 脚注 C-c C-l 插入链接 C-c C-i 插入图片 C-c C-s C-h 查询帮助 C-c C-s t 插入表格 指令(with pandoc) 功能 C-c C-c m 显示对应html代码 C-c C-c p preview C-c C-c e export C-c C-c v export & preview C-c C-c o open C-c C-c C-h help
markdown-toc
配置
暂时无需配置问题
- 标题不能以数字开头(包括中文“〇”)命名。
否则,生成的目录链接无法跳转 - 标题必须从h1-h6按序开始,不能直接从其它级别开始。
否则,无法正确生成目录树
- 标题不能以数字开头(包括中文“〇”)命名。
快捷指令
M-x markdown-toc-generate-toc ;; 生成目录树
M-x markdown-toc-refresh-toc ;; 更新目录树
M-x markdown-toc-delete-toc ;; 删除目录树
org导出md
org-mode支持markdown格式导出,而且不需要pandoc和markdown-toc。
从操作性上来说org-mode要好一些,功能更加强大,所以我要弃markdown了。配置方法
(eval-after-load "org" '(require 'ox-md nil t))
导出md方法
C-c C-e m
notepad++预览md
- notepad++ v7.6.1可支持markdown预览
- 插件->Plugins Admin…->MarkdownViewer++
evil
简介
模拟vi操作体验的emacs插件,写代码更爽。
evil
配置
(require 'evil)
(evil-mode 1)
快捷方式
指令 功能 C-z emacs模式和evil模式间切换 问题
- 在NORMAL和INSERT模式之间切换时,输入法不会自动切换。
一个可能的解决方案: https://emacs-china.org/t/topic/3152 但我不喜。
所以,暂时不用,什么时候官方支持什么时候用。
- 在NORMAL和INSERT模式之间切换时,输入法不会自动切换。
atuo-complete
简介
自动补全工具配置
(require 'auto-complete)
(require 'auto-complete-config) (global-auto-complete-mode t) ;; 文本模式下启动补全功能
(add-to-list 'ac-modes 'text-mode) (ac-config-default) (setq ac-auto-start 4) ;; pos-tip 帮助闪烁
;;(require 'pos-tip)
;;(setq ac-quick-help-prefer-pos-tip t) ;; quick-help
(setq ac-use-quick-help t)
(setq ac-quick-help-delay 1.0) (setq ac-dwim t)
(setq ac-trigger-commands
(cons 'backward-delete-char-untabify ac-trigger-commands)) ;; fuzzy
(setq ac-fuzzy-enable t) ;; menu
;;(setq ac-menu-height 12)
;;(set-face-background 'ac-candidate-face "lightgray")
;;(set-face-underline 'ac-candidate-face "darkgray")
;;(set-face-background 'ac-selection-face "steelblue")
问题
pos-tip在这个环境下效果很差,显示的帮助内容闪烁
auto-complete插件和company插件冲突,在弹出菜单时可能造成显示混乱
模糊匹配fuzzy插件
(setq ac-fuzzy-enable t) ;; 不起作用
M-x ac-fuzzy-complete ;; 可以起作用,但没用
yasnippet
简介
为C、C++、C#、Perl、Python等语言设置代码片段。
配置
(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)
(setq yas-snippet-dirs
'("~/.emacs.d/Mysnippets"))
(yas-global-mode t)
snippet
创建snippet
C-c & C-n (M-x yas-new-snippet) ;; 创建新snippet
C-c C-c ;; 保存snippet
典型例子
# contributor: test <test@qq.com>
# name: __---__
# --
__${init}__
“# –”以上内容均为注释,这些注释可能为指令或者元数据
- 指令格式类似 “# property: value”
- 若没有 “# –” 则,所有的内容均被当做snippet内容
指令
# key :snippet abbrev,这是最重要的指令,若不指定该指令,则无法触发展开指令
# name :snippet name,用一行描述snippet。
好的描述可以让你方便的区别相似的snippets# condition :snippet condition,若snippet有条件,
当条件非nil时snippet会被展开# group :snippet menu grouping,一个模式若有许多snippets,
则可以把他们组织在一个group中,方便菜单栏中成组的显示,防止菜单栏变得太长# expand-env :expand environment,为变量赋值的列表(类似于let的变量赋值),
在展开代码段时,它可用于覆盖变量值# note: 从官网说明获取,方便举例
# name: ASCII home
# expand-env: ((yas-indent-line 'fixed) (yas-wrap-around-region 'nil))
# --
welcome to my
X humble
/ \ home,
/ \ $0
/ \
/-------\
| |
| +-+ |
| | | |
+--+-+--+
# binding :direct keybinding,你可以直接将展开snippet的指令绑定到普通的emacs按键
# type :snippet or command,若type指令被设置成了command,那么snippet的内容
会以lisp代码的方式执行。若设置为snippet(默认为snippet),snippet内容会以其模板语法解释执行# uuid :unique identifier,独立于name的唯一标识,若第二次加载的uuid和前次一样,则会以第二次为准
# contributor :snippet author
模板语法
纯文本
任意文本都可以作为模板的内容,除了美元符$和反引号`外,通常它们被认为是纯文本。若需要可以
用反斜杠\转义美元符和反引号,若要使用双反斜杠\\,则每个反斜杠需要一个反斜杠转义,即\\\\嵌入elisp代码
使用反引号`将elisp代码嵌入到模板中,代码会在snippet展开时执行/*c-mode example,示例取自官网*/
#ifndef ${1:_`(upcase (file-name-nondirectory (file-name-sans-extension (buffer-file-name))))`_H_}
#define $1 $0 #endif /* $1 */
TAB位字段
该字段可以让你使用TAB和S-TAB跳转。该字段格式为美元符$后面跟一个数字,
$0有着exit point的特殊意义,表示退出snippet占位符字段
制表位可以设置默认值,即占位符,语法如下
${N:default value}Mirrors
将带有占位符的制表位称为field,一个field可以有许多mirrors。
当更新一个field,相应field所有的mirrors都会更新begin {${1:test}}
$0
end{$1}
snippet实践
# -*- mode: snippet -*-
# name: main
# key: c_main
# --
/*${1: test} begin*/
/*
C语言main函数snippet,输入c_main然后C-c k即可
*/
int main(${2:int args}, ${3:char *argv[]})
{
$0;
return 0;
}/*$1 end*/
注:若光标被导航到了$0,无法使用S-TAB向后导航了。
semx/ido
简介
Ido是emacs内置插件;semx一款构建在Ido基础上,用于增强M-x功能的插件。ido配置
(ido-mode 1)
(setq ido-separator "\n")
(setq ido-enable-flex-matching t)
semx配置
(require 'smex) (smex-initialize) (global-set-key (kbd "M-x") 'smex)
(global-set-key (kbd "M-X") 'smex-major-mode-commands) ;; This is your old M-x.
(global-set-key (kbd "C-c C-c M-x") 'execute-extended-command)
操作
- 左右方向键选择待选项
- 使用TAB键补全
window-numbering
简介
快速在window间切换。操作
M-number
solarized-theme
自定义配置
(require-package 'solarized-theme)
(require 'solarized) (defun init-mytheme-light ()
"My solarized child theme."
(custom-theme-set-faces
theme-name
`(default ((,class (:background ,base03))))
)) (deftheme init-mytheme "The light variant of the Solarized color theme")
(create-solarized-theme 'light 'init-mytheme 'init-mytheme-light)
fci-mode
简介
80列提示线操作
M-x fci-mode
erc
登陆emacs ERC
emacs自带IRC客户端,启动指令:
M-x erc
minibuffer会提示操作步骤:
- IRC server : irc.freenode.net
- IRC port : 6667
- Nickname : "your name"
- Password : "your passwd"
注:步骤1-2可按默认配置,步骤3-4需自定义
注册账号
- 确认Nickname
可使用指令"/nick"修改Nickname至满意为止,尽量避免使用社区、商标名 - 注册nick
/msg NickServ REGISTER password youremail@example.com (注意大小写)
freenode会向注册邮箱发送确认注册的信息的邮件,按操作执行即可
登陆账号
- 账号
/nick "your name" - 密码
/msg NickServ identify "your passwd"
参考
- emacs编辑环境
https://www.ibm.com/developerworks/cn/education/aix/emacs1/index.html - elisp
http://ergoemacs.org/emacs/elisp.html - freenode
http://freenode.net/kb/all
emacs安装及配置的更多相关文章
- Emacs 安装配置使用教程
Emacs 安装配置使用教程 来源 https://www.jianshu.com/u/a27b97f900f7 序|Preface 先来一篇有趣的简介:Emacs和Vim:神的编辑器和编辑器之神 - ...
- CentOS6.x之emacs安装配置编译
刚开始学习linux,干学没什么意思,想在linux下写写程序,了解到linux下使用较多的是emacs和vim,在youtobe上分别看了看这两个工具进行开发的视频,个人感觉emacs比较酷一点,所 ...
- windows下编辑器Emacs的安装与配置
一年成为Emacs高手(像神一样使用编辑器) http://blog.csdn.net/redguardtoo/article/details/7222501 原创作品,允许转载,转载时请务必以超 ...
- Emacs安装配置全攻略之中的一个编译安装简单配置
/*************************************************************************************************** ...
- Emacs及扩展配置
Emacs及扩展配置 Table of Contents 1. 动机之反思 2. 它山之石 3. 扩展的管理 4. 我额外安装的通用扩展(在purcell基础上) 5. LaTex相关的问题和配置 6 ...
- Emacs 安装与体验
Emacs 安装与体验 下载与安装 首先是下载最新的x64版本的Emacs. 将下载下来的文件解压到你喜欢的磁盘目录下,我选择的是C:\Program Files.放在D盘可能是更好的选择,因 ...
- JDK安装与配置
JDK安装与配置 一.下载 JDK是ORACLE提供免费下载使用的,官网地址:https://www.oracle.com/index.html 一般选择Java SE版本即可,企业版的选择Java ...
- Node.js 教程 01 - 简介、安装及配置
系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...
- 烂泥:redis3.2.3安装与配置
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前一段时间写过一篇codis集群的文章,写那篇文章主要是因为当时的项目不支持redis自 ...
随机推荐
- RESTClient的基本使用
1.本人使用的是火狐浏览器,其他浏览器应该也有(没试过),安装插件RESTClient. 2.1.打开RESTClient:
- Xgboost GPU 加速
import xgboost as xgb import numpy as np from sklearn.datasets import fetch_covtype from sklearn.mod ...
- 解决Ubuntu无法通过ssh远程登录问题
1. 安装 open ssh: sudo apt-get install ssh sudo apt-get install openssh-server 2. 编辑配置文件,允许以 root 用户通 ...
- 开发者中心没有勾选 ipad却需要传宣传图片的解决方法
1.通过模拟器 运行一个ipad 把ipad的比例调到100% 然后保存图片,如果没有适配ipad会出现上下左右黑色边框,这些不必在意,把保存的图片拖到开发者中心即可,勾选右侧 ,都使用12.9英寸图 ...
- 浅谈现公司的Spring Cloud微服务框架
目录 说在前面 服务注册与发现 服务网关及熔断 配置中心 消息中心.服务链路追踪 小言 说在前面 本文偏小白,大佬慎入,若有错误或者质疑,欢迎留言提问,谢谢,祝大家新年快乐. spring cloud ...
- (一)为什么要UML
1 建模的意义 模型是对于现实的简化,建模是为了更好的理解系统 模型帮助我们按照实际情况或需求对系统可视化 模型允许我们详细说明系统的构造,行为 模型给出一个构造系统的模板 模型对我们做出的决策进行文 ...
- HTML标记
html:超文本标记语言 标记,标签,元素 单标签:<标签名 属性名="属性值" 属性名=“属性值” /> 双标签:<标签名 属性名="属性值” 属 ...
- git与github工具使用
这篇文章主要的目标是用较少的时间学习Git和GitHub的基本使用.在足够一般使用的前提下,尽量减少命令.如果需要其他命令,到时候再去其他地方了解就行了. 总概:所有命令前都要加 git,如下的ini ...
- Python+turtle交互式绘图:可以用鼠标拖动的小海龟
下面是我画海龟的过程: (1)打开python: 2.调用turtle库,先设置一些基础设置,与一个画龟的函数 from turtle import Screen,Turtle,mainloop cl ...
- 合并多个Excel
合并excel分为两种情况:1.将多个excel文件合并在一个excel中的不同sheet中.2.将多个excel文件合并在一个excel文件的一个sheet中. 1.将多个excel的文件合并在一个 ...