emacs - 用vim来写java可行么?
问题描述
体验是否比eclipse差很多呢?用emacs写java体验也不会好么:(
问题解答
回答1:这个问题你去问 100 个 vimer(我指的是真正懂 vim 的玩家,不是普通使用者),估计 99 个都会告诉你:“可以,但并不适合。”(这是普适的答案,你应该相信)
但总会有那么一个百里挑一的 genius 会做出 99% 的人做不出的事情来,比如说这位:http://www.lucianofiandesio.c...
那么他做到的事情能完美代替 Intellij IDEA 或 eclipse 吗?答案是:不能——不过这要看对谁而言,对少数人来说,他们并不依赖那些 IDE 有的,但是 vim 没有并且很难去实现的东西(或者说实现的代价有点不值得),所以他们依然可以用 vim 写 Java 并且写得比很多人都快都好。话说回来,IDE 用成精的人也不会比 vim 慢,更不要说现在 IDE 都可以实现大部分的 vim 编辑模式——但 vim 有一些好处是 IDE 永远也无法企及的,轻、快、服务器几乎标配、远程连接立即可用……你精通 IDE 也许只能干好一件事,你精通 vim 鬼知道你都能干些什么!
那么问题来了:你是这类人吗?以上答案 Emacs 基本适用,在改造无限接近 IDE 这件事情上,Emacs 还能做得更极致一些。
回答2:曾经有一年时间做 Java Swing 开发,尝试过 2 个月时间脱离 IDE 转投 VIM 。其实答案和楼上一样,也和大部分人一样:可以,但并不适合。该折腾的插件,都折腾了,NerdTree、AutoComplete、Supertab、Snippets……或许是本人对 VIM 的理解还不够深入,也或许是各种其它原因,但还是有以下几个方面不方便:1. 文件切换不方便:虽然有 NerdTree,但在各种文件之间切换仍然不方便。不过可以用鼠标,但是用鼠标的话,还要 VIM 干嘛。2. 代码提示不方便:Java 的第三方 Jar 包出了名的多,虽然手动更改了 AutoComplete 代码,能让其提示 Jar 中的函数,但经常抽风提示不出来。即使提示,也没有方法注释、方法签名(无论哪一款 IDE 都会有方法注释和方法签名的吧),熟悉的方法还好,如果遇到第一次用的 Jar ,只能乖乖查官方 API 了。3. import 需要手动:用惯了 Eclipse 的一定知道,Ctrl + O,IDE 能自动帮助导入需要的包,如果有多个相同名称的 Java 类,还会提示。这一方面 VIM 暂时还没有这方面的插件(当然,如果有高人在,相信一定能开发出这样一款插件)。每次写完代码,编译时,都会出现大堆大堆的提示没有 import 。然后手动写 import 也是非常耗时的事情。4. 新建文件不方便:IDE 中,会根据选择的新建文件不同,根据不同的模版生成不同的文件。但是在 VIM 中,新建文件就是一空白文本文件,所有代码都要自己填写完整。 J2SE 项目还好,如果是 Web 项目,各种痛苦会等着你。5. 覆盖方法不方便:IDE 能够提示哪些方法可以覆盖,VIM 只能凭经验或者查询 API 了。
其实还有很多问题,只有折腾过的才知道。后来还是因为效率实在低下,又回到 IDE,不过好在现在的 IDE 都有 VIM 插件。在真正开始 VIM 工作之前,本人可是花了 2 周时间来调试和折腾 VIM 插件。只能说,其中的坑实在很多,慎入。
回答3:@TroyLiu 你说的这些问题都不是问题,在我的配置中,这些问题完全可以解决,而且解决方案比IDE里面效果要好;https://github.com/wsdjeg/Dot...
推荐一篇关于使用vim开发java程序的文章:
https://spacevim.org/2017/02/...
回答4:别折腾了,推荐eclipse和JetBrains。
回答5:可以,前提是Vunble那套东西你要玩的转
利益相关:重度vim使用者
回答6:可以,光写代码完全不成问题。只要你牛B到不需要调试功能。在牛B的VIM配置,能搞出IDE的调试环境吗?
相关文章:
1. docker不显示端口映射呢?2. angular.js使用$resource服务把数据存入mongodb的问题。3. docker images显示的镜像过多,狗眼被亮瞎了,怎么办?4. Docker for Mac 创建的dnsmasq容器连不上/不工作的问题5. 在windows下安装docker Toolbox 启动Docker Quickstart Terminal 失败!6. angular.js - angular内容过长展开收起效果7. 新手学习vue和node.js的困惑8. docker - 如何修改运行中容器的配置9. 为什么我ping不通我的docker容器呢???10. docker内创建jenkins访问另一个容器下的服务器问题