从IDE到Emacs,到底做到什么程度值得?

可以看看chenbin的counsel-etags,他的方法好像是有个时间的阈值,默认是300s大概,然后还用用的是idle-hook,所以一般不会碍着你写代码。

同时,你可能要看看ctag ignore的一些文件,感觉你可能把很多其他不需要的文件也都tag了。

在Linux上编好了cquery的可执行文件,确实很好用,设置简单,功能强大。可惜windows上还编不出来……

是啊,我直接ctags -R -e,主要是为了试试看是不是确实可行。不过要去调忽略文件的话,感觉又太麻烦了。工程里的东西很多。

我最近改 .cquery 格式了 Home · jacobdufault/cquery Wiki · GitHub

%clang
%c -std=gnu11
%cpp -std=gnu++14

# Includes
-I/work/cquery/third_party

以前的 gcc clang 等不会自动转 g++ clang++ 了,得用 %clang

对于庞大的 C++代码库,在不熟悉的情况下Emacs 确实有点吃力,IDE 更得心应手。

对于楼主的问题,个人理解有几种解决办法:

  1. 使用 VS+VAX,调整为 Emacs 键位。VAX 是超级神器,就是太贵。
  2. 使用 VS + Emacs 扩展,用 Emacs 打开当前文件编辑,编译和调试仍然用VS 。
  3. 使用 Emacs,Company+Flycheck+dumb-jump.
  4. 使用 Emacs + lsp ,目前不大稳定,但可以关注。

cquery, clang, ycmd 等我没有真正使用过,不做评价和推荐。

对于大项目,我连 VSCode + C++ 扩展都不推荐,太耗资源,不如直接用 VS。再说一句,VAX是超级神器。

Xah的两段评论,和主题有点相关但不直接相关,我也借这个机会记录下来并且和各位分享

most negative comment here is holier-than-thou syndrome.

people wants to attach mythical quality to emacs.

as tooling goes, mastery of atom editor or code editor and its js language, is far more deep and rewarding, financially or how modern software system works.

if a tool kept you thinking you always don’t know something, there’s something wrong with the tool or the community.

in fact, vast majority of emacs users for over 10 years, only know how to use the very bare basic features, and know no emacs lisp at all. I know, in part because lots such users told me so, in email or in comment. (most, will not disclose their names in public)

and there are very old users (over 20 years emacs), who even have problems with upgrading emacs, and still stick to how emacs ways of 20 years ago, with their 20 years old habits and config.

most emacs users, they do not read online emacs blogs, or, maybe a couple of times per year. What we see on reddit or other emacs forums, are not typical emacs users.

这是最近的,大意是,很多Emacs用户并不熟练掌握Emacs,这是Emacs本身的问题。

i’ve used PyCharm for a day or two, and it’s rather lackluster. But, for more complex stuff, i’ve tried WebStorm syntax highlighting, it stands out ABOVE ALL. (when you work with web, you know, thousands of keywords from BOM & DOM. 〔➤ JavaScript: Browser Object Model, Document Object Model〕 〔➤ Xah Web Dev Tutorials〕 ) See Syntax Coloring in Editors. Really because, it has a language-aware static analyzer builtin. The emacs counter part is CEDET. 〔➤ Emacs 23.2 Features (released 2010-05)〕 It’s been in emacs for 5 years now. But i have yet to tackle it. I’m sure, it will take me a week to figure it out, and the outcome, may just be abandon. While, JetBrain stuff, works out of the box. That’s a big difference between commercial software and open source. (if you are reading this, and if you are young, you probably have beefs with my call and forthwith diss xah’s blogs. You! Too Simple! Too young! NAÏVE! And if you are the few old bags glued to the FSF ideology or open source nirvana, well, good for you. (you know? actually, i was surprised that there are many people today who do not know the difference between FSF and Open Source, and do not know, that they are at war. (here’s trick. To get rms extremely angry, just say to him, sincerely: “Thank you for all your contribution to open source.” (make sure you don’t have something shatterable nearby.))))

大意是商业软件是开箱即用的,而开源软件大都需要折腾,这是两者的区别。如果年轻人过分迷信开源软件就「图样」了。

1 个赞

这句话算是你做出来的阅读理解。

本来呢,一辈子学不完 Emacs 这个梗是吹 Lisp。不过后来被某些其他编辑器用户当成了 Emacs 的黑点。但肯定的是,这是好事。Unix 的出现已经把计算机倒退了三十年,Emacs 遗留的 Lisp Machine 灵魂,不应该受到作为编辑器身份的束缚。GNU/Emacs 可以继续做一个编辑器,make lisp great again.

总结概括一下,就是,在座的各位都说自己什么都不知道,心里都觉得自己已经天下无敌,其实还是什么都不知道。

其实这是因为看到自己写了这么多教程以后还是没人捐钱后的失落愤而写的劝退文,讲的是人性的沦丧,人就是这么扶不上墙,只会挑简单的用,试图证明 FSF,Emacs 教徒等努力传教,改变众人思想的坚持是徒劳的,是可笑的。只不过他也五十步笑百步罢了。

反而到头来还是我一个装逼犯看的明白。

3 个赞

此处应有表情包


为啥节选里说FSF和Open Source目前是对立状态?是因为GPL和BSD/MIT理念不合吗

1 个赞

Congratulation for being the 1000th stargazer of cquery-project/cquery !

我读 llvm bin/cquery RES 小于2GiB

1 个赞

没,他只是笑话现在只知 Linux,不知 RMS。(大概就是这个意思,说 RMS 给开源做了嫁衣,FSF 比起 Linux 远没有后者知名)

用Linux肯定会了解到FSF的啊,RMS倒不一定……

不用 Linux 的也知道 Linux 啊。另,用安卓的也不见得知道 FSF。

谢谢你的回复。

Flycheck我刚刚上手,有个问题还没解决,就是#include "xxx.h"的时候,xxx.h并不在当前路径下,但是因为在VS已经添加过头文件搜索路径,所以实际上是可行的,可是Flycheck并不知道这一搜索路径,就会报错,而且只会报这一个错误,只有当我修正这一错误的之后,它才会检查下面的代码。

我现在在windows上使用ctags,还能支撑一下代码跳转。

Linux上试过cquery,感觉挺好用,但工作环境是windows,所以就没有多尝试。

Emacs键位我在VS2015上没有找到支持的扩展程序,而VS2015又不默认支持Emacs键位,所以我就放弃在VS内部用Emacs键位。

dump-jump我还没了解过,会去看看。

FSF 所提倡的「自由软件」,和大多数人接触到的「开源软件」其实有很大的区别。

真的有很多人只知有 Linux,对 FSF 的了解么……就仅限于知道这个名字而已。

估计不少人自始至终信奉的,其实就只是「开源精神」,甚至懒得知晓什么「自由软件」。只是简单地默认两者是一回事,然后 Linus 和 RMS 为了同一个崇高的目标共同努力。

我不知道有人翻过 FSF 官网上的文章没有?反正我看到其中的几篇,感觉迷之尴尬。

Linus的理念和FSF也是不同的。

具体可以看看为什么Linux的协议一直锁死在GPL-2.0

2 个赞

可以看下这两个视频:

前一个讲的是操作系统的发展的,后面那个介绍的是网景公司的

1 个赞

对NB的人还是要理智的看待为好,不要盲目的崇拜,linux也好、emacs也好,发展到如今的规模 ,并非仅仅出自一人之手的,我们是不是应更多的关注这些东西的用途,而非在讨论哪种精神……就像胡适说的:多研究些问题,少谈些主义

1 个赞

个人感觉,Linus 的重要特质之一是务实,认为开源这种 工作方式 能「给世界带来更好的软件」。他认为开放代码审查能集中优秀的头脑,避免软件后门、隐私暴露的问题,客观上也导致商业公司无法独占某项技术形成垄断。为「更好的软件」这一目的,最佳方式是鼓励开放源代码。对软件的授权许可倾向于更宽松,也并不拒绝商业化(反正你让人不爽了,总会有人去 fork 个分支出来)。

而 RMS 给人的感觉则是有点偏执的救世主情结:奔走各地,宣扬专有软件(及其公司)正在侵蚀整个世界,“We are in danger”,停止使用专有软件,使用自由软件你将获得自由……等等。从这点出发,判断软件/技术好坏的首要标准是「自由」。是否符合「教义」中的「自由」?是否血统纯正?不会被商业公司控制?「软件好坏」则被放到了第二位。同时,为了应对商业公司愈来愈逼近的侵蚀,收紧软件授权许可成为几乎必然的选择。

其实,自由软件和专有软件之间并没有多么不可调和的矛盾。完全没有必要树立个「巨大的风车」。RMS 太过于关注「自由」理念,太过于在意这场「所谓的战争」的胜利,而世界真正需要的只是「以较低的成本获得高质量的软件」,而这,正是 Linus 及其信徒们能提供给他们的。

说到这里,可能还是会有人问,“接下来自由软件运动会不会逐渐势微?RMS 是不是正在失掉这场战争?”(你 TM 还在提战争?胜利?!)“如果真的有那么一天,”我说,“也许只是刨除了主义、理念……使得我们更加接近世界的本来面目,而已。”


不好意思,写长了 :smiling_imp:

3 个赞

凑个热闹

虽然对Emacs灵魂思想不甚了解,但对Emacs有极大的兴趣。若说原因,就我目前的水平,还无法确实地表达清楚。如果仅仅从实用角度出发,我只能说:Emacs键绑定实在爽到爆。

我的开发环境跟题主基本类似,所以也折腾过一阵子,试图把Emacs打造的更接近C++ IDE。然而最终没能坚持下来。helm-ag配合gtag做代码跳转效果还可以,但还不够理想。Google了几篇“using emacs as c++ ide”的文章,感觉那些配的emacs都很厉害,基本可以当ide使了,然而他们用的都不是windows,我在windows上折腾,基本都只能实现其中的一部分。虽然无法把emacs当做c++ ide使,但emacs依然是我的主力编辑器。 其实,也并不想放弃折腾,实在是精力太有限。本就就是半路出家的程序要,养家糊口的技能还没掌握好,也就没法安心折腾Emacs。

如果题主可以用Clion,那我极力推荐下,Clion的emacs快捷键绑定是我目前用过的与emacs最接近的,子窗口,候选框都支持emacs快捷键。另外,vs2013的那个emacs插件解包后稍微改一下就能在vs2015上使用。