
✨ Neovim Cursor for JetBrains IDE
将 Neovide 风格的光标拖尾与弹性动画 带到 JetBrains 全家桶!光标移动时会拖拽出一条带有柔和发光边缘的动态拖尾,在击键与跳转间带来极致丝滑的编码质感。
全面兼容 IntelliJ IDEA、PyCharm、CLion、WebStorm、GoLand、Rider 等 JetBrains 全系 IDE(2024.2 – 2026.2+ 全线实测支持)。
📺 演示与安装教程视频
- 🎬 B 站高清视频:适用于idea,pycharm的光标拖尾插件~ (BV1aKe16vELu)
视频内含实际打字拖尾效果预览与 PyCharm / IDEA 插件安装实操演示。
🔗 项目开源主页
- GitHub 仓库:yyyyolo7a79-sketch/neovim-cursor-for-jetbrains
- 最新 Release 下载:Releases (ZIP 安装包)
- 许可证:MIT License
- 前置项目致谢:
- 原 VS Code 插件:vscode-neovide-cursor
- VS Code 现代 CSP 修复版:neocursor-fix
🌟 核心特性
光标在编辑器中移动或打字跳转时:
- 动态拉伸拖尾 (Trail):光标矩形根据移动方向自适应拉伸成不规则四边形(基于阻尼弹簧动力学模型);
- 平滑跟随 (Smooth Follow):非机械瞬间跳跃,而是伴随柔和阻尼曲线自然回弹收拢;
- 边缘柔和辉光 (Glow):拖尾四边周围附带柔和光晕(精准模拟 Canvas 的
shadowBlur漫反射),光标移动展开时发光增强,光标停止停驻时柔和渐隐; - 原生光标透明隐藏:自动隐藏 IDE 原生硬朗的插入点,避免原生光标与拖尾动画叠影打架。
所有核心配置项参数语义均与 VS Code neovide-cursor 插件保持一致,跨编辑器迁移时无需重新适应。
🎭 双拖尾模型支持(随时在菜单切换)
为了兼顾不同机器性能与视觉偏好,本插件内置两种计算模型:
| 模型 | 运作原理 | 适用场景与特性 |
|---|---|---|
| Spring(弹簧模型·默认) | 光标矩形的四个角点各自挂载独立的阻尼弹簧,按移动矢量分配滞后因子,实现弹性拉伸四边形 | 纯正的原版 Neovide 动效质感;依赖连续平稳的帧间插值 |
| Afterimage(残影模型) | 逐帧采集光标的绝对坐标,沿移动轨迹绘制一串透明度渐次衰减的半透明光标虚影 | 在低帧率或负载突发掉帧时依然精准不漂移;边缘光晕边界更为清晰利落 |
两种模型共享同一套底层渲染流水线(浮层挂载 Overlay、原生光标静音、高精度纳秒定时器调度、局部脏矩形 Repaint)。用户可在 IDE 状态栏或设置菜单中一键无感切换。
📦 安装与配置指引
方式一:从 Releases 下载(最推荐)
- 前往 GitHub 仓库 Releases 页面 下载最新的
*.zip插件包; - 打开 JetBrains IDE(IDEA / PyCharm / CLion / WebStorm 等);
- 打开设置:
Settings(Windows 下快捷键Ctrl + Alt + S)→Plugins; - 点击界面顶部的齿轮图标
⚙️→ 选择Install Plugin from Disk...; - 选中下载好的 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+ | ✅ 深度实测 |
| CLion | 2024.2 – 2026.2+ | ✅ 深度实测 |
| WebStorm / GoLand / Rider / DataGrip | 2024.2 – 2026.2+ | ✅ 核心 API 兼容 |
为什么能通杀 JetBrains 全家桶?
本插件在架构设计之初就坚持了极简依赖原则:仅声明依赖核心平台层模块 com.intellij.modules.platform,不触碰任何特定编程语言专有的 AST/PSI 解析,也不调用任何 IDEA Ultimate 专属商业接口。只要运行在 2024.2+ 的 IntelliJ Platform 底座之上,均可稳定加载。
💡 开发复盘与性能架构思考 (Lessons Learned)
在基于 Java Swing / AWT 渲染管线移植 Neovide 动效的过程中,我们记录了几个核心工程坑点与解法:
-
Swing 渲染 vs Electron DOM 的差异:
- VS Code 版本运行在 Chromium 之上,可以充分利用 CSS3 硬件加速与 Canvas GPU Shader;
- JetBrains 采用纯 Java Swing 双缓冲绘制,若频繁触发全屏 Repaint 会严重拉低编辑器的打字响应速度。
- 解法:我们实现了局部脏矩形(Dirty Rect)动态计算,只将当前光标与拖尾覆盖的最小外接矩形提交给图形管线重绘,将 CPU 消耗压至最低。
-
多显示器高 DPI 缩放下的像素对齐:
- Windows 环境下 125%、150% 等非整数缩放率极易导致浮点坐标下舍入误差,产生拖尾边缘毛刺或残留细线。
- 解法:利用
JBUIScale.sysScale()统一规范坐标转换基准,确保在 4K 高分屏下边缘发光依然保持细腻无伪影。
