用Emacs的这些年
Posted 欢欣之翼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Emacs的这些年相关的知识,希望对你有一定的参考价值。
读技术博客时发现又有人提起我曾写的那篇口水文章 [为何Emacs和Vim被称为两大神器](https://linuxtoy.org/archives/why-emacs-vim-good.html)。写那篇文章时,我还在Vim和Emacs之间摇摆。当然主要在用vim,博士学位论文和所有的国际会议文章都是用Vim编辑,latex编译生成的。
从写文到现在,快8年时间了,这八年时间我一直在用Emacs,只有在没有Emacs的环境下才会用vim或者vi。我是怎么从Vim转投Emacs阵营的呢?
写那篇水文的时候,还没有结束博士学业。写文后不久就奔赴工作岗位了。在单位需要做一个java项目,和别人一起,所以随大流地用了Eclipse。用Eclipse时一直用它的Emacs键绑定,结果项目一期结束时,我对Emacs按键很熟了。所以很自然地就用起Emacs了,狠心地抛弃Vim。就像当初学会了双拼输入,狠心地抛弃五笔一样。
后来再做java项目,我自己能做主,就没再用Eclipse,全部用Emacs完成。要什么对象成员提示,有javadoc就足够了。IDE中的提示只会让懒人不求甚解,看javadoc才能看到类的继承层次、接口的详细说明。因为在单位连接互联网不方便,这种情况用Maven构建项目是不适合的。于是我就动手写了一个针对java项目的通用makefile。当然这也是一个半成品,不能解决代码间循环依赖的问题。但对我自己来说够用了。这就是我的优点,不难为别人也不难为自己,遇到困难就含糊过去了,当然也是个缺点。
后来我去了做国产操作系统的公司,大家都在Linux环境下开发,我对Emacs更是爱不释手。代码、文档、日记都在Emacs中写,还用Emacs org模式写写我那些不能发表的小说。这段时间,Emacs写了不少python代码,也写了一些c代码,完全没有压力。
再后来,去一家公司做了半年NLP,训练机器翻译的模型,部署机器翻译的服务,这段时间用Emacs写了几个用maven管理的java项目,也写了一些python程序。TDD(测试驱动开发)帮了我不小的忙。
今年,走人才引进的路子,我又跑到高校来了。现在觉得编程没问题,写论文成为比较困难的事情了。这些天一直在找方向。计算机图形学的论文都很漂亮,但是这玩意儿似乎太难了。让我用SDL和OpenGL写个二维三维动画和小游戏什么的还可以,去改进算法实现,对我这数学渣来说,恐怕难为我了。机器学习大热,虽然也打下点基础了,可不是热情所在。再说就是做机器学习,也得先定个领域啊。按我的知识结构和热情所在,我想玩玩嵌入式操作系统,想写写嵌入式OS。但这东西似乎不好发文章啊,想灌个SCI一区二区的水,太不容易,想灌个三区四区的水,还得往物联网上靠才行。现在是摩拳擦掌想煮米,但还没有找到锅。
有点跑题了,还是说回Emacs和Vim吧。我觉得最终投奔Emacs还是投奔vim,和性格有关。我用Vim时,觉得心不静,用Emacs却有心静如水的感觉。虽然Emacs按键繁琐一些,都是key chain,但架不住你爱她啊。
不用纠结用Emacs的人少,用Vim的人多,Sublime的UI更友好等这类问题,都是shit。用Vim的人虽多,其中很多人都是像用windows记事本一样在操作光标呢,所以他们觉得vim还没有windows notepad好用。
还有,不要纠结Emacs代码补全不好用什么的,别人只是一个编辑器,你为什么要用IDE的标准来要求它呢?让我用IDE我还不习惯呢,上半年在公司时,同事让我用intellij idea,这号称最好的java IDE老偷偷摸摸在后台建索引占用我的CPU资源,我敲字的时候,老弹出补全候选项,干扰我的思路。还有写个scala文件,只要有main入口,你右键一点就能运行了,凭什么?你凭什么替我做这些工作,我不知道你给java命令行传递了哪些参数,你只会让我变懒,让我依赖你。我写了测试用例,用`mvn test`,照样能测试我的程序,为什么用你呢?
果断删除,我就要用Emacs和mvn命令行来做项目,我就要装逼,就是这么任性。再说我又没耽误工作。
用什么工具来做事,也是个性使然吧,就像我喜欢开手动档汽车,不喜欢开自动档汽车一样。
现在和八年前相比,我有什么长进呢?八年前我还和师兄弟打DOTA,现在不碰游戏了。时光一去用不会,往事只能回味,浪费的时间永远追不回了。就像我东搞搞西搞搞,频繁地换工作,到现在不可能再有大的做为了,只能安心做个平凡人了。
打游戏浪费时间,折腾工作环境也是浪费时间。我现在也很少折腾Linux环境了。环境折腾得再标新立异,也不代表你水平多高。把做正事的时间挤没了,有什么用。这都是很浪费时间的事情。上次我升级了一下自己的ArchLinux,结果无线网卡怎么也支持不了,自己编译的无线模块也加载不了。果断回滚到我升级之前的状态。这样又可以工作了。换作过去,我非得花个一两天时间把这个问题解决了。这就是说,年纪大了,玩不起了。
以上是关于用Emacs的这些年的主要内容,如果未能解决你的问题,请参考以下文章