SpaceVim踩坑之java代码格式化

2023-05-16

个人理解:SpaceVim是一套不错的vim插件集合。
也是因为有SpaceVim才让我入门vim,爱上vim。

一直想实现ssh远程服务做开发调试这件事情,SpaceVim让我看到了这个想法的可行性。实践的过程中遇到一此小坑,记录一下,让后来人少走弯路。

环境

理论上环境是通过的,大同小异。我的环境是:

项目Value
系统macOS Big Sur 11.2
vimVIM - Vi IMproved 8.2
SpaceVimversion : 1.7.0-dev

解决方案一(官方推荐)

  1. 下载 google-java-format
    我的保存路径如下:~/.SpaceVim.d/lib/google-java-format-1.9-all-deps.jar
    这个路径放哪里行,我主.SpaceVim.d目录为了方便我后期移到其他机器上使用。
  2. 配置文件vim ~/.SpaceVim.d/init.toml增加一行

[[layers]]
name = “lang#java” 下面增加如下一行。

 java_formatter_jar = "~/.SpaceVim.d/lib/google-java-format-1.9-all-deps.jar"

在这里插入图片描述
重启nvim编辑java文件这下可以java代码格式化了。
可以通过:Neoformat格式化,或者快捷键:空格 b f

解决方案二(摸索出来的)

为了快速解决,直接上解决方案,有兴趣的也可以看下一节的探索过程。
第一步:编辑下面文件:

vim ~/.SpaceVim/autoload/SpaceVim/layers/lang/java.vim

并把以下代码注释掉:

let g:neoformat_enabled_java = get(g:, 'neoformat_enabled_java', ['googlefmt'])
  let g:neoformat_java_googlefmt = {
        \ 'exe': 'java',
        \ 'args': ['-jar', s:java_formatter_jar, '-'],
        \ 'stdin': 1,
        \ }
  try
    let g:neoformat_enabled_java += neoformat#formatters#java#enabled()
  catch
  endtry

如图:
在这里插入图片描述
第二步安装 astyle
安装过程建议直接参考官网即可,我的实践记录见:《vim安装插件实现Java代码格式化》 仅供参考

然后就可以愉快的使用SpaceVim格式化java代码啦。
重启nvim编辑java文件这下可以java代码格式化了。
可以通过:Neoformat格式化,或者快捷键:空格 b f

探索过程

SpaceVim(Java)代码格式化
先看一下官网的使用说明:
https://spacevim.org/cn/use-vim-as-a-java-ide/

关于代码格式化的官方描述如下:


SpaceVim官方文档摘

代码格式化
基于 format 模块,可以使用 SPC b f 对当前代码进行格式化,format 模块主要包括插件 neoformat。 该插件提供了格式化框架,对于 java 的支持,还需要安装 uncrustify 或者 astyle。 同时,你也可以使用谷歌的 java formatter。

在这里插入图片描述


这个文档看起来很简单,但是在我执行代码格式化的时候会报如下的错:
Neoformat: formatters java failed to run
在这里插入图片描述
然后我又认真的看了一下文档,可能是回为我电脑上需要安装

  • uncrustify
  • astyle
  • 谷歌的 java formatter。
    其中之一吧。

看起来看简单的样子,然后我就尝试在Centos 7上安装uncrustify 然后依然报错。

Neoformat: formatters java failed to run

既然报错了,不慌还有两个选择。这次我想换个环境试试,换到我的macOS上做测试,为了知晓 neoformat的运行原理,我在纯净的vim上做安装 neoformat测试。
测试环境:
neoformat + astyle 比我想像中的还要简单,一次就成功啦。花了不到10分钟就搞定了。
详见:《vim安装插件实现Java代码格式化》

本以为这就搞定了,然后并没有,错误照旧。
看文档的意思是:只要安装了上面3个组件中的一种就可以了。那么为什么我正确的安装了astyle还是不行呢?

猜测1:neoformat版本不一样?
实测把我安装neoformat复制过去,问题依旧。

