
# Changelog
## [2020-11-26]
- 加入用Advice注入病毒至第三方代码中一节 (zh)
- Add the section "Use advice to inject virus into 3rd party code" (en)
## [2020-11-25]
- 加入用hooks管理大项目的魔法一节 (zh)
- Add the section "Use hooks to manage big project" (en)
## [2020-06-28]
- 加入自定义字符串text object一节 (zh)
- Add the section "Define your own string text object" (en)
## [2020-06-12]
- 完成"打造自由智能的开发环境"一节 (zh)
- Add the section "create smart and free development environment" (en)
## [2020-04-24]
- 加入 Emacs 官方教程视频 (zh)
- video on Emacs official tutorial (en)
## [2020-02-26]
- 加入更新ideavim至0.55.1的视频 (zh)
- 更新IntelliJ IDEA子窗口操作视频 (zh)
- `$HOME/.ideavimrc` 更新了 (zh)
- Add video to upgrade ideavim to 0.55.1 (en)
- Update video on sub-window operation of IntelliJ IDEA (en)
- `$HOME/.ideavimrc` is updated (en)
## [2019-09-31]
- 第一版发布 (zh)
- the first version is released (en)
附件`keyfreq.txt`为我使用Emacs各种文本文件操作的一年统计数据。
此配置文件为了配合教程,做了一些简化。例如没有用VSCode的第三方插件matchit的快捷键覆盖
VSCode默认的快捷键。
建议在学习前面几章时不要执着于快捷键。到学习"用Vim的技术强化Visual Studio Code”一章时在研究如何优化快捷键。
启用其中所有功能需要安装vim和matchit两个插件。
我的个人VSCode完整配置在 https://github.com/redguardtoo/vscode-setup。在完成本教程前不建议使用此配置。
`ideavimrc.zip`解压缩后得到`.ideavimrc`将其放在环境变量$HOME所指向的目录里。这是IntelliJ IDEA的插件IdeaVim的配置文件。安装插件IdeaVim, 重启IntelliJ IDEA.
`my-find-file.el` 包含找文件和搜索文件两个功能的Emacs Lisp代码实现。建议照着对应课程完成所有代码后再看本文件对照。
- 强调Execute All Commands需要大量使用,代替不常用的快捷键。此命令等价于Emacs的M-x命令。不要觉得这是人人都已掌握的常识。我可以断言,99%的用户 使用此命令的频率还是太低。不久之前我也是这99%的用户之一。
- 只有在我用 “使用科学数据提高编程效率” (https://zhuanlan.zhihu.com/p/68182816) 一文中科学方法测量过之后,我才意识到很多我以为应该常用的命令实际上用得不多。不值得为记住其快捷键浪费脑细胞。所以我使用Emacs中的M-x次数才多了起来。
- 很多资深用户也会在基本功上有遗漏。阻碍了他们的进一步提高。所谓基本功就是文本文件操作术。我的教程的目标就是补足所有的基本技术。所以会按照主菜单顺序讲解点评所有功能本教程讲述
- 专家实战经验. “实战”这个词可能已被用烂了。网上大多数教程中“实战”两个字的意思就是照着手册“实际操作一遍”。要它们质疑大公司产品经理的决定是绝对不敢的。我肯定是在教程中要把所有不合理的决定都质疑一遍的 (陈斌:VSCode对Emacs,代码浏览哪家强)
- 演示了如何充分利用Execute All Comands。少记好多快捷键。要把有限的精力放在少数几个常用的功能上。如伟人所教导的,”集中兵力打歼灭战“
- 尽可能用电脑自动完成工作
程序员最常用功能。在选定区域查找替换非常有用。
在多个文件中查找替换是最有用的功能,大量用于重构和阅读代码。但是大多数程序员对此功能没有充分利用
注释代码是最常用最经典的场景,但是被大多数程序员忽视。实际上有很大的优化空间。
Emmet那套自动完成html代码已被现代的web开发淘汰了。不过工具箱中其他工具还有可取之处。
是程序员最常用的技巧,一定要记住其快捷键并尽量多用
行拷贝很常用。
非常经典常用的操作。必须多加练习和应用
程序员每时每刻必用功能,一定要记住并采用高效快捷键
非常经典的功能,一般和查找定义一起用
常用功能。匹配括号间跳转如结合Vim插件则是大杀器。后续课程会给出更多细节
一般跳到第一个错误后就不需要再跳转了。自带的语法检查也好,第三方语法检查也好,都是实时检查错误。所以你不可能有两个以上错误。快捷键不用记。
这个秘笈除了本教程外我从未公开过。因为我自己也开发了很多Emacs插件。如有人把我对其他插件的褒贬应用到我自己头上,会比较尴尬
编辑器之神Vim的文本操作效率公认非常高效。其他编辑器和IDE也支持Vim的快捷键。掌握了Vim就可以提高在所有编辑器和IDE中的效率
最新设置可从 https://www.github.com/redguardtoo/vscode-setup 下载。建议在学完本教程后再下载最新配置。在教程第一章已提供了一个简化的配合教程的设置,推荐使用词简化设置。
理论上可选的。但实际上高手都用此技巧。
理论上可选的。但实际上高手都用此技巧。
理论上可选的。但实际上高手都用此技巧。
可选,如果你已精通Vim和VSCode,希望简化工作流,把查找替换语法统一到Vim的原生语法,可以用此技术。
IntelliJ IDEA是全世界流行的IDE。应用之前教授的技术,以证明我们学到的技能是通用的。可以使用一生,永不会贬值。无论以后你使用何种编辑器和IDE,你都可以使用本课程学到的技巧
需要安装ideavim 0.55.1版本,见之前的章节
教程所教授的文本文件操作术就是在Emacs和Evil中发展出来,用Emacs的工具收集数据优化策略。所以这套技巧必然和Emacs 完美兼容,不会有什么难点问题需要特别处理。
以Emacs子窗口布局的特有功能说明自由软件的意义。以VSCode作为对比。
除Emacs之外的其他工具(包括Vim)在打开文件上总是有这样那样的遗憾之处。我来演示一下理想的编辑器是怎么做的
此技巧为我多年前发明,被著名的emacs配置spacemacs作者采用(git提交历史里可以搜到我的名字),已被许多Emacs用户采用
教授专家快速编程的独家秘诀
课程内容:
- 在一周到两周内精通主流的编辑器和IDE(Emacs, Vim, Visual Studio Code, IntelliJ IDEA, Sublime Text 3)的文本文件操作
- 学会Linux/Unix的Shell,能够结合命令行程序和编辑器优化工作流
- 学会用 Lisp 拓展神之编辑器 Emacs. 掌握函数式编程技术
课程目标:
- *使你编写代码更轻松愉快*
- *编程速度在如Google,Facebook,Amazon这样精英荟萃的硅谷大公司也能位于前5%*
- 帮你增加影响力,让老板认定你就是好莱坞电影中的黑客程序员
课程分为两部分.
第一部分教文本文件操作术:
- 以流行的编辑器Visual Studio Code为例教授所有文本文件操作基本知识
- 以Vim的官方教程为参照,教授高效文本操作术
- 将Vim的技巧应用于Visusal Studio Code
- 研究最优化快捷键的方法: *任何工作流都可分解为多个基本文本文件操作命令.基于用Emacs插件keyfreq积累的一年统计数据,我只优化最常用的命令.此方法被Emacs Lisp世界排名第二的Bozhidar Batsov背书*
- 教授用于文本处理的正则表达式(regular expression)技术和文件路径匹配的glob pattern技术.它们被广泛用于各种语言编程.在本教程中会用于开发编辑器插件.
- 将以上技巧用于第三方编辑器和IDE
- 学习Emacs文本文件操作技术. 神之编辑器Emacs的用户有Facbook的创立者Mark Zuckerberg, 自由软件运动发起者Richard Stallman. 我Emacs Lisp世界排名18.所以有信心保证你学会
第二部分教Lisp编程.以Emacs为例,掌握独立开发插件,拓展编辑器的能力:
- 读者只要有初级程序员能力.有写过100行左右任何编程语言的代码的经验即可
- 学习Emacs Lisp基本概念: 变量, 函数, 运算符, 循环和条件判断语句, 文件读写,其他编辑器相关概念
- 学习Linux/Unix命令行和Shell基本知识
- 开发文件查找插件
- 开发文本搜索插件
- 开发代码自动成插件
- 开发代码导航插件
- 写代码优化拼写检查
- 写代码优化语法检查
小结:
- 第一部分对命令使用频率和快捷键设计的点评初学者节省精力和时间,为专家指出了优化效率的方向。
- 第二部分Lisp开发的例子是精心选择的.覆盖了程序员日常工作流.代码性能针对主流操作系统(Windows/Linux/macOS)都已优化
报告Bug:
- 如有 Emacs 的问题, 在我 Github 的 emacs.d 项目下报告可获得最快对应
- 其他问题在课程所在网站报告
- 确保相关软件升级至最新版
- Vim一直有含有字母x的快捷键无法使用的bug,升级到8.2版本后,此问题已修正.唯一的例外是快捷键",xx",建议使用其他快捷键代替",xx".
- 其他编辑器和IDE没有快捷键无法映射问题.*本课程从未把Vim作为主力编辑器推荐.Vim只是学会高效文本操作术的工具*
注意, 课程篇幅有限,只给出结论和怎么做,来龙去脉从简了. 如了解技术细节或获得最新技术更新:
- 可订阅知乎专栏"如何提高编程速度"
- 在 Github 上加我 @redguardtoo
- 我的微博 @emacsguru