如何成为Emacs高手(像神一样使用编辑器)

仓颉编程语言开发:表达式 本节介绍最常用的条件表达式、循环表达式以及部分控制转移表达式(break、continue)。 阅读详情

很容易.一年多前我还在Vi阵营,偶尔使用Emacs还总是忘记`退出`(C-x C-c)的快捷键,但是一年后我跨入高手行列.

现在网上很多中文文章都是和你强调Emacs有多牛,以激发你的兴趣.最有名的大概是王垠Emacs是一种信仰!世界最强编辑器介绍.

这些好文章让你激动,你因此定下来一个伟大崇高的目标(掌握神一样的编辑器Emacs),接下来的关键就是执行了(如何高效地学习Emacs).

国内关于"如何做"的文章不多,那些涉及到"如何做"的文章,涉及细节比较多,而谈一般方法论的较少,所以本文的重点就是谈谈一般方法,

1 为什么要学习Emacs(可选)

简单谈谈,因为我本文的重点是"怎么做",而不是"为什么".

1.1 和单纯的IDE比较,Emacs可以做的更多更快

这里的更多并不是和IDE比支持某编程语言的特性更多,而是指Emacs内可完成的通用的任务比较多更快捷.

例如,我做开发时碰到难题,需要实时上IRC请教国外高手(工作流包括粘贴我的代码到pastebin或者gist,在irc内提问,看网页,将解决方案粘贴回来),emacs集成了IRC工具和浏览器(w3m),操作就很方便.

我使用Visual Studio有11年了,Firefox使用我也是高手,相信我,大多数情况下还是Emacs更快.

当然口说无凭,请看以下两段高手操作的youtube视频:

1.2 使用Emacs可以立刻开始工作.

软件是开源的,配置是纯文本,而且软件的资源消耗较小,安装包很小(命令行版本的安装包30M左右),所以在任何环境下我都可以用Emacs开始工作,overhead很小.

这在大项目中特别明显,例如,某项目我需要同时编辑perl,java,C,bash,SQL,需要远程编辑在美国服务器上的代码,网速也不是很快.Emacs的优势就体现出来了.

1.3 一年指的是充分利用空闲时间,一年后自然水到渠成

我没有说一年内必须什么事也不干专门学Emacs,悬梁刺股没有短期利益回报的学习方法是我最反对的.

我赞成的方法是,开始阶段花极少的时间得到巨大的回报(如下文谈到的Org-mode),以兴趣做导向.

每天花多少时间取决于个人需要和如何管理,以我为例,每天八小时上班时间中有很多零碎时间可以利用,上下班通勤时间有一个小时可以利用.

1.4 态度决定一切

长期来说你能取得的成就是由态度决定的.

优秀人士的两个特点:

  1. 勇于接受新事物
  2. 追求更强的过程本身就是目的;

2 读官方教程

打开Emacs后,按Alt-x,输入help-with-tutorial,回车.

第一步,仅需要半小时.关于Emacs的多难学的谬论可以休矣,因为半小时的代价微不足道.想想你去年有多少小时白白虚度了吧.

3 以兴趣和急需解决的问题作为切入点

因为如果微小的努力能得到巨大的回报,你就会越学越有乐趣,进入一个感情上的正反馈.

长期来说,在任何领域要成为高手,兴趣是最重要的.

以我为例,我急需GTD的工具,emacs的而org-mode是世界上最好的GTD工具(没有之一).在使用org-mode大大节省了时间后,对于emacs爱屋及乌,兴趣高涨了100倍.

4 在twitter上以"emacs :en"定期搜索

twitter人多,更新结果快

5 在google plus上搜索emacs相关内容

google plus技术geek比例高,我推荐Xah Lee,他的个人网站为李杀网. Xah Lee有在googleplus上有两个账户,我建议使用我推荐的帐号.

6 订阅Emacs牛人的博客

最好的是Planet Emacsen,是多个Emacs博客的集合

7 在stackoverflow上搜索emacs相关的讨论

