Smooth Key
一个让 VSCode 中 PageUp 和 PageDown 键滚动更加平滑顺畅的扩展插件。
✨ 功能特性
- 🎯 平滑滚动动画 - 将原本的瞬间跳转变为流畅的滚动动画
- ⌨️ 光标同步移动 - 光标跟随视图平滑移动,保持视觉一致性
- ⚙️ 高度可定制 - 支持自定义滚动步数和持续时间
- 🚀 轻量高效 - 不影响编辑器性能,响应迅速
- 🎨 无缝集成 - 自动拦截默认的 PageUp/PageDown 行为,无需手动配置
📦 安装
从 VS Code Marketplace 安装
- 打开 VS Code
- 按
Ctrl+Shift+X (Windows/Linux) 或 Cmd+Shift+X (Mac) 打开扩展面板
- 搜索 "Smooth Key"
- 点击安装
手动安装
- 下载
.vsix 文件
- 在 VS Code 中按
Ctrl+Shift+P (Windows/Linux) 或 Cmd+Shift+P (Mac)
- 输入 "Extensions: Install from VSIX..."
- 选择下载的
.vsix 文件
🚀 使用方法
安装插件后,直接使用 PageUp 和 PageDown 键即可享受平滑滚动效果,无需任何额外配置!
- PageUp - 向上平滑滚动一页
- PageDown - 向下平滑滚动一页
光标会跟随视图同步移动,提供流畅的浏览体验。
⚙️ 配置选项
你可以在 VS Code 设置中自定义滚动行为:
smoothKey.steps
- 类型:
number
- 默认值:
20
- 范围:
5-50
- 描述: 平滑滚动的步数。数值越大,滚动越平滑,但可能稍慢。
示例:
{
"smoothKey.steps": 30
}
smoothKey.duration
- 类型:
number
- 默认值:
300
- 范围:
100-1000
- 单位: 毫秒
- 描述: 平滑滚动的持续时间。数值越大,滚动越慢。
示例:
{
"smoothKey.duration": 400
}
如何修改配置
- 按
Ctrl+, (Windows/Linux) 或 Cmd+, (Mac) 打开设置
- 搜索 "smoothKey"
- 修改相应的配置项
或者直接编辑 settings.json:
{
"smoothKey.steps": 25,
"smoothKey.duration": 350
}
🛠️ 开发
前置要求
- Node.js (推荐 v18 或更高版本)
- pnpm (推荐 v8 或更高版本)
- VS Code (v1.74.0 或更高版本)
克隆项目
git clone https://github.com/LiRenTech/vscode-smooth-pageup.git
cd vscode-smooth-pageup
安装依赖
pnpm install
编译项目
pnpm run compile
开发模式(监听文件变化)
pnpm run watch
调试
- 按
F5 启动调试
- 会打开一个新的 "扩展开发宿主" 窗口
- 在新窗口中测试插件功能
代码检查
pnpm run lint
打包
# 安装 vsce(如果还没有)
npm install -g @vscode/vsce
# 打包(使用 --no-dependencies 跳过依赖检查,因为项目使用 pnpm)
vsce package --no-dependencies
📁 项目结构
smooth-pageup/
├── src/
│ └── extension.ts # 插件主入口文件
├── out/ # TypeScript 编译输出目录
├── .vscode/ # VS Code 工作区配置
│ ├── launch.json # 调试配置
│ └── tasks.json # 构建任务配置
├── .eslintrc.json # ESLint 配置
├── .gitignore # Git 忽略文件
├── .vscodeignore # VS Code 打包忽略文件
├── .npmrc # pnpm 配置
├── package.json # 插件清单文件
├── tsconfig.json # TypeScript 配置
└── README.md # 项目说明文档
🔧 工作原理
插件通过以下方式实现平滑滚动:
- 拦截键盘事件 - 通过
keybindings 配置拦截 PageUp/PageDown 键
- 计算滚动距离 - 获取当前编辑器可见行数,计算一页的行数
- 分步执行 - 将一页的滚动距离分成多个小步
- 平滑动画 - 通过时间控制,在指定时间内逐步完成滚动
- 同步移动 - 同时移动视图和光标,保持一致性
🤝 贡献
欢迎提交 Issue 和 Pull Request!
📝 更新日志
0.0.1
- ✨ 初始版本发布
- 🎯 实现 PageUp/PageDown 平滑滚动
- ⌨️ 支持光标同步移动
- ⚙️ 支持自定义滚动步数和持续时间
📄 许可证
MIT License
🙏 致谢
感谢所有使用和反馈的用户!
享受更流畅的代码浏览体验! 🎉
| |