猜测2:SpaceVim在哪个地方配置了neoformat什么东西?
为了这个猜测我找呀找,果然验证了我的猜测。

~/.SpaceVim/autoload/SpaceVim/layers/lang/java.vim

这个文件中保存了java相关的neoformat配置。相关代码如下:

let g:neoformat_enabled_java = get(g:, 'neoformat_enabled_java', ['googlefmt'])
  let g:neoformat_java_googlefmt = {
        \ 'exe': 'java',
        \ 'args': ['-jar', s:java_formatter_jar, '-'],
        \ 'stdin': 1,
        \ }
  try
    let g:neoformat_enabled_java += neoformat#formatters#java#enabled()
  catch
  endtry

看到这个以后,有点上头,竟然是写死的googlefmt。那么官方说明文档java篇的我没有看到有说明,当然也有可能在其他地方有介绍只是我没有看到。比如:~/.SpaceVim/autoload/SpaceVim/layers/lang/java.vim文件的注释里是有介绍的。
在这里插入图片描述

然后解决办法就出来了,只要把这一段代码注释掉,问题就可以解决了。
在这里插入图片描述

总结

希望官方能把文档补全,让后来的人少走弯路。感谢SpaceVim的强大功能和不错的体验的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpaceVim踩坑之java代码格式化 的相关文章

  • ListView:防止视图回收

    我有一个使用回收视图的 ListView 我试图阻止视图被回收 所以我使用 setHasTransientState android support v4 view ViewCompatJB setHasTransientState Vie
  • 使用 Eclipse 将具有外部依赖项的 Java 项目导出到 jar

    有没有一种简单的方法可以将 Java 项目 包括其所有外部依赖项 导出到标准 jar 文件 我开发了一个使用多个 Apache 库的 SDK 我希望能够将该项目作为单个 jar 发布 到目前为止我找到的这个问题的答案要求将项目打包为 Run
  • Android CursorAdapter、ListView 和后台线程

    我一直在开发的这个应用程序有包含数兆字节数据的数据库可供筛选 许多活动只是列表视图 通过数据库中的各个级别的数据下降 直到到达 文档 即从数据库中提取并显示在手机上的 HTML 我遇到的问题是 其中一些活动需要能够通过捕获击键并重新运行带有
  • Spring @Validated 在服务层

    Hej 我想使用 Validated group Foo class 在执行方法之前验证参数的注释 如下所示 public void doFoo Foo Validated groups Foo class foo 当我将此方法放入 Spr
  • 如何停止使用扫描仪从标准输入读取多行?

    我正在做一个 JAVA 作业 应该处理多行输入 指令显示 输入是从标准输入读取的 给出了示例输入的示例 one 1 two 2 three 3 我不明白上面的示例输入 从标准输入读取 是什么意思 这是我编写的一个测试程序 它可以消除我的困惑
  • 我应该使用 JDBC getNString() 而不是 getString() 吗?

    我们正在构建一个由 Oracle 数据库支持的 Java 应用程序 我们使用 JDBC 驱动程序 访问该数据库ojdbc6 jar and orai18n jar 数据库模式主要使用以下方式存储文本列NVARCHAR2数据类型 The JD
  • 如何修复maven错误JAVA_HOME环境变量未正确定义

    当我在虚拟环境中检查maven的版本时 出现以下错误 The JAVA HOME environment variable is not defined correctly This environment variable is need
  • java 中的 Try-with-resources 和 return 语句

    我想知道是否放一个return里面的声明尝试资源block 防止资源自动关闭 try Connection conn return conn createStatement execute 如果我写这样的东西将会联系被关闭 Oracle 文
  • 使用java在网页中进行字符编码

    如何使用java找出网页中的字符编码类型 打开与 URL 的连接 使用URL openConnection http download oracle com javase 6 docs api java net URL html openC
  • Hazelcast:连接到远程集群

    我们有一组 Hazelcast 节点 全部运行在一个远程系统 具有许多节点的单个物理系统 上 我们希望从外部客户端连接到该集群 一个 Java 应用程序 它使用如下代码连接到 Hazelcast ClientConfig clientCon
  • EJB 中 @Stateless 相对于 @Singleton 的真正用例是什么

    如果我正确理解EJB Singleton实际上与普通Java中的Singleton相同 也是spring中的单例 gt 一个实例 每个调用同时通过同一个实例 Stateless 声明一个 bean 它可以 但不得 具有多个实例 但限制是一个
  • Java8 项目上的 SonarQube 给出 jacoco-Exception

    我刚刚下载了最新版本 SonarQube 4 3 然后尝试使用以下命令构建 java 8 项目 mvn clean install mvn sonar sonar 这给了我下面的例外 谷歌搜索 我的印象是这是一个早期的问题 应该已经解决 h
  • Java:java.util.Preferences 失败

    我的程序将加密的产品密钥数据保存到计算机上java util Preferences类 系统首选项 而不是用户 问题是 在 Windows 和 Linux 上 尚未在 OSX 上测试过 但可能是相同的 如果我不运行该程序sudo或者具有管理
  • java中的第三个布尔状态是什么?

    虽然我知道根据定义 布尔值仅包含两种状态 真或假 我想知道布尔值在用这些状态之一初始化之前有什么值 它默认为 false http java sun com docs books tutorial java nutsandbolts dat
  • Java给定长度的随机数

    我需要在 Java 中生成一个恰好 6 位数字的随机数 我知道我可以在随机发生器上循环 6 次 但是在标准 Java SE 中还有其他方法可以做到这一点吗 要生成 6 位数字 Use Random http download oracle
  • 测量 tomcat 的排队请求数

    因此 使用tomcat 您可以设置acceptCount值 默认为100 这意味着当所有工作线程都忙时 新连接被放置在队列中 直到队列满 之后它们被拒绝 我想要的是监视此队列中项目的大小 但无法确定是否有办法通过 JMX 获取此值 即不是队
  • Javac 版本 1.7 无法为目标 1.7 构建

    我试图在 Linux Mint 系统上使用 Sun Java JDK 1 7 0 17 编译 Java 代码 但遇到了这个问题 javac version target 1 7 javac 1 7 0 17 javac invalid ta
  • 尝试使用 Spring 和扩展 Hibernate JpaRepository 的自定义 GenericDao 接口来使用 EhCache

    背景 这是我的工作 简化 GenericDao接口 由任何实现DomainDao 通用Dao java NoRepositoryBean public interface GenericDao
  • 接口中“不能降低继承方法的可见性”的含义

    我有两个文件 public interface PrintService void print PrintDetails details class PrintDetails private String printTemplate pub
  • 在 for 循环比较中使用集合大小

    Java 中 Collections 的 size 方法是否有编译器优化 考虑以下代码 for int i 0 i

