本期节目请来了一位使用 Emacs 近十年的资深用户陈斌[1],他是著名文章《一年成为 Emacs 高手》[2]的作者,同时也是一位拥有近二十年软件开发经验的前辈。
抵触 Emacs 近十年后,陈斌用一年时间就成为了 Emacs 高手,他是怎么做到的?是什么样的契机让他打开了 Emacs 这个潘多拉魔盒?
作为一个拥有众多插件的开源软件维护者,如何处理用户的不满?如何调节生活与维护的压力?陈斌给出了自己的答案。此外,节目里还聊到了 Emacs 与 VSCode/Vim 等开发理念上的区别,学习这些软知识,非常有助于加深对 Emacs 的理解。近一个半小时的内容,“湿货”十足,不容错过!
• 主播:西瓜[3]
• 嘉宾:陈斌[4]
• 00:00:42 嘉宾自我介绍
• 00:03:34 为什么会去写《一年成本 Emacs 高手》文章
• 00:08:18 学习 Emacs 多久后,开始写《一年成本 Emacs 高手》文章
• 00:10:16 Emacs 为什么不那么“开箱即用”
• 00:12:54 嘉宾是如何探索出学习 Emacs 最佳实践的
• 00:15:36 嘉宾列举的一些 Emacs 技巧
• 00:21:30 Emacs 的开放性,与其他编辑器的区别,“乱” VS “自由”
• 00:26:31 嘉宾学习 ELisp 的经历
• 00:30:02 嘉宾对维护开源项目的态度
• 00:39:35 嘉宾对新手的建议
• 00:43:53 嘉宾现在的 Emacs 工作流
• 00:54:11 Emacs 在 Windows 上为什么性能差
• 01:01:58 Emacs 核心开发团队是怎么样的
• 01:08:13 嘉宾对入行新人的建议
• 01:13:20 推荐环节
•嘉宾介绍
• 名字:陈斌
• 19 年工作经验,最早桌面开发,现在以 web 开发为主
• 知乎专栏:如何提高编程速度[5]
•入坑经历
• 2011 年开始接触 Emacs,当时大概 40 岁
• 吃了半年苦头后,无意间发现了 Steve Purcell[6] 的配置,才开始真正掌握其要领
•Emacs 技巧分享
• 在项目中查找文件 find-file-in-project[7]
• ELisp API 多,不同插件之间可以相互调用
•Elisp 学习经历
• 潜移默化,没有特意去学
•对待开源的态度
• 佛系,软件一开始往往都是不完美的,逐渐去完善就好
• 对新手学习 Emacs 的建议
•现在的工作流
• js2-mode[8]
• org-mode 记录心得体会
• 混用 magit 和 git 命令行[9]
• 基于 ctags[10],使用 counsel-etags[11] 来做代码导航,company-ctags[12] 来做代码补全
• shell-mode,新写的 shellcop[13] 插件可以根据 shell output 的文本内容,来快速跳转文件
• counsel + ivy
• 收发邮件使用 gnus[14]
• 使用 dired 管理视频文件,通过 mplayer[15] 进行播放
•Emacs 核心开发团队介绍
• Emacs 还能活多久[16]
•对新入行新人的建议
• 不要把眼光局限在一小块领域,可以学些人文/艺术等来提高自己的品味
•嘉宾的分享
• evil 可同时掌握 Emacs 与 Vim,而且还能彻底解决小指痛的问题
• abo-abo 大神的 ivy + swiper + counsel 全家桶
• vc-msg[17] 显示当前行的 git 信息
• evil-matchit[18] 在成对的 tag 间进行跳转
•主播的分享
• macOS 上的程序启动器 Raycast[19],类似与 Alfred,但是免费,且支持剪贴板📋管理
• 收听方式见:https://emacstalk.github.io/
• 如果您喜欢这档节目,欢迎通过「❤️发电」[21]来支持
[1]
陈斌: https://blog.binchen.org/
[2]
《一年成为 Emacs 高手》: https://github.com/redguardtoo/mastering-emacs-in-one-year-guide
[3]
西瓜: https://liujiacai.net/
[4]
陈斌: http://blog.binchen.org/
[5]
如何提高编程速度: https://www.zhihu.com/column/c_1116711987706478592
[6]
Steve Purcell: https://github.com/purcell/emacs.d
[7]
find-file-in-project: https://github.com/redguardtoo/find-file-in-project
[8]
js2-mode: https://github.com/mooz/js2-mode
[9]
混用 magit 和 git 命令行: http://blog.binchen.org/categories/magit/
[10]
ctags: https://en.wikipedia.org/wiki/Ctags
[11]
counsel-etags: https://github.com/redguardtoo/counsel-etags
[12]
company-ctags: https://github.com/redguardtoo/company-ctags
[13]
shellcop: https://github.com/redguardtoo/shellcop
[14]
gnus: https://www.gnu.org/software/emacs/manual/html_node/gnus/
[15]
mplayer: https://en.wikipedia.org/wiki/MPlayer
[16]
Emacs 还能活多久: https://zhuanlan.zhihu.com/p/390729464
[17]
vc-msg: https://github.com/redguardtoo/vc-msg
[18]
evil-matchit: https://github.com/redguardtoo/evil-matchit
[19]
Raycast: https://raycast.com/
[20]
530146104: https://jq.qq.com/?_wv=1027&k=9tAXJ8gG
[21]
「❤️发电」: https://afdian.net/@emacstalk