google "emacs-related-keywords site:stackoverflow.com"

我会定期搜索,同样的帖子反复精读.因为stackoverflow上的讨论质量很高.

8 github是我的新欢

github的版本控制服务很好.现在它的社区化倾向越来越强了,我喜欢.

例如,可以看一下https://github.com/languages/Emacs%20Lisp上最酷的Emacs插件.

9 使用google快讯

每周一次给我邮箱发一次摘要,仅限最佳结果.这样的话信息质量可以得到保证

10 将emacs配置管理起来

我将emacs配置纳入github的版本控制,见https://github.com/redguardtoo/emacs.d.

版本控制可以是认为一个集中式的知识管理,任何时刻任何地点对Emacs配置的修改都要及时上传和合并(merge).这点对于个人能力的长期积累很重要.

11 将emacs相关资料管理起来

我将我收集的所有Emacs相关资讯都放在dropbox的服务器上,然后用dropbox的软件同步资料到我的智能手机和我的IPad上,这样我可以充分利用空闲时间学习.

我目前在读<An Introduction to Programming in Emacs Lisp by Robert J. Chassell>和<Writing GNU Emacs Extensions by Bob Glickstein>.

点击这里注册dropbox帐号.注意,dropbox客户端完全可以在国内使用,虽然访问其首页可能有点问题.

12 订阅EmacsWiki

EmacsWiki是一个社区维护的Emacs文档,可以认为是最酷插件和最佳实践的集合点.

13 到youtube上看emacs相关的视频

例如,我就是看了Google Tech Talks上这个Org-mode作者的介绍而爱上org-mode.

14 站在巨人的肩膀上

这方面我是个负面榜样.开始阶段我还是抱着玩的心态,喜欢到处找有趣的配置粘贴到我的.emacs中去.

完全是浪费时间!

我应该一开始就照抄 世界级大师Steve Purcellemacs配置(注意,支持Emacs23.1及更高版本)

我请求你不要重复我的错误,不要质疑,不要创新,跟着Steve Purcell做.

顺便说一下,Steve Purcell的配置需要git才能下载,这意味着你需要安装git和cygwin(限于windows平台).这是买一送二,我又给你介绍了两个高手必备的世界级工具.

考虑到我的热情会被认为是传销,而我的严密逻辑和事实论证可能被忽视,我有必要简单明了地说明推崇Steve Purcell原因:

  • 已有很多人推荐他的配置(请google)
  • 能力出众,背景相当好(我已调查过他的Linkedin Profile)
  • 人近中年,心智相当成熟(例如,他只在Mac下使用Emacs24,但是能够根据我在Linux/Cygwin下使用Emacs23的需求做调整).
  • 工程经验相当丰富(看他的代码一目了然)
  • 勇于求新,不断再尝试新插件,在他这个年龄极为突出

以上事实在我给出的网址中稍作调查即可得知.

15 认识到Emacs是一种生活方式

如果你照着我以上的做法做,就可以认识到Emacs牛人其他也很牛.Emacs实际上体现了牛人的一种生活方式.

像那些牛人一样思考,像那些牛人一样做事,不要怀疑,不要犹豫,很快你就会发觉自己也开始有些牛人的气质了.

例如,Sacha Chua就是这样一个有牛人气质的女孩,这是她的Youtube录像.

更直白地说,我认为Emacs不仅仅是一种工具,它可以提升人的素质,让人学会谦卑.

至少对我而言,当我明白了Emacs的其朴素的设计思想和其强大的功能后,我的感觉是敬畏,因为我做不出这样的软件.

我既没有能力把一个编辑器设计成一个人工智能语言Lisp的平台,也不可能花30多年的时间对一个软件精益求精.

16 小结

看到这里你应该很清楚了,我的方法就是以兴趣作为切入点,以天才作为榜样,大量阅读,大量练习.

如果你想获得真才实学,想变得更强,变得更优秀,这就是唯一的方法,唯一的捷径.

这个方法不是我发明的,古往今来的杰出人士都是这么做的,如果你需要一点"更科学的"论证,请参考一万小时天才理论.


26、深入理解Dart编程语言的类型系统与表达式 本文深入探讨了Dart编程语言的核心特性,包括其可选的静态类型系统与动态类型机制、表达式的种类与求值过程、类型声明与关系、类型转换、字符串插值、列表与映射等数据结构、函数调用、类与接口的设计、并发模型、泛型、错误与异常处理等内容。文章从基础概念入手,逐步深入到高级应用,旨在帮助开发者全面掌握Dart语言的类型系统和核心编程技巧,提升代码质量和开发效率。 阅读详情

相关推荐

97、深入理解Dart编程语言的类型系统与表达式

本文深入探讨了Dart编程语言的类型系统与表达式,涵盖了静态类型、动态类型、类型别名、接口类型等核心概念,并详细解析了常量表达式、空值、数字、布尔值、字符串、列表、映射等多种表达式形式。此外,文章还介绍了函数表达式、条件表达式、关系表达式、异常处理机制以及Dart的并发模型和类型依赖等内容,旨在帮助开发者全面掌握Dart语言的核心特性,提升代码质量与开发效率。

nut55的博客 71

轻松成为设计高手-Verilog HDL实用精解的代码

轻松成为设计高手-Verilog HDL实用精解的代码

64、深入理解Dart编程语言的类型系统与表达式

本文深入探讨了Dart编程语言的类型系统和表达式机制,涵盖了静态类型、动态类型、常量表达式、字符串插值、列表与映射等核心概念。此外,文章详细解析了Dart中的函数定义、参数传递、获取器与设置器,并介绍了并发编程的实现方式,如隔离体和消息传递。同时,还讨论了类与接口的设计、继承与覆盖机制、异常处理策略以及泛型和运算符的应用。通过这些内容,帮助开发者全面掌握Dart语言的核心特性,提高代码质量和开发效率。

nut55的博客 68

设计与验证:Verilog HDL(清晰PDF)

本书配套光盘中提供了书中示例的工程文件、设计源文件和说明文件,示例按照章节编 号和出现的先后顺序排列,例如"Example-2-1 "表示第2 章中的第1 个示例。 工程示例文件夹中包含该工程的项目文件、源文件、报告文件和生成结果等文件。 对于一些相对复杂的示例,说明文件中给出了示例的详细信息和操作指南,而对于一些 简单的实例,则只给出了源代码。

Emacs详细教程

转自:http://www.cnblogs.com/holbrook/archive/2012/02/15/2357335.html 内容提要 1.Emacs是什么 2. Emacs能做什么 3. Emacs的界面 4.基本概念--命令 5. 基本概念--快捷键 6. 基本概念--模式 Emacs学习笔记2: 初识Emacs 1.E

我编故我在 3万+

如何使用emacs编写c语言程序,并编译运行之

vi和emacs被分别被称为编辑器编辑器。vi的入门精通都很难,emacs入门容易,精通难;vi使用起来不停地切换模式,而emacs则不停地ctrl,meta等组合键。因此,高德纳大师说操作Emacs,就像弹奏管风琴。 vi是有模式的,因此他很少使用组合键,编辑起来确实要高效,而我厌烦不停的模式切换。选择了emacs。很巧,在国外,几乎所有的大师都是使用emacs的,J...

weixin_30849591的博客 2711

Emacs编辑器基本操作笔记

Emacs编辑器基本操作笔记 对基本操作做下笔记 Emacs编辑器基本操作笔记 按键说明 屏幕浏览 光标移动 文本删除(剪切)与复制 撤销 查找替换 文件 缓冲区buffer 多窗口 在Emacs编辑器使用中文输入法 补全 行号 注释 参考资料 按键说明 C-&amp;amp;amp;amp;amp;lt;chr&amp;amp;amp;amp;amp;gt;表示按住Ctrl键和&amp;amp;amp;amp;amp;lt;chr&amp

