本地部署VIM Adventures(VIM大冒险)
本地部署VIM AdventuresVIM大冒险1. 简介VIM Adventures是一款用于学习VIM编辑器使用的在线网页端小游戏通过这个游戏我们能够快速掌握VIM的一些常用的基本命令可谓是新手福音。这款游戏有官方版本官网https://vim-adventures.com但是在官方版本中只有前三关是免费的想要游玩之后的关卡需要购买证书需要25美元且只有6个月使用期。由于价格对于很多学生党来说可能略高而且在国内购买也不太方便我选择寻找其他能够免费完整体验这个游戏的方法。2. 本地部署2.1. 开源项目Github上曾有对该游戏进行逆向的项目也有很多相关的folk项目但这些项目都被游戏原作者要求下架了这些项目现在要么显示takedown要么就是404。详情见https://github.com/github/dmca/blob/fe3a3533c22817d674fec81fd4f814f7d3f187c2/2020/11/2020-11-12-VIMAdventures.md因此现在Github上已经找不到相关的项目了。使用互联网档案馆查找这些项目曾经的存档目前能找到且源码还能下载的只有https://github.com/wattry/vim-adventures这个项目的归档打开要科学上网https://web.archive.org/web/20201013182809/https://github.com/wattry/vim-adventures或者可以在以下网站下载项目源码https://vim-adventures2.pages.dev该项目将VIM Adventures的核心代码逆向了出来现在只需要将项目下载下来部署于本地就可以游玩这个游戏的完整版本。2.2. 使用方法简述要想使用该项目你需要将它部署在本地或者云端的服务器上。原项目有打包好的可执行程序设置一下环境变量直接运行就能完成部署也有完整源代码需要配置好Nodejs环境使用npm构建安装后才能使用。另外笔者又修改完善了该项目的代码和相关文件就得到了两大修改后的新版本一个是动态网页版就是在原项目的基础上配置好了Nodejs的第三方库只需要安装好Nodejs即可运行另外一个版本是静态网页版无须配置Nodejs环境托管在静态服务器上即可运行。Vim Adventures是可以保存和加载游戏进度的原项目版本和笔者的动态网页版可以将游戏进度数据保存在服务器上而静态网页版会将游戏进度数据保存在浏览器只需要将一些资源文件放在静态服务器上就能运行部署最方便。由于移动端没有自带键盘原版的VIM Adventures只能在PC端上的浏览器游玩除非为移动端接上外接键盘否则无法直接在移动端浏览器上使用笔者为解决这一问题又针对移动端浏览器修改制作了兼容移动端的静态网页版这一版本主要是为移动端添加了js虚拟键盘详见下文的静态网页版部署。如果你已经迫不及待想玩到这个游戏可以免费游玩笔者搭建的在线版本https://vim-adventures2.pages.dev由于这个托管服务是免费的游戏进度可能因托管服务失效而丢失因此建议部署在自己的服务器上。接下来介绍这三个版本的部署方式。其中第一种原项目直接部署和第三种静态网页部署的方法最简单成本最低。2.3. 原项目部署原项目归档地址https://web.archive.org/web/20201013182647/https://github.com/wattry/vim-adventures原项目有2种部署方式一种是直接下载打包好的程序配置一下环境变量然后运行即可完成直接部署最简单快捷还有一种是下载源码并配置好nodejs环境构建安装进行部署。该项目的文件可以通过如下方法获取打开项目的Releases页面进行下载https://web.archive.org/web/20201013182809/https://github.com/wattry/vim-adventures/releases/tag/v1.1.0如果上述链接无法打开可以使用以下链接下载备用链接1https://fileditchfiles.me/file.php?f/s22/ohjZVGOJHmWPUdwageo.zip备用链接2https://files.catbox.moe/chq283.zip备用链接3https://wwbbt.lanzout.com/iaAtW3h469ni具体需要用到哪些文件见下文。2.3.1. 方法一直接部署1. 下载打包好的程序根据自己的系统选择对应的程序这里以Windows系统举例需要下载vim-adventures-win.exe那么需要从Releases页面下载该程序或者从直链下载得到的压缩包中找到该程序。2. 设置环境变量主要设置APP_DIR和PORT两个环境变量前者用于指定游戏存档数据的保存位置后者用于指定服务器监听的端口有两种设置方法1方法一在程序运行前用命令行命令设置环境变量比如在Windows下set APP_DIR%USERPROFILE%\vim-adventures set PORT80那么会将游戏存档保存在用户主目录的vim-adventures目录下设监听端口为80。2方法二在程序的同级目录下新建一个名为.env的文件在该文件中写入如下内容APP_DIR$HOME/vim-adventures PORT80作用同上。3. 运行程序2.3.2. 方法二源码构建部署从源码构建打包得到游戏服务端程序。1. 下载并安装nodejshttps://nodejs.org/en/download这里使用14.21.3版本其他版本在接下来进行构建时可能会报错。2. 下载项目源代码从Releases页面选择Source Code(tar.gz)下载或在直链下载压缩包中找到vim-adventures-1.1.0.tar.gz下载完后解压缩3. 进入工作目录项目的根目录是vim-adventures-1.1.0我们需要进入到项目根目录中的vim-adventures目录cd vim-adventures-1.1.04. 设置环境变量编辑项目根目录下的.env文件HOSThttp://localhost# NodeJS default locationAPP_DIR$HOME/vim-adventuresAPP_NAMEvim-adventuresPORT80APP_DIR设置存放最终打包得到的程序的目录需要设为绝对路径APP_NAME设置输出的程序名称可以根据需要自行设置。PORT设置端口。5. 构建安装npm run setup完成后会在APP_DIR目录下生成名为APP_NAME的程序比如在Windows下使用上述设置会在用户主目录的vim-adventures文件夹下生成vim-adventures.exe程序。另外在APP_DIR目录下也会生成一个.env文件修改该中文件PORT的值或使用命令行命令设置环境变量PORT可以设置端口。6. 运行直接运行vim-adventures.exe程序即可运行浏览器打开127.0.0.1就可以免费游玩了。2.3.3. 其他方法归档项目的主页有讲到使用docker部署的方法。2.4. 动态网页部署部署方法和上文中的原项目从源码构建部署方法相同需要下载Nodejs但不需要进行第4步构建安装的过程避免了构建安装过程中可能出现的报错。1. 安装Nodejs2. 下载动态网页版文件https://wwbbt.lanzout.com/i8P823h44uqf下载完后解压缩3. 进入工作目录cd vim-adventures-dynamic4. 运行node bin/www.js5. 端口和文件保存路径设置同原项目部署方法2.5. 静态网页部署这里你需要一个静态服务器例如nginx和apache或者托管在免费的静态网站上比如InfinityFree。这里以python示例1. 下载安装python在windows下要将python添加到环境变量2. 下载静态网页版文件在这里笔者根据不同的需求又制作了3个不同的静态网页版本大家可以根据自己的需求下载相应的版本1仅支持PC的静态网页版仅支持PC端无须联网从CDN加载资源文件https://wwbbt.lanzout.com/iSs783h44ush2兼容移动端的静态网页版兼容移动端和PC端浏览器不兼容平板需要联网从CDN加载资源文件https://wwbbt.lanzout.com/i644c3h44urg3兼容移动端的完全静态网页版兼容移动端和PC端浏览器不兼容平板所有资源文件均托管于静态服务器上可以部署于独立的局域网无须访问互联网也可正常游玩https://wwbbt.lanzout.com/iGzYj3h44uwb下载完后解压缩3. 进入工作目录4. 运行服务器python -m http.server 80这里设为80端口浏览器打开127.0.0.1即可游玩注意静态网页版会将游戏进度数据保存在浏览器如果浏览器数据清空那么游戏进度也会清空。3. 简单上手游戏进度管理1. 保存进度:w filename可以将当前游戏进度以文件形式保存并将其命名为filename2. 显示已有存档:!ls可以列出已保存的游戏进度3. 载入存档:e filename可以载入名为filename的存档4. 删除存档:!rm filename可以删除名为filename的存档5. 载入指定关卡:level n直接载入第n关这样的话即使没有保存进度也不用从第一关开始打了其他相关的命令信息都可以在游戏界面的左下方找到。4. 相关链接源码及各修改版下载及在线游玩https://vim-adventures2.pages.dev原项目归档https://web.archive.org/web/20201013182809/https://github.com/wattry/vim-adventures原项目文件备用链接1https://fileditchfiles.me/file.php?f/s22/ohjZVGOJHmWPUdwageo.zip原项目文件备用链接2https://files.catbox.moe/chq283.zip原项目文件备用链接3https://wwbbt.lanzout.com/iaAtW3h469ni动态网页版文件https://wwbbt.lanzout.com/i8P823h44uqfPC端静态网页版文件https://wwbbt.lanzout.com/iSs783h44ush兼容移动端且依赖外部资源的静态网页版https://wwbbt.lanzout.com/i644c3h44urg兼容移动端的独立静态网页版https://wwbbt.lanzout.com/iGzYj3h44uwbGithub DMCA 2020-11-12-VIMAdventures.mdhttps://github.com/github/dmca/blob/fe3a3533c22817d674fec81fd4f814f7d3f187c2/2020/11/2020-11-12-VIMAdventures.md

相关新闻

C++正则表达式

C++正则表达式

正则表达式&#xff08;Regular Expression&#xff0c;简称regex&#xff09;是一种用于描述字符串模式的工具&#xff0c;可实现字符串的匹配、搜索、替换、提取等高效操作。C自C11起&#xff0c;通过标准库<regex>头文件正式引入正则表达式支持&#xff0c;无需依赖第…

2026/10/24 1:58:45 阅读更多 →
麒麟系统通用开发环境搭建实战:从零配置到高效开发

麒麟系统通用开发环境搭建实战:从零配置到高效开发

1. 项目概述&#xff1a;为什么要在麒麟系统上搭建开发环境&#xff1f; 最近几年&#xff0c;国产操作系统&#xff0c;特别是以麒麟系列为代表的Linux发行版&#xff0c;在政企、金融、教育等领域的应用越来越广泛。作为一名长期在Linux环境下摸爬滚打的开发者&#xff0c;我…

2026/10/17 21:08:32 阅读更多 →
一些好用的网站(持续跟进)

一些好用的网站(持续跟进)

1、Z-Library&#xff0c;免费下载电子书&#xff0c;热门电影和游戏&#xff0c;还有很多绝版书籍和资源。 链接:Z站图书馆入口 - 官方Z站镜像网址(2025持续更新) 2、lunarora&#xff0c;免费下载电子书 链接&#xff1a;鹿鸣川 - 呦呦鹿鸣处 书卷汇成川 3、读书派&#…

