Neovim 与 Java 开发者的完美结合 🚀

本文详细介绍了如何将 Neovim 配置为强大的 Java IDE,包括插件选择、LSP 配置、AI 集成以及快捷键设置,帮助 Java 开发者提升编码效率与体验。

Neovim for Java Developers: A Match is made 🚀

你是否是一位被 Vim 的力量和效率所吸引的 Java 开发者?你想将开发体验提升到下一个级别吗?我的意思是完全脱离鼠标的风格!如果是这样,你来对地方了!在这篇文章中,我将深入探讨 Neovim 的世界,并探索如何将其转变为 Java IDE。老实说,这是一个学习之旅。我越学习,就越觉得需要分享这个东西有多酷!

我创建了一个名为 neovim4j 的新仓库,供任何想要入门的人使用。这是一个展示 Neovim 在 Java 开发中力量的绝佳起点,但请注意,我仍在学习,仍有一些粗糙之处。所以如果你有想法,请 fork、贡献、讨论或随意使用。⭐⭐

为什么选择 Neovim?

多年来,Vim 一直是重视速度和效率的开发者的首选编辑器。凭借其模态编辑和强大的键绑定,它让你可以双手保持在键盘上,专注于代码。Neovim 作为 Vim 的一个分支,更进一步。它是一个高度可扩展的平台,拥有活跃的社区。

Neovim 最显著的改进之一是对 Lua 作为配置语言的一流支持。虽然 Vimscript 很强大,但 Lua 是一种更现代、更具表现力的语言,使得配置 Neovim 变得轻而易举。这催生了一代新的插件,比以往更快、更强大、更容易配置。

灵感来源: 这个配置的灵感来自 Melkeydev 的 Neovim 仓库和 YouTube 演讲“How I use Neovim in 2024”。它旨在为想要开箱即用强大编辑器的开发者提供一个初学者友好的设置。

结构和配置

配置结构如下。我使用 init.lua 来加载 neovim4j 目录中的所有内容。这是一个有趣的学习过程,因为 Lua 似乎会加载这个目录中的所有内容,并将其视为依赖项。例如,core/init.lua 加载键映射和选项。

1
2
3
neovim4j/init.lua(基本上加载以下内容)
neovim4j/core/init.lua
neovim4j/plugins/init.lua

这让我更容易理解!🤩

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
init.lua
lua/
  neovim4j/
    init.lua
    lazy.lua
    core/
      init.lua
      keymaps.lua
      options.lua
    plugins/
      <plugin>.lua
      lsp/
        mason.lua
        lspconfig.lua

让我们看看一些关键的插件和功能:

Leader 键

始终重要的是记住,Leader 键设置为 <Space>。它作为自定义快捷键的前缀,使得命令易于记忆和执行。此外,每次按下 <Space> 时,它会加载一个菜单列表,你可以清楚地看到接下来可以按哪个键来执行操作。

我使用 <Space> 作为 leader 键,但你不必这样做。它在 neovim4j/core/keymaps.lua 中设置如下:

1
2
-- set leader key to space
vim.g.mapleader = " "

好的,让我们看看我目前启用的一些键绑定。

初学者的基本键绑定

模糊搜索(Telescope):

  • <leader>fp — 查找文件
  • <leader>fr — 最近文件
  • <leader>fs — 实时 grep

文件浏览器(Nvim-tree):

  • <leader>ne — 切换文件浏览器

终端(ToggleTerm):

  • <leader>CTRL+7 — 打开终端

Gradle 构建(如果配置):

  • <leader>gb — 运行 Gradle 构建

Neovim 中模糊搜索的截图,你可以随时按 ESC 退出。但一旦选择文件,它会为你打开。

Java 配置

neovim4j 配置使用各种插件来提供功能丰富的开发环境。以下是一些亮点:

nvim-lspconfig: 这是我们类似 IDE 体验的基础。它配置了语言服务器协议(LSP),提供代码补全、诊断和跳转到定义等功能。对于 Java,此配置使用 jdtls,即来自 Eclipse JDT 项目的 Java 语言服务器。

neovim4j/plugins/java.lua 使用 nvim-java 并定义了一些键。

nvim-java: 这个插件带来了很多好东西,如测试、调试、调用层次结构等。

  • <Leader>jt:运行测试,还有变体如 jm 和 jT
  • <Leader>th:类型层次结构,ch 用于调用层次结构
  • <Leader>db:切换断点
  • <Leader>dc:继续
  • <Leader>di:步入
  • <Leader>do:步过
  • <Leader>dr:打开 REPL

telescope.nvim: 这是一个强大的模糊查找器,允许你快速搜索文件、缓冲区等。它是导航大型项目的必备工具。

nvim-treesitter: 这个插件提供高级语法高亮和代码解析。它理解代码的结构,从而实现更准确和智能的功能。

gitsigns.nvim: 这个插件在标记列中显示 git 差异,让你轻松查看自上次提交以来的更改。

如今,没有聊天机器人或编码助手,一切都不完整。所以这里来了。

AI 集成

此配置提供了与两个强大 AI 工具的无缝集成:GitHub Copilot 用于代码补全,以及 ChatGPT.nvim 用于对话式 AI 和代码编辑。

ChatGPT.nvim(OpenAI)

要使用 ChatGPT 功能,必须在启动 Neovim 之前将你的 OpenAI API 密钥设置为环境变量:

1
export OPENAI_API_KEY="your-api-key-here"

配置设置了默认模型(例如 gpt-4.1-2025-04-14),但如果你喜欢不同的模型,可以在插件设置中更改。

有用的 ChatGPT.nvim 键绑定:

  • <leader>ac — 开始 ChatGPT 聊天
  • <leader>ae — 使用指令编辑选定的代码(可视模式)
  • <leader>ag — 使用 ChatGPT 完成代码
  • <leader>ax — 解释选定的代码(可视模式)

GitHub Copilot

要认证或重置你的 Copilot 凭据:

  1. 打开 Neovim。
  2. 运行认证命令:
    1
    
    :Copilot auth
    
    这将提供一个用户代码和一个 GitHub URL。在浏览器中打开 URL 并输入代码以授权 Neovim。
  3. 授权后,在 Neovim 中检查状态:
    1
    
    :Copilot status
    

开始使用 Neovim

如果你是新接触 Neovim,有很多资源可以帮助你入门。以下是我们最喜欢的一些:

  • 官方 Neovim 文档: 最好的起点是官方文档。它写得很好且全面,会教你入门所需的一切。你可以在 Neovim 中运行 :help 来访问它。
  • Vim Tutor: 如果你是新接触 Vim 风格的编辑,vimtutor 是学习基础的好方法。它是一个交互式教程,大约 30 分钟教你基本命令。
  • Awesome Neovim: 这是一个精心策划的 Neovim 插件和资源列表。它是发现新插件和为你自己的配置寻找灵感的好地方。
  • 社区论坛: Neovim 社区非常活跃和乐于助人。如果你有任何问题,一定要查看 Neovim subreddit 和 Neovim Gitter 频道。

结论

试一试,亲自体验吧!祝你在 Neovim 中编码愉快!

← 上一篇文章

目录

  • 为什么选择 Neovim?
  • 结构和配置
  • Leader 键
  • 初学者的基本键绑定
  • Java 配置
  • AI 集成
  • ChatGPT.nvim(OpenAI)
  • GitHub Copilot
  • 开始使用 Neovim
  • 结论

特色标签 administrator, ant, automation, build, cache, ci, command, computers, continous, design, design-patterns, docker, engineering, fedora, gof, how-to, howto, ibm, infinispan, integration, jacl, java, jdbc, jdk-21, jython, kubernetes, llm, migration, mq, openjdk, openshift, patterns, programming, quarkus, redhat, release, rhel, scm, scripting, singleton, singleton-pattern, software, software-development, svn, sysadmin, tips, tools, utils, websphere, wsadmin

版权所有 © Shaaf’s blog 2025

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计