Emacs Lisp 学习
介绍
Emacs 是和 Vim 一样,学习曲线较大、但能高度定制的编译器。内核是函数式脚本语言Emacs Lisp
(Lisp 的一种方言实现)的解释器。
The extensible, customizable, self-documenting real-time display editor
安装环境和入门
学习
理论加实践。一开始需要多动手练习基础操作。
-
关于学习观念和方法的讨论:Teach Yourself Programming in Ten Years
Emacs Lisp 语法
Emacs 打开后进入介绍页面,按q
后进入*scratch*
临时文件,可以执行 Lisp 语句。在每个语句末尾按C-x C-e
即可。
Lisp 是一门函数式编程语言。
S-expression
Lisp 语句由list
和atom
组成。这两者统称为 s-expression(symbolic expression, sexpr or sexp)。
简单来说是括号括起来由符号组成的表达式,内部元素(atom)用空格隔开,彼此可以嵌套。是一种树结构。
符号、数字、字符串、变量、函数
(defun greeting (name)
(let ((your-name "Bastien"))
(insert (format "Hello %s!\n\nI am %s."
name ; the argument of the function
your-name ; the let-bound variable "Bastien"))))
(greeting "you")
定义函数
(defun function-name (arguments...)
"optional-documentation..."
(interactive argument-passing-info) ;optional
body...)
设置变量的几种方式
(setq [sym var]...)
(setq name "you")
(let [varlist] body...)
(let ((name "you"))
(print name))
控制结构
Symbol
nil: 代表空列表 ()
或逻辑值false
t: 代表逻辑值true
Specail Form
if 语法
(if true-or-false-test
action-for-true
action-for-false)
打印变量
(print sym)
(message sym)
变量处理
(insert sym)
(format sym)
Quoting
默认情况下,符号或 list 按变量处理,会计算每个 list 表达式。使用 quote
可以直接使用字面量,避免计算。
Quoting: literal(not evaluated)
Expression: evaluated
'
:用于符号或 list
#'
:用于函数
(+ 1 3 1)
;; => 5
(apply #'+ '(1 3 1))
;; => 5
;; + 和 (1 3 1) 作为字面量参数传给 apply 函数
Backquote
Backquote
结构可以quote
列表,并可以选择性地计算(evaluate)部分元素。
默认与quote
相同的效果
'(a list of (+ 2 3) elements)
`(a list of (+ 2 3) elements)
; (a list of (+ 2 3) elements)
使用,
标记需要计算的值
`(a list of ,(+ 2 3) elements)
; (a list of 5 elements)
基本快捷键
C-g
:退出命令
C-h
:查看帮助
C-h v <variable_name>
: 查看变量
M-x
: 运行命令、函数
C-x C-e
: 运行当前 buffer
扩展
packages + configurations = layer
Emacs 下的 Vim 模式
evil 是 Emacs 的 vi 扩展。
Emacs 导航:neotree
Emacs 文件查找:helm
A Package in a league of its own: Helm
Emacs 术语
Frame: 整个应用
Window: 屏幕的一部分
Buffer: 处理文件或进程的接口
Mode: 适用于特定文件类型的按键绑定集合
State: 类似于 Vi 中的 Mode,例如 Normal、Insert、Visual 等等
Daemon 模式快速启动
-
启动服务端
emacs --daemon
-
启动客户端
emacsclient <file_name> emacsclient -c # -c,--create-frame
预配置版本
安装
-
先备份和重命名原始的配置文件,以让新的配置生效。旧的配置文件:
~/.emacs
mv ~/.emacs ~/.emacs.bak
-
安装
git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d
新的配置文件夹:
~/.emacs.d
。启动后会自动生成由用户修改的配置文件:~/.spacemacs
-
添加环境变量
HOME
,设置成~
的值(主要用于 Windows 环境)
添加自定义配置
~/.spacemacs
(defun dotspacemacs/user-config ()
(define-key evil-normal-state-map (kbd "<down>") 'evil-window-down)
(setq-default dotspacemacs-auto-save-file-location 'original)
)