【问题标题】:On-the-fly Java syntax checking in vimvim 中的即时 Java 语法检查
【发布时间】:2017-02-02 17:45:00
【问题描述】:

首先,请不要对我大喊“使用 IDE”。我给了 eclipse 一个机会,它是......好吧,但我在 vim 中比 eclipse 快得多。

基本上,我希望 vim 能做到 eclipse 所做的一件事就是动态检查语法。在 Eclipse 中,如果您有语法错误,则该行会给出一个错误标记,并且顶部的文件名会显示一个红色的小东西,让您知道有错误。我一直试图在vim中得到这个。我看过 syntastic(它没有 Java 检查器),但我似乎无法让它工作。所以问题仍然存在......

每次我用 vim 保存文件时,有什么方法可以检查语法吗?希望它显示在状态行中,命名有多少错误以及第一个错误在哪一行...

【问题讨论】:

  • 你也应该看看:viplugin.com/viplugin。我很喜欢。它为我提供了 Eclipse 功能和大部分 VI 命令集。
  • 我非常平静地说,因为您的编辑由您决定。 Eclipse 确实有允许您在文本编辑器中使用 vi/vim 键绑定的插件;这可能会让你两全其美。
  • 您是否考虑过在每次保存时使用:autocommand 进行编译的可能性?
  • 您是否认为 Eclipse 不是唯一的 Java IDE,而且远非最好的?
  • @romainl 我还没有想到这种可能性。您是否有任何示例说明我如何做到这一点,然后以某种方式将错误输入状态行?

标签: java vim syntax


【解决方案1】:

我意识到这已经有一个公认的解决方案,但 vim 纯粹主义者可能更喜欢使用Syntastic

它已针对 PHP、Java 等许多常用语言进行了预配置。只是想我会把它留在这里以防其他人有同样的问题但不想运行无头 Eclipse 服务器来实现它.

【讨论】:

  • 我确实看过 Syntastic,但由于某种原因我无法让它工作。不过谢谢提醒,我可能会回顾一下。
  • 不用担心。如果您有任何问题,请随时在此处或 Google 群组上发布问题,我会尽力提供帮助。
  • 据我所知,Syntastic 不支持 Java。如果我错了,请纠正我,因为我真的想在这个问题上错了..
  • 确实如此,我用它做了很多 Java 开发。
  • 它适用于 Java。要尝试它,请打开任何 Java 文件。然后在命令模式下,输入:SyntasticCheck
【解决方案2】:

我还没有尝试过,它可能有点矫枉过正,但仅供参考,有一个 Eclim 项目试图将 Eclipse 的功能引入 vim。它声称拥有Java Validation 以及更多功能,包括code completioncode correction

【讨论】:

  • Eclim 在这方面做得很好。我用了一段时间,但最后还是放弃了它,因为它让我的速度太慢了(请注意,不像 Eclipse 那么多)。您还可以从使用 Vim 的 make(Java 链接到 ant)中受益,从而更轻松地构建和修复错误。
  • 同意 eclim 不会帮助你。发现使用 ctags 更好。也许将来会开始使用 cscope。
【解决方案3】:

新的 JavaComplete 插件可以为您提供对 Java 的一些支持,包括对 Java 8 的支持。

【讨论】:

    【解决方案4】:

    我是 Java 新手,在尝试了一些 IDE 之后,我又回到了 vim。到目前为止,我对这两个插件有很好的体验

    • javacomplete2 - 提供omnicompletion 和许多函数来自动添加导入语句、生成getter 和setter 等。
    • Neomake - 处理异步代码检查,在 Neovim 或 Vim 8 中使用异步支持(我还没有在 Neovim 中尝试过,但我认为它应该可以工作)

    还应该安装一个好的自动完成插件(我有 javacomplete2 与 YouCompleteMe 配合得很好)

    为了让这两种方法都能正常工作,我的 .vimrc 中有以下内容:

    augroup java
      au!
      autocmd FileType java setlocal omnifunc=javacomplete#Complete
      autocmd BufReadPost,BufWritePost *.java :NeomakeFile
      # ...
    augroup end
    

    在使用 Neomake 之前,我尝试使用 Syntastic 进行 linting。但是那个插件没有异步支持,因此在写入文件后,我必须等待一秒钟左右才能让我的 vim 响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      相关资源
      最近更新 更多