开放性议题:各位Emacs党为什么没跳出神之编辑器这个坑

在考虑要不要转向 kakoune。。。。

1 个赞

为啥嘞

kakoune 内置的多光标,内置异步补全,内置的和 tmux 交互,能包管理器直接装的 lsp 支持。

emacs 这些东西也都可以有,但是卡。特别是补全的时候打字不顺的这个感觉,实在是太难受了。

大佬试试用Nox进行lsp补全啊,我用Nox一点不卡顿。其他编辑器没有elisp的无限扩展性,感觉缺少点灵魂 :smiley:

感觉 company 弹窗的时候就是单线程的会卡一下。在 kakoune 里面这个感觉丝般顺滑,不说 lsp ,就是补 emacs-lisp 都有明显的差距。

company-idle-delay 的值设为 0 试试

@DogLooksGood 我也是设置了 company-idle-delay 的值设为 0。而且我在windows系统都不卡,你在linux更不应该卡才对。

莫非是我开了什么影响性能的东西吗?

估计是的,也许是company的候选太多了,才造成卡顿。我这边开了TabNine,Yasnipet 都是瞬间弹出候选菜单。

同感,只要自己不过于折腾,emacs能完成对自己而言很好的工作,善于总结自己的问题,不断提升emacs的熟练度,eamcs就能更好地服务自己

跟楼主一样。 18年放弃的。 断断续续使用了两年。 带来的麻烦远大于效率。 想当初,配置出自动补全都高兴的一批。 然后学习lisp,各种魔改。 结果,就是我在折腾,别人在刷算法题。我在折腾,别人在做各种项目比赛,拿奖拿到手软。同样做项目,因为折腾编辑器,进度就是跟不上别人。
而且,而一个编辑器折腾再好 也不可能写在简历上。

现在写文档用“语雀”, 做图像处理使用clion+matlab。偶尔打开其他各种类型文件使用vscode。 远程连接服务器修改配置文件使用emacs,要远程写代码使用vscode + remote 插件。 腾出来的时间刷刷算法,学习尤克里里。陪陪女友。 让工具做工具的事。 时间太宝贵了。

11 个赞

Emacs 对于我来说就是文本编辑器,折腾范围仅限于把它变成一个舒适的修改文本的编辑器,写写文档、博客、文章、偶尔写写脚本就足够了。

Emacs 相较其他编辑器来说,更容易变成自己想要的样子。我对她要求不高,她也会做好自己的工作。我觉得她能陪我一辈子。

配置的话就以 Doom Emacs 为基础就蛮好了。

专业的工作我选择交给 JetBrains 这类的工具去做。

非常同意!Doom Emacs 的作者也是这么说的 :smile:

路线对的话很快就掌握Emacs,即使是编辑器和IDE基础为零,认真学三天也够了。这三天一半的时间学Vim/VSCode/IntelliJ,剩下的一半时间学Emacs和LIsp

关键是重点放在文本文件操作改善工作流,不要在无关细节上斤斤计较。

比如使用第三方成熟配置 GitHub - redguardtoo/emacs.d: Fast and robust Emacs setup. ,那么安装插件就不用学了。

项目用git的话, counse-git找文件 ,counsel-git-grep搜文本,cousel-git-grepwgrep结合可以高效地全项目改文本。就以上三板斧掌握,速度已可以秒杀IDE和其他编辑器的。开箱即用,什么都不用配置。

只要做真实世界的项目,如果你对自己要求是高级程序员水准,命令行必须熟。这点无论你用何工具,用何语言,都是最终必须面对的。Emacs的社区文化是一开始就把命令行的细节暴露给用户。可能使用还是开箱即用,但是文档里会把细节都写上。对初级程序员来说心理压力比较大。我建议到tldp.org上找本命令行和shell的教程学一下。

代码自动完成和代码自动导航我推荐基于ctags的方案,缺点当然是智能程度不高。但是速度快,支持正则表达式定制,通吃所有语言。在我眼里优点远远压倒了缺点。

不要低估Emacs在文本操作上的强大。以代码自动完成来说,·company-mode 是最主流的。但是Emacs的hippie-expand和evil自带的词和行的自动完成也可以同时用。

IDE当然更智能,比如输入class instance,class method就可以作为自动完成的候选项目列出来。但是Emacs可以在更高层面解决问题。在真实的大项目中,很可能相似代码早已被别人写过,所以只要能高效地搜索并“引用”别人的代码就就行了。

比如

myarray.sort((customer1, customer2) => {
  return customer1.age  - customer2.age;
});

IDE可以在你输入myarray后提示sort的详细信息。但你还是要实现customer1和customer2比较的具体逻辑(也许是比较customer的年龄,也许是比较customer的消费金额 …).

我用Emacs的插件eacl可以自动完成代码段(输入sort启动自动完成,然后可以输入customer或者age在现有代码中进一步过滤,按回车代码就被借用过来了)。这个插件我发觉非常有用,项目越大效果越明显。

所有这些插件都可以当作API集合做二次开发。

就以上几个插件,已可以应付绝大多数的项目,效率也非常高。你可以对自己说“到此为止了,我再也不想学新插件了”。

Emacs是自由的,你完全可以选择适合自己的更轻松的路线。

6 个赞

Emacs 在打字和补全的时候卡可能和 GC 有关系,我把 GC 阈值调得很高,然后设置无操作一秒和定时 几分钟 GC,现在缓解了很多

我可能比较特殊,用了快二十年 Emacs,没用 elisp 写过一点东西,除了配置,一个原则是不折腾,有什么用什么,简单配置一下就可以了。就是一个工具,我几乎所有的东西都在 emacs 里编辑,写程序是主要工作,有限的自动补全也照样能做好工作,文字主要是 AsciiDoc,记录各种东西。可能就是低欲望 emacs 用户吧 :),主要还是用工具的人,工具就是工具啊,除非变成了专职改进工具的人。

9 个赞

佩服,用Emacs这么久了居然没有折腾的欲望

这样的群体或许还不少,我认识的用emacs的教授(不少于五个),写demo都是打开emacs来写,emacs是很原始的模样,但是他们用了都十来年二十来年了了

1 个赞

哈哈,和我前老板一样,MIT那帮人喜欢用很纯净的Emacs。在我给他安利很多包之前,他裸Emacs用的几十年,他说一直维持他博士时Emacs的样子,他博士时候,博士时候image

1 个赞

写Demo还好吧,而且内置包也基本够用。如果他自己平时什么包都不用那就是习惯使然了,比如当年跟很多人一起开发用Ultra Edit 写C++代码的情景,那是历历在目 ~~~ :grinning:

关键是,逛这个论坛的居然一点都不折腾下,难得难得啊 :joy: