快乐 Emacs
2021年 7月29日 星期四 00时46分23秒 CST - 最近看到一位设计师,离得近,现在无聊抄一段这位的摘抄:当一个人产生羞耻感的时候,童年便结束,青春开始了;当一个人的羞耻感丧失的时候,他的青春便结束了。
“开箱即用”
现在很流行“开箱即用”,从速食快餐到软件框架。“开箱即用”的问题是隐藏了过程和细节,事情只剩结果,选择“开箱即用”就像是放弃了一切去取悦“方便”,这样的结果是上手快了,投入却更难了,但是快乐源于投入。
Emacs
这里我要记录的是编辑器 Emacs 的使用,按现在的潮流看,它是逆行的,因为它不是“开箱即用”的。
人们有很多偏爱 Emacs 的理由:
- 一触即发的上古编辑器之战;
- Emacs 是魔棒,函数是咒语;
- 继承使用者的战斗力;
- 最强编辑器;
- 自由软件;
- Emacs 特有螺旋形学习曲线图;以及“作为操作系统”的 Emacs 和“煮咖啡”的 Emacs。
Emacs 是一个多才多艺的编辑器。
Emacs 有内置的帮助文档。M-x
,~ help-with-tutorial-spec-language
,Chinese-GB
。
🌊Emacs 大战
🪄Emacs 魔法
在我想查看“数的转换”相关内容的时候,可以输入:C-h i m elisp RET m Numberic Conversions RET
,以后以这个模式描述:info elisp - Numberic Conversions
。
在我想查看“位运算”的相关内容的时候:info elisp - Bitwise Operations on Integers
。
Emacs | 解释 | 举例 | 来源 |
---|---|---|---|
C-x C-b |
打开 buffer 列表 | 配合C-x b 或C-x k ,切换或杀死某个 buffer 前先执行该键预览所有 buffer |
|
C-x b |
切换 buffer | ||
C-x k |
杀死 buffer |
帮助指令
Emacs | 解释 | 举例 | 来源 |
---|---|---|---|
C-h ? |
列出帮助项目 | ||
C-h c C-p |
函数名称 | 两侧布局 | |
C-h k C-p |
函数说明文件 | ||
C-h f |
解释函数 |
Windows
Emacs | 解释 | 举例 | 来源 |
---|---|---|---|
C-x 2 |
垂直切割当前 Window | 上下布局 | |
C-x 3 |
水平切割当前 Window | 两侧布局 | |
C-x o |
切换至其他 Window | 配合C-x 2 ,把焦点转移到新窗口 |
|
C-x 0 |
关闭当前 Window | ||
C-x 1 |
关闭当前以外的所有 Window |
Emacs | 解释 | 举例 | 来源 |
---|---|---|---|
C-x C-f |
打开或者新建文件 | ||
C-x C-1 |
全屏 | ||
C-x C-r |
以只读权限打开文件 |
移动游标
Emacs | 解释 | 举例 | 来源 |
---|---|---|---|
C-a |
行首 | ||
C-e |
行尾 | ||
M-a |
句首 | ||
M-e |
句尾 | ||
C-p |
上 | ||
C-n |
下 | ||
C-f |
右 | ||
C-b |
左 |
帮助指令
特殊指令
Emacs | 解释 | 举例 | 来源 |
---|---|---|---|
C-u |
重复指令 | C-u 8 C-f 移动 8 个字 |
|
C-g |
停止指令 | ||
C-l |
中央 | ||
C-z |
暂停指令 | ||
C-s , C-r |
搜寻 |
company
yasnippet(yet another snippet)
- 打 key 带入程序片段;
- 下载其他人已完成的程序片段;
- 定义自己的片段;
- 不同主模式带入不同的片段(在 c 和 python 里打 ‘main’ 会带入不一样的片段)。
ivy-mode
flycheck
语法检查套件
Emacs | 解释 | 举例 | 来源 |
---|---|---|---|
C-c ! v |
查看 flyc 配置 | ||
C-c ! l |
查看检测结果 |
1 | (use-package flycheck |
C++ IDE
- 跳转定义
- 自动补全
- 语法高亮
- 工作区寻找文件
- 按键编译
- 图形化调试
1 | M-x compile |
文件夹操作
创建文件夹
1 | M-x make-directory RET dir/to/create RET |
C-x d
进入Dired
mode,输入 +
绑定命令:(global-set-key (kbd "C-c d") 'make-directory)
🔮Emacs Lisp
1 | ; 浮点数不能准确的相等,这里实现一定误差的相等测试 |
1 | ; 字符串测试用 stringp,string-or-null-p 测试对象是字符或 nil 时返回 t,char-or-string-p 测试是否字符串或字符类型,但是没有测试空字符串的函数,这个函数实现了 |
1 | ; string-to-number 从字符串转到数字的时候可以设置进制,也可以通过 format 把整数输出为八进制或十六进制字符串,但是无法输出二进制,这里实现 |
1 | (defun my-subseq (list from &optional to) |
私の Emacs の設定
- 文件管理:dired
- 智能括号:smartpares
- Git 客户端:magit-git
- 项目导航:projectile
- 翻译:有道翻译、webster
- web 模式:web-mode
- markdown:markdown mode
- 输入法:pyim
- lint 语法检查:flycheck
emacs:作者的“一生的emacs配置”。
Emacs - 工欲善其事必先利其器 第二话 - ivy, counsel, swiper:AcFun 视频
Emacs-config:Youtube 洋葱工作室的 GitHub 上的 emacs 配置
A beginner’s Emacs config:新人肯能会用到的 package
有哪些是必备的emacs扩展?:知乎问题,陈斌的回答
Emacs の設定:一位日本人的 Emacs 配置,博客主题好看
✨星のかけら
取消预设画面
1 | <- 编辑 .emacs 文件 |
设置自动保存文件
1 | (setq auto-save-visited-mode t) |
Reference
和直觉有关的歌曲:“Intuition takes me there”, Intuition, Mind Games, John Lennon
AlgorithmTemplatesv:This is my code template and Emacs config for ACM/ICPC, TopCoder, CodeForces and other sport programming contests.
Text editor learning curves:关于编辑器学习曲线。
X 分钟速成 elisp:这是篇长在 el 文件里的 elisp 教程,从完成最简单的输出字符串的函数开始,逐步完善到文末更复杂的能够控制 buffer 并使用列表的输出字符串的函数,让阅读者上手基本语法和了解 elisp 与 Emacs 的关联。
Teach Yourself Programming in Ten Years
知乎译文:十年学会编程
博客园译文:一份传世典文:十年编程(Teach Yourself Programming in Ten Years)