Vim 中 搭建的 Java 开发环境,支持代码补全,语法检测,简单重构等特性

2017-07-29 15:37:48 +08:00
 lazzyboy

本文主要介绍 SpaceVim 中为 java 开发所提供的各种调试,重构,代码补全以及语法检测的功能。

代码补全

在 SpaceVim 中,打开 java 文件后会自动分析项目结构,分析项目的 classpath,目前支持 maven,gradle 以及 eclipse 项目。在 SpaceVim 内你可以补全对象的函数,并且可以补全重载函数,提示函数的参数结构,补全后可以展开参数。以下为一个效果图:

语法检查

语法检测提供两种模式,一种实在编辑过程中实时监测,另外一种是在保存文件时进行语法检测,效果图如下:

代码重构

SpaceVim 项目仓库地址: SpaceVim/SpaceVim

SpaceVim 用户 QQ 群:121056965

5504 次点击
所在节点    Vim
30 条回复
tlpmania
2017-07-30 09:53:37 +08:00
为什么要连服务器改代码啊兄弟 正确的流程不是提交 reivew 合并再推上服务器吗
sagaxu
2017-07-30 12:33:32 +08:00
@lazzyboy 你们可以服务器上改代码?我们没有权限直接改,只能提交到 git 走发布系统,而且后端都是集群,最少 3 台机器,一台台改真吃不消。
liuhuansir
2017-07-30 16:19:45 +08:00
大大小小待过 5 家公司,还没见过哪家需要直接连服务器直接修改代码的,最多也就是改下配置文件,所以实在难以理解你们的这个需求
tracyone
2017-07-30 19:38:24 +08:00
@liuhuansir 只能说你还见不够多。
DarkAlexWang
2017-07-30 22:27:18 +08:00
@lazzyboy 兄弟做得不错,看得出来花了非常多的时间制作和维护,继续加油。
另外我想问下,因为我习惯了一些我自己的 key binding 和配色设置,所以没有直接安装你的这个 spacevim,但是如果我对其中的某些模块感兴趣,不知道有没有什么办法能借鉴一下的?
lazzyboy
2017-07-31 08:08:26 +08:00
@DarkAlexWang spacevim 的配置是模块化的,你可以只载入你想要的模块,常用的插件配色都有,你可以看看 spacevim 的文档,了解下如何配置,你也可以添加其他插件和 key bindings
KentY
2017-08-29 16:56:39 +08:00
首先, 肯定楼主下功夫研究这个的精神. 不过, 从实用角度说, 这个写简单的 project 可能可以, 比如教学的例子啊, 依赖不是很多的 prototype 啊, 如果真是实际的 project, 各种 framework, unittest, debug/remote debugging, Java 还得 IDE.

可能 Java 相关的文本编辑是目前我唯一不用 vim 解决的了, 现在这个回复就是在 vim 里, 呵呵. 自己吃 Java 饭 20 来年了. 因为一切编辑都熟悉了 vim, 很久前就开始尝试 Eclipse, eclim, eclipse+viPlugin 直到公司统一用 jetbrain 的东西, intellij+ideavim, 我觉得我个人满意度已经到 8,9 成了. vim 作为个编辑器, 一个简单的 intellij 的功能, 如果要 vim 自己实现, 要费很大劲, 而且即使做到了, 效果跟 ide 比也有很大差距. 而且还有随口就能说出的常用功能用 vim 几乎很难做到.

如果目的不是练手儿, 而是真正使用, 纯 vim 的"Java IDE" 可用性真的不怎么大.

my two cents
lazzyboy
2017-08-31 21:46:22 +08:00
@KentY 其实理论上大家都是这么想得,并且很多人也说了 vim 仅仅是 text editor, 但是如果我们细细去想一下,IDE 世界也就是一个前台界面,和后台逻辑之间的通信,现在很多语言的后台部分,都支持 cli 模式,而 neovim 和 vim 都加入的 job 等异步机制,我觉得完全可以以此建立一个 IDE,当然,这前提是你是一个爱折腾的人。
KentY
2017-09-06 17:33:59 +08:00
@lazzyboy 你跟我说的不是同一件事. 我没说 vim 做不了, 而是很难做到现在 ide 的 usability, 毕竟"折腾"出来的东西(作品), 是要用来做 java 开发的, 不是能用, 得是好用. 或者, 就举个常用的 intellij, 通过配置 vim 来写 java 项目, 就说个最常见的 Java EE 项目吧, 弄几个 EJB, 数据库来回读写, 再弄几个 WS, 这是最常见的了. 你如果现在必须要写这个 Java 项目, 从 0 开始, 你是用你配置好的 vim 还是 intellij/eclipse?

就说 intellij 对这个项目所需要的那些 features, 我估计你用 vim 都做到了要比这个 java 项目本身的工作量大出 n 倍去, building, code refactory, wsdl generation, jaxb/json/xml/pojo generation, 各种不同的 code completion, call hierarchy 不同形式现实, unittest 集成, 远程调试... 这些都是很常用的, 还不说那些细小的, 比如 debugger 的绝大部分功能, 比如鼠标参与的很多功能.

主要意思就是, 通过配置(你说的折腾)来熟悉 /学习 vim 脚本, ok, 但是出来的这个东西在 java 开发上易用性, 生产率角度看, 用处不大. 就好像, 学 java, 写个通讯录练手, 目的是熟悉这个技术, 而不是要通讯录多好用一样.

说的有点多了. 言多语失, 如有冒犯, 还望担待.
lazzyboy
2017-09-06 20:49:04 +08:00
@KentY 我能理解,这个也看个人爱好,以及个人时间安排是吧。在国内,程序员都比较辛苦,各种项目敢的不得了,所以很难有时间折腾,不过你看国外的程序员,还是很爱折腾的,包括 neovim 包括以此衍生出来的 oni gonvim 等等。而 wsdjeg 的 spacevim 对我来说还是比较合适的,我不写 vim 脚本,但是我想用 vim,我就需要一个配置好的 自定义程度高的,这种自定义不应该涉及太多的 vim 脚本知识。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/378844

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX