本文主要介绍 SpaceVim 中为 java 开发所提供的各种调试,重构,代码补全以及语法检测的功能。
在 SpaceVim 中,打开 java 文件后会自动分析项目结构,分析项目的 classpath,目前支持 maven,gradle 以及 eclipse 项目。在 SpaceVim 内你可以补全对象的函数,并且可以补全重载函数,提示函数的参数结构,补全后可以展开参数。以下为一个效果图:
语法检测提供两种模式,一种实在编辑过程中实时监测,另外一种是在保存文件时进行语法检测,效果图如下:
SPC l a
SPC l ts
SPC l eq
SpaceVim 项目仓库地址: SpaceVim/SpaceVim
SpaceVim 用户 QQ 群:121056965
1
Guaidaodl 2017-07-29 15:51:44 +08:00
看起来很厉害啊。
|
2
weakish 2017-07-29 16:12:43 +08:00
> 代码重构
这些好像是补全? 重构一般是抽取变量、方法、改名等等。 |
3
lazzyboy OP 改方法名,我用的是全工程替换,抽取变量做的不多,目前支持:
局部变量 -> 方法参数 局部变量 -> 类变量 抽取方法的逻辑比较复杂,以后有机会再实现。 |
4
sagaxu 2017-07-29 16:29:10 +08:00 via Android
相比 idea,这个的优势是什么呢?
|
5
Lonely 2017-07-29 17:00:16 +08:00 via iPhone
哪些场景可以用到?
|
6
ldlood 2017-07-29 17:32:29 +08:00
好强悍啊
|
7
hellohello123 2017-07-29 17:38:33 +08:00
为什么不使用 Intellj + Vim 插件呢?
|
8
lazzyboy OP @hellohello123 因为用不到 gui 呀!
|
10
wangdu2012 2017-07-29 18:23:22 +08:00 via iPhone
idea 就好了。当然,如你这么多时间,搞一搞也是可以的
|
11
lowzoom 2017-07-29 18:24:49 +08:00
被 IntelliJ 爆成渣
|
12
initialdp 2017-07-29 19:45:03 +08:00 1
永远无法理解 Vim 用户的自虐心态。
|
13
ivechan 2017-07-29 19:47:58 +08:00
IDEA 的 vim 模式感觉已经做的不错了, 另外 vim 是自虐?
你把 vim 当成 IDE 你是自虐, 但是 vim 作为 editor 怎么自虐? |
14
scriptB0y 2017-07-29 22:37:32 +08:00
vim 跨文件跳转是怎么解决的
|
15
hyperdak288 2017-07-29 23:03:46 +08:00
@ivechan 楼主这种就是把 VIM 强行当 IDE 的自虐心态
|
16
solidsnake 2017-07-29 23:11:38 +08:00 via iPhone
VIM 熟练掌握的话,效率更高吧?
VIM 主要不卡顿吧,但是现在电脑性能过剩,IDE 也不怎么卡了吧? |
17
hujianxin 2017-07-29 23:41:29 +08:00
把时间都耽误在这些地方了
|
18
linux40 2017-07-30 07:48:18 +08:00 via Android
纸张,都说不用图形界面了,你们还想要什么理由?
|
19
lazzyboy OP @linux40 是呀,无法理解这些人,估计公司项目做多了,当我需要随身连多个服务器改代码的时候,我是不是要在每个服务器上装 gui ? 而且我也用不了服务器上 gui 呀,真逗的人!
|
20
chickplilita 2017-07-30 09:53:06 +08:00
idea 还剩 debug 优势,这个还是很难用 vim 做到的。不过 getter setter 还有模板做出来很厉害了。!!!
|
21
tlpmania 2017-07-30 09:53:37 +08:00 via Android
为什么要连服务器改代码啊兄弟 正确的流程不是提交 reivew 合并再推上服务器吗
|
22
sagaxu 2017-07-30 12:33:32 +08:00 via Android
@lazzyboy 你们可以服务器上改代码?我们没有权限直接改,只能提交到 git 走发布系统,而且后端都是集群,最少 3 台机器,一台台改真吃不消。
|
23
liuhuansir 2017-07-30 16:19:45 +08:00
大大小小待过 5 家公司,还没见过哪家需要直接连服务器直接修改代码的,最多也就是改下配置文件,所以实在难以理解你们的这个需求
|
24
tracyone 2017-07-30 19:38:24 +08:00
@liuhuansir 只能说你还见不够多。
|
25
DarkAlexWang 2017-07-30 22:27:18 +08:00
@lazzyboy 兄弟做得不错,看得出来花了非常多的时间制作和维护,继续加油。
另外我想问下,因为我习惯了一些我自己的 key binding 和配色设置,所以没有直接安装你的这个 spacevim,但是如果我对其中的某些模块感兴趣,不知道有没有什么办法能借鉴一下的? |
26
lazzyboy OP @DarkAlexWang spacevim 的配置是模块化的,你可以只载入你想要的模块,常用的插件配色都有,你可以看看 spacevim 的文档,了解下如何配置,你也可以添加其他插件和 key bindings
|
27
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 |
28
lazzyboy OP @KentY 其实理论上大家都是这么想得,并且很多人也说了 vim 仅仅是 text editor, 但是如果我们细细去想一下,IDE 世界也就是一个前台界面,和后台逻辑之间的通信,现在很多语言的后台部分,都支持 cli 模式,而 neovim 和 vim 都加入的 job 等异步机制,我觉得完全可以以此建立一个 IDE,当然,这前提是你是一个爱折腾的人。
|
29
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, 写个通讯录练手, 目的是熟悉这个技术, 而不是要通讯录多好用一样. 说的有点多了. 言多语失, 如有冒犯, 还望担待. |