2026/10/23 3:51:29 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年&#xff0c;我大部分时间都在跟浏览器标签页打交道&#xff0c;直到第一次把桌面应用跑起来&#xff0c;才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词&#xff0c;最开始是在某段时间频繁出现在同事的讨论里&#xff0c;一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档&#xff0c;主要面向智能锁安装人员、终端用户及售后维护者&#xff0c;帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件&#xff0c;大小4.37MB&#xff0c;内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统&#xff0c;整车要求空载跑到8m/s&#xff0c;电机转速已经拉到额定点&#xff0c;驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令&#xff0c;转速纹丝不动&#xff0c;三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/27 7:21:53 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年&#xff0c;用它写过嵌入式驱动、做过游戏服务端&#xff0c;也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词&#xff0c;我其实挺感慨的——这门语言的难点从来不是语法多&#xff0c;而是知识点之间的耦合太深…

2026/10/27 18:20:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书以PDF格式发布&#xff0c;适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开&#xff0c;先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能&#xff0c;再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历&#xff1a;翻开源码注释、论文摘要或者一份专业报告&#xff0c;每个字都认识&#xff0c;连在一起却像天书。想找人聊聊&#xff0c;身边要么没人懂&#xff0c;要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型&#xff0c;几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 13:55:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:21:50 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 19:19:37 阅读更多 →