终于重启学习 Elisp 了。主要是受今天 Emacs Talk 采访懒猫的影响。这一次,从李杀的 Elisp 教程开始,学习到 Elisp Basic 这一章,用懒猫推荐的 ielm 来测试每一个命令,得到了很有趣的体验,我将我的笔记暂时先发布在这里:
Elisp Basic
Elisp 基础数据类型以及数据的表达方式
Printing
-
message
(message) 在 Emacs 的 minibuffer 里发送某些数据,并在 minibuffer 中显示。 (message FORMAT-STRING &rest ARGS)
-
与不同变量值结合的方式
-
%d 表示 decimal number(不包小数点后面的整数)
(message "age is %d " 16) 测试:不能表示 1/3 这类表达的分数
-
%s 表示 string(字符串)
(message “name is %s” “Joe”) 测试:中英文皆可
-
%c is char by unicode codepoint in decimal
(message "Mid init is %c“ 65) 返回结果:“Mid init is A” 测试:一开始不太理解为啥输入 65 的值表达是 A。检索 unicode codepoint,找到一些编码进行测试,返回错误信息【值错了】。后来,M-x 输入 unicode 指令,找到一个命令 counsel-unicode-char,可以检索 Emacs 内置的编码信息,于是输入不同的数值,可得到用这一数字表达的【字符】。理解为,只能表达 Emacs 内置的 unicode 编码。
-
-
-
insert
(insert) 在当前 buffer 中,当前光标的位置中输入【字符串】。 (insert &rest ARGS)
-
print
(print) Print lisp object. Output can be read back by function read. Optional arg for a target buffer, or other functions. (print OBJECT &optional PRINTCHARFUN)
测试:关于 print 指令,李杀的解释是,它可以 print 任何数据格式,The “OBJECT” is any elisp object you want to print. It can be any lisp datatype, such as string, number, list, buffer, frame, …, etc.
print 和 insert 的区别是,insert 操作当前的 buffer,print 则是操作新 buffer。
-
prin1
print 的变式,性质作用一样,不同的是【不会在末尾另起一行】。 (prin1 OBJECT &optional PRINTCHARFUN)
-
princ
(princ OBJECT &optional PRINTCHARFUN) Print without newline nor delimiters. For human reading. 测试:输出的结果更符合人类阅读习惯,通常可以理解为把【数值旁边的双引号给去掉】。
Arithmetic 数学运算
略
Convert Float/Integer 浮点数/整数的转换
-
(float 3) 用于将整数转换成浮点数
3.0
-
(truncate 3.3) 用于将浮点数转换成整数
3
-
(floor 3.3) 用于将浮点数转换成整数,但取小值
3p
-
(ceiling 3.3) 用于将浮点数转换成整数,但取大值
4
-
(round 3.4) 根据四舍五入的法则,来取大小值
(round 3.4) → 3 (round 3.5) → 3 (round 3.6) → 4
-
字符串/数值之间的转换
-
(string-to-number)
-
(number-to-string)
-