X_And_Y的博客 1687

轻松成为设计高手 - Verilog HDL实用精解代码仓库介绍

轻松成为设计高手 - Verilog HDL实用精解代码仓库介绍 【下载地址】轻松成为设计高手-VerilogHDL实用精解代码仓库介绍 探索Verilog HDL的奥秘,轻松掌握硬件设计精髓!本仓库汇集了《轻松成为设计高手 - Verilog HDL实用精解》一书的代码资源,包含丰富的代码示例、实验项目及设计实例,助您...

gitblog_06726的博客 428

【Cangjie】仓颉编程语言学习03——控制流表达式_A篇

本章介绍了仓颉语言中的控制流表达式,包括分支结构(if表达式)和循环结构(while、do-while、for-in表达式)。if表达式分为含else和不含else两种,其求值规则取决于上下文类型要求。循环表达式主要用于重复执行代码块,支持break和continue控制流程。特别讲解了for-in遍历数组、字符串和区间的用法,以及where条件和通配符_的使用。最后通过多个示例(如判断闰年、成绩等级、计算学生总分和平均分等)展示了这些控制结构的实际应用,并强调代码规范和类型安全的重要性。

include_YF_h_的博客 1205

T-SQL语言的正则表达式

正则表达式是一种描述字符串模式的工具。它使用特定的语法来定义字符串的搜索模式,广泛应用于文本处理、数据验证、数据提取等多个领域。字符类(Character Classes):例如[abc]表示匹配任意一个字符a、b或c。量词(Quantifiers):例如表示匹配零个或多个;表示匹配一个或多个。位置符号(Anchors):如表示字符串的开始,表示字符串的结束。

2501_90485707的博客 466

Verilog HDL的一本不错的书

本书简要介绍了Verilog硬件描述语言的基础知识,包括语言的基本内容和基本结构 ,以及利用该语言在各种层次上对数字系统的建模方法。书中列举了大量实例,帮助读者掌握语言本身和建模方法,对实际数字系统设计也很有帮助。本书是Verilog HDL的初级读本,适用于作为计算机、电子、电气及自控等专业相关课程的教材,也可供有关的科研人员作为参考书。

仓颉编程语言:Lambda 表达式

Lambda 表达式的语法为如下形式: { p1: T1, ..., pn: Tn => expressions | declarations }。

Androidbye的博客 1145

T-SQL 基于列的逻辑表达式 (CASE)

T-SQL 基于列的逻辑表达式 (CASE) CASE简介   基于列的逻辑表达式,其实就是CASE表达式.可以用在SELECT,UPDATE,DELETE,SET以及IN,WHERE,ORDER BY和HAVING子句之后。由于这里讲的是T-SQL查询,所以只说...

ajwqb06628的专栏 294

54、深入理解Dart编程语言中的表达式和语句

本博客深入探讨了Dart编程语言中的核心概念,包括表达式和语句的基本结构、类型系统的可选性与泛型支持、函数调用机制、控制流语句的使用方法以及异常处理策略。同时详细介绍了类与对象的定义、继承与覆盖机制、构造函数的不同类型及用途,并涵盖了并发模型、类型转换与运算符重载等高级特性。通过这些内容,帮助开发者全面掌握Dart语言的核心语法和应用技巧。

nut55的博客 127

76、深入理解Dart编程语言中的类型系统和表达式

本文深入探讨了Dart编程语言的类型系统和表达式,涵盖了静态类型、动态类型、类型声明、常量表达式、空值null、布尔类型、字符串类型、列表、映射等核心概念。同时详细介绍了函数调用、语句、异常处理、类型转换与测试、类型别名以及类型子类型关系等内容,帮助开发者更好地掌握Dart语言在实际开发中的应用。

nut55的博客 131
上一篇: linux多线程编程,替代sleep的几种方式
下一篇: 深入探索 Kdump,第 1 部分
horst_hu
博客等级 码龄15年 38粉丝 34原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值