随机推荐

  • ubuntu安装zsh

    更新一下 apt span class token operator span get update 安装zsh apt span class token operator span get install zsh 切换使用zsh 查 zs
  • macOS使用SpaceVim配置java开发环境爬坑

    我在ubuntu中配置SpaceVim开发环境 xff0c 还算顺利 但是在macOS下面搭建java的环境时却遇到点小坑 报错网上貌似也没有搜索到 配置java开发环境时报错 报错信息的一部分 xff1a Error from Langu
  • macOS中SpaceVim搭建java开发环境

    安装JDK11 过程略 xff0c 可参考 xff1a https blog csdn net lxyoucan article details 111120215 macOS安装支持Python 3的neovim 为什么不用 vim 因为
  • Vim用来当SQL Server Client?

    最近迷上了Vim 了 xff0c 感觉它有无穷无尽的玩法 那么它可以用来简单的查oracle 数据库吗 xff1f 因为有一些现场只有ssh远程 xff0c 如果直接在命令行 sqlplus用来查 xff0c 总感觉体验不是很好 如果可以使
  • 荣耀MagicBook2019+Manjaro20.1KDE初始设置一文流

    荣耀魔法书2019 43 Manjaro20 1KDE初始设置一文流 文章目录 荣耀魔法书2019 43 Manjaro20 1KDE初始设置一文流写在前面为什么要在博客记录本文 配置源和系统更新修改源排名添加archlinux仓库安装ya
  • Oracle修改密码

    sysdba登录 sqlplus nolog conn as sysdba 修改system密码为manager SQL span class token operator gt span alter user system identif
  • oracle查用户列表

    sysdba登录 sqlplus nolog conn as sysdba 查看用户列表 xff1a SQL span class token operator gt span span class token keyword select
  • macOS中配置oracle客户端与sqlplus

    下载 官网下载地址 xff1a https www oracle com database technologies instant client macos intel x86 downloads html 下载自己需要的版本的 个人建议
  • Sqlplus替代者SQLcl

    图形化的Oracle客户端工具很多 xff0c 比如 xff1a PL SQL 在命令行的查询工具SQLplus大家应该都知道的 说真的我在用SQLplus的时候感觉真难受啊 勉强能用 修改SQL或者查看历史语句都不行 xff0c 放方向键
  • Windows 10 LTSC官方版本下载地址

    原版下载地址 64位 xff1a ed2k file cn windows 10 enterprise ltsc 2019 x64 dvd d17070a8 iso 4290967552 9E80DED85693E8E4E0D76E55B1
  • MacVim永久保存字体设置

    不知道有没有小伙伴 xff0c 跟我一样 很疑惑为什么MacVim中的设置每次重新打开就会重置 每次重新打开我就要设置一下MacVim的字体和字体大小来正常显示我的powerline字体 这样就很麻烦了 xff0c 有没有什么办法可以永久保
  • CentOS 安装vim8 + python3

    前言 CentOS 使用yum 安装的vim版本比较低 xff0c 有一些vim插件都要求vim 8 43 的版本 所以我们还是需要安装一下新版本的 步骤 卸载原来的vim yum remove vim 安装依赖关系 yum install
  • Centos安装nvim并支持python3

    在使用SpaceVim 官方推荐使用neovim xff0c 那咱就安装一个呗 下载安装包 https github com neovim neovim releases latest 我这里下载的是 xff1a 安装 root权限执行以下
  • macOS下vim 中文输入法切换问题和两种解决方案

    vim好用是好用 xff0c 就是跟中文输入法配合的不算太好 有没有什么解决办法呢 xff1f 我今天就尝试解决一下 先上效果 xff1a 方法一 xff1a xkbswitch macosx安装过程 解决恼人的 vim 中文输入法切换问题
  • macOS中vim安装deoplete报错 E605

    https github com Shougo deoplete nvim 错误信息 vim hug neovim rpc Vim pythonx ModuleNotFoundError No module named neovim 处理
  • 使用pip命令都会显示AttributeError: type object 'Callable' has no attribute '_abc_registry'错误?

    问题 xff1a 使用pip命令都会显示AttributeError type object 39 Callable 39 has no attribute 39 abc registry 39 错误 xff1f 不知道什么鬼 xff01
  • [vimproc].SpaceVim/bundle/v...4.so“ is not found:help vimproc and make it.

    项目场景 xff1a 项目Value操作系统1CentOS7操作系统2macOS Big Sur 11 2NeoVimNVIM v0 4 4SpaceVim1 7 0 dev 我在CentOS7和macOS上都遇到这个问题了 xff0c 最
  • CentOS 7安装 CMake

    下载CMake 访问https cmake org download span class token function wget span https cmake org files v3 12 cmake 3 12 3 tar gz C
  • vim安装插件实现Java代码格式化

    最近迷上了使用vim开发java代码 已经使用了一段时间了 xff0c 平时自己写代码时会手动调整格式 xff0c 代码自动格式化一直没有使用过 如果频繁copy代码 xff0c 代码格式化还是很有必要的 这里要感谢一下SpaceVim 不
  • SpaceVim踩坑之java代码格式化

    个人理解 xff1a SpaceVim是一套不错的vim插件集合 也是因为有SpaceVim才让我入门vim xff0c 爱上vim 一直想实现ssh远程服务做开发调试这件事情 xff0c SpaceVim让我看到了这个想法的可行性 实践的