acecase
发表于 2021-8-10 15:52
很多时候是因为公司的环境导致你只能在服务端开发,那样的话你能选择的编辑器只有vim和emacs了。如果只是进行代码的编辑,现在的vim和emacs没有任何问题。可以参考一下我的vim配置lemon0910/lemon-vim。那时候你主要该考虑如何精简插件了,你应该知道,功能越强大的插件,在服务器运行起来的可能性越低。比如你装了ycm这么强大的补全插件,你还得装clang啥的,但环境一般都是公共的,服务器版本一般也比较低,除非特别能折腾,一般都要放弃,只用简单的基于buffer的补全就够了。但现在的vim进行文件搜索(fzf,leaderf),自动补全(asyncomplete,complator),tag跳转和tag搜索(fzf,leaderf),文本搜索(CtrlSF,ag.vim)没有太大的问题。模块依赖这块确实没找到太好的方案,基于tag的cscope和gtags我是觉得不好用,cquery等我觉得还是不稳定,经常各种错误。所以我一般都clone一份到本地,用eclipse看。所以我的原则是用vim写,用IDE看代码。错误提示你可以用ale,但是我用的服务器性能不行,所以没打开,断点调试就用gdb,linux是一件工具就做好一件事情。
如果你不是服务器项目,感觉确实IDE更强大,毕竟没几个代码写的慢是因为编辑器。你要知道啥IDE都会有个模拟vim的插件,所以我觉得vim的精髓不是软件本身,而是vim的编辑理念,无论你用啥软件都可以配成vim的编辑模式,所以不用太纠结。如果你学会了vim配置,配置任何编辑器和IDE对你应该都不是太大问题,入坑后学习vimscript,lisp会很花费时间,所以把握好度就行,我就用vscode的vim插件把vscode快捷键配的和vim体验差不多。
最后补充一句,我是写数据库的,国内项目代码量比这个还大的应该没几个,我用vim,emacs和vscode都可以很好的完成编辑任务。
unityloverz
发表于 2021-8-10 15:59
还是有的,我就是其中一个一直用 Vim 做项目的程序员。可以参考我为了做各种项目而写的 Vim 解决方案: exVim: Home
但是我觉得代码爱用什么写用什么写,做大项目更重要的是其他的分析工具,Debugger, Profiler, 等等。跟你用什么代码编辑器关系不大。
FeastSC
发表于 2021-8-10 16:00
竟然没有一个人提到source insight ,我一直以为大型C/C++项目的编辑器都是用source insight的,难道知乎里面的程序员都只是为windows写程序的么? 怎么一提大项目都提到了VS
FeastSC
发表于 2021-8-10 16:03
巧了,从上大学开始,我依次用过 XCode、Eclipse 和 Jetbrains 系列(C++/Java/Python),后来短暂的用过一段时间 VSCode,最近一两年已经完全转向使用 VIM。
至于为什么使用 VIM,很关键的一个原因是,在 coding 的过程中不希望自己的手离开键盘(比如使用鼠标),因为这样让我感觉被打断;所以,我自己配置了一套 VIM,包含了普通 IDE 的文件树、语法检查、格式化、自动补全、跳转、查看文档、断点、注释等功能。关于此我之前写过一片文章:
poodar.chu:让 VIM 替代你的 IDE虽然被很多人喷这是蛋疼,但我想他们可能不理解为什么不想使用鼠标,而是整个过程手都在键盘上。
这个东西虽然学习的曲线很高,但即使高你用上一个月也肯定能习惯了,习惯了之后就是带来效率的提升,我认为这是一件很值得去做的事情。
BTW,我也配置了一套 VSCode ,欢迎使用:https://gist.github.com/poodarchu/04800c32bfe4cadce5a696ecf32cf525
FeastSC
发表于 2021-8-10 16:06
我不知道你说的「大型项目」有多大型。你要不要试着把 Linux 源码导入到你最喜欢的 IDE 里试试(请准备好重启)。
自动生成脚本是什么?如果你是指代码片断的话,已经有 snipMate、neosnippets 了,另外这也不应该是项目里的常态。如果是生成的代码文件的话,那个和 Vim 没什么关系呀。
格式化代码?Vim 也能做。不过它自己能做的很有限;它一般是去调用 indent、astyle、tidy、gofmt 之类的。
体现模块间的依赖关系?Doxygen 那样的图示么?
错误提示?各种 lint 工具?Vim 都有支持的呀。而且我很讨厌那些工具的说,因为在使用自己的主力语言时,我比那些工具更明白我自己在做什么。
断点?gdb、pudb?也许 gdb 的界面很丑很不易学习,但是有哪个 IDE 的调试功能能有直接调用它并且按自己的意愿书写各种调试命令更强大更舒适么?
另外,你似乎把 Vim 与 IDE 放到相同的地位了?Vim 可不仅仅用于开发的。各种文本处理它都很擅长。比如改配置文件。特别是你远程连接到服务器时,你还怎么用 GUI 的工具呢?
Vim 仅仅是个文本编辑器而已。它不是 IDE(当然它的文本编辑功能远超任何常见 IDE)。但它可以作为你的专属 IDE 的一部分。其它部分可以包括 zsh、gdb、indent、make、cmake、ag、Python、doxygen 等等任何你所需要的工具。使用 Vim 的另一个好处是,如果你的硬件资源有限(跑 Java 写的 IDE 很吃力),你可以以较少的功能(少装插件)来换取处理速度的提升(可以少用些内存和 CPU 了)。
FeastSC
发表于 2021-8-10 16:12
感觉芯片完全被无视了T_T
芯片行业很多都用vim来写代码的呀
因为都登陆linux工作站,大部分人都用vim来写verilog, system verilog, VHDL, tcl, perl等等等等
当然还有人拿emacs来写
XGundam05
发表于 2021-8-10 16:18
有啊,阿里云的飞天系统,一个大型的c++项目,据我所知应该大部分人都是用vim在编写。
直接原因很简单,只能ssh到开发机上编程,哪来的IDE,不用vim就只能用emacs了。
实际上每个小组应该只会负责自己那个模块的代码,跟其他模块之间的交互会通过接口定义好。每个小的模块,可能也就几十个源文件,几万行代码,一般用vim就够了。
NoiseFloor
发表于 2021-8-10 16:23
我就是
FeastSC
发表于 2021-8-10 16:29
emacs粉现身回答,我是来拯救在vim/emacs编辑器中挣扎的初学者的。
-----------------------------------------------------------------
首先说说vim.
vim是影响力非常大的东西,vim来自于vi,vi在1976年就发布了,所有的非windows系统都找得到它的影子,它的所有操作经过了这么多年的进化之后已经极度符合编程的人体工程学,所有的操作都经过了这么多年的时间考验,对文本的操控能力之强悍已经没有任何其他的编辑器能够匹配了,所以vim真的是程序员必学的东西,只要你想长期写代码,不是专门搞算法的偶尔写写代码,不是项目经理,那么vim就是必学的,《程序员的修炼之道》中把用notepad式的普通编辑器和vim,emacs之类的高级编辑器比作是茶匙和铁锹,实际使用过程中绝对远远比这个夸张,所以学习一个高级编辑器是必须的,这个不容争辩,几乎所有的IDE里面都能找到vi样式的插件,对于大部分人来说用好这些就足够使用了,现在的人最大的问题就是太贪心了,就想着能一口气把所有的功能都用会,用顺,现实中这是不可能的,vim/emacs的学习成本其实并没有那么高,都有自带的入门教程,大概只要30分钟就可以用起来了,对于这种软件,用它,才是最好的学习方式。
对于emacs.
我是用了两年vim之后接触emacs的,到现在也用了2,3年的emacs了,对我来说emacs是程序员最好的玩具,最好的学习平台,整个程序的功能都能及时的调整,所有的操作,按键响应,函数调用都能立马找到对应的源码,大部分功能都是elisp写的,修改了可以立马起作用,不需要重新编译,小部分c源码,在下载了对应的源码或者自己编译的emasc上,查询函数的时候emacs可以直接转到对应的源码,没有比这个更好的学习平台了,emacs就像一本emacs lisp的书中说的那样更适合被称为“可扩展的计算环境”,它本身就有很大的学习价值,ruby之父就是研究emacs之后学会了写编译器。[翻译] Emacs改变了我的人生 (发生在Emacs和Ruby之间的故事)
但是emacs对于初学者来说真的很反人类,C-n C-p上下行的方式远没有vim的j,k方便,我在很长很长以后才习惯,但是emacs的优点并不像vim一样在于按键的精短,甚至一度被vim用户嘲讽为在弹钢琴,emacs厉害的是它的扩展性,和其智能程度,就cc-mode中的';'号自动换行和hungry delete,也就是自动删除光标前多余的空白符,我在其他的软件里都没遇到过,用了一次就深深的爱上。
现在的人总是很痛苦,vim/emacs只是个编辑器,却非要整上IDE的高级功能,好吧,我就是这样的人,我在这条路上边用vs边纠结了好长的时间,之前的emacs上一直没找到性能靠谱、基于语义的定义跳转、查询和自动补全,直到最近我终于找到解决的方案,在这里贴上来,拯救拯救同样在这条路上纠结的人。
专门写了一篇博客了说明自己的emacs的c/c++环境配置:
Emacs configure for c++
redhat9i
发表于 2021-8-10 16:38
最近在PX4基础上做直升机版,我自己的代码只有一千行的样子,整个开源项目几十万行,主要是CCPM混控,十字盘校准。
这个工程的开发我一般是CLion+Vim完成的,因为事实上vim的大部分代码补全插件都跟JB家不是一个水准的,于是代码阅读和涉及到底层的部分我一般用开着vi mode的CLion完成,虽然操作迟缓点…然后算法部分用Vim完成…
我必须这样做的另一个原因是整个项目的编译十分缓慢,没有CLion给我分析我会不停的犯语法错误。
至于debug…寒假回去忘记带编程器了,根本没有debug好么…而且单片机上日志都没有的打,文件IO有点小 bug(后来发现一个线程只能打开一个文件)。一个小小的bug我查了三天。后来就好了。烧一次代码要两分钟的样子…