✨ Neovim Cursor for JetBrains IDE

将 Neovide 风格的光标拖尾与弹性动画 带到 JetBrains 全家桶!光标移动时会拖拽出一条带有柔和发光边缘的动态拖尾,在击键与跳转间带来极致丝滑的编码质感。

全面兼容 IntelliJ IDEA、PyCharm、CLion、WebStorm、GoLand、Rider 等 JetBrains 全系 IDE(2024.2 – 2026.2+ 全线实测支持)。


📺 演示与安装教程视频


🔗 项目开源主页


🌟 核心特性

光标在编辑器中移动或打字跳转时:

  • 动态拉伸拖尾 (Trail):光标矩形根据移动方向自适应拉伸成不规则四边形(基于阻尼弹簧动力学模型);
  • 平滑跟随 (Smooth Follow):非机械瞬间跳跃,而是伴随柔和阻尼曲线自然回弹收拢;
  • 边缘柔和辉光 (Glow):拖尾四边周围附带柔和光晕(精准模拟 Canvas 的 shadowBlur 漫反射),光标移动展开时发光增强,光标停止停驻时柔和渐隐;
  • 原生光标透明隐藏:自动隐藏 IDE 原生硬朗的插入点,避免原生光标与拖尾动画叠影打架。

所有核心配置项参数语义均与 VS Code neovide-cursor 插件保持一致,跨编辑器迁移时无需重新适应。


🎭 双拖尾模型支持(随时在菜单切换)

为了兼顾不同机器性能与视觉偏好,本插件内置两种计算模型:

模型运作原理适用场景与特性
Spring(弹簧模型·默认)光标矩形的四个角点各自挂载独立的阻尼弹簧,按移动矢量分配滞后因子,实现弹性拉伸四边形纯正的原版 Neovide 动效质感;依赖连续平稳的帧间插值
Afterimage(残影模型)逐帧采集光标的绝对坐标,沿移动轨迹绘制一串透明度渐次衰减的半透明光标虚影在低帧率或负载突发掉帧时依然精准不漂移;边缘光晕边界更为清晰利落

两种模型共享同一套底层渲染流水线(浮层挂载 Overlay、原生光标静音、高精度纳秒定时器调度、局部脏矩形 Repaint)。用户可在 IDE 状态栏或设置菜单中一键无感切换。


📦 安装与配置指引

方式一:从 Releases 下载(最推荐)

  1. 前往 GitHub 仓库 Releases 页面 下载最新的 *.zip 插件包;
  2. 打开 JetBrains IDE(IDEA / PyCharm / CLion / WebStorm 等);
  3. 打开设置:Settings(Windows 下快捷键 Ctrl + Alt + S)→ Plugins;
  4. 点击界面顶部的齿轮图标 ⚙️ → 选择 Install Plugin from Disk...;
  5. 选中下载好的 ZIP 压缩包,确认并重启 IDE 即可开启光标拖尾!

方式二:从源码构建

# 构建前置依赖:JDK 21, Gradle 9.0+, IntelliJ Platform Gradle Plugin 2.x
git clone https://github.com/yyyyolo7a79-sketch/neovim-cursor-for-jetbrains.git
cd neovim-cursor-for-jetbrains

./gradlew buildPlugin
# 构建产物生成在: build/distributions/*.zip

如果开发机已有本地安装好的 IDE,可在 build.gradle.kts 中直接指定本地路径,跳过数 GB 的依赖镜像拉取:

dependencies {
    intellijPlatform {
        local("D:/develop/JetBrains/IntelliJ IDEA 2025.2") // 指向你的本地安装目录
    }
}

🧩 平台兼容性解析

全面兼容 JetBrains 2024.2 至 2026.2+ 全系列版本

IDE 名称兼容测试版本支持状态
IntelliJ IDEA (Community / Ultimate)2024.2 – 2026.2+✅ 深度实测
PyCharm (Community / Professional)2024.2 – 2026.2+✅ 深度实测
CLion2024.2 – 2026.2+✅ 深度实测
WebStorm / GoLand / Rider / DataGrip2024.2 – 2026.2+✅ 核心 API 兼容

为什么能通杀 JetBrains 全家桶?

本插件在架构设计之初就坚持了极简依赖原则:仅声明依赖核心平台层模块 com.intellij.modules.platform,不触碰任何特定编程语言专有的 AST/PSI 解析,也不调用任何 IDEA Ultimate 专属商业接口。只要运行在 2024.2+ 的 IntelliJ Platform 底座之上,均可稳定加载。


💡 开发复盘与性能架构思考 (Lessons Learned)

在基于 Java Swing / AWT 渲染管线移植 Neovide 动效的过程中,我们记录了几个核心工程坑点与解法:

  1. Swing 渲染 vs Electron DOM 的差异:

    • VS Code 版本运行在 Chromium 之上,可以充分利用 CSS3 硬件加速与 Canvas GPU Shader;
    • JetBrains 采用纯 Java Swing 双缓冲绘制,若频繁触发全屏 Repaint 会严重拉低编辑器的打字响应速度。
    • 解法:我们实现了局部脏矩形(Dirty Rect)动态计算,只将当前光标与拖尾覆盖的最小外接矩形提交给图形管线重绘,将 CPU 消耗压至最低。
  2. 多显示器高 DPI 缩放下的像素对齐:

    • Windows 环境下 125%、150% 等非整数缩放率极易导致浮点坐标下舍入误差,产生拖尾边缘毛刺或残留细线。
    • 解法:利用 JBUIScale.sysScale() 统一规范坐标转换基准,确保在 4K 高分屏下边缘发光依然保持细腻无伪影。