学习vim的linux游戏,PacVim:一个学习 vim 命令的命令行游戏 | Linux 中国

作者 | Sk 译者 | geekpi 💎 💎 共计翻译:735 篇 贡献时间:1691 天

你好,Vim用户!今天,我偶然发现了一个很酷的程序来提高 Vim 的使用技巧。Vim 是编写和编辑代码的绝佳编辑器。然而,你们中的一些人(包括我)仍在陡峭的学习曲线中挣扎。再也不用了!来看看 PacVim,一款可帮助你学习 Vim 命令的命令行游戏。PacVim 的灵感来源于经典游戏 PacMan[1],它以一种好玩有趣的方式为你提供了大量的 Vim 命令练习。简而言之,PacVim 是一种深入了解 vim 命令的有趣而自由的方式。请不要将 PacMan 与 pacman[2](arch Linux 包管理器)混淆。 PacMan 是 20 世纪 80 年代发布的经典流行街机游戏。

在本简要指南中,我们将看到如何在 Linux 中安装和使用 PacVim。

安装 PacVim

首先按如下链接安装 Ncurses 库和开发工具。

◈ 如何在 Linux 中安装 Ncurses 库[3]◈ 如何在 Linux 中安装开发工具[4]

请注意,如果没有 gcc 4.8.X 或更高版本,这款游戏可能无法正确编译和安装。我在 Ubuntu 18.04 LTS 上测试了 PacVim,并且完美运行。

安装 Ncurses 和 gcc 后,运行以下命令来安装 PacVim。

$ git clone https://github.com/jmoon018/PacVim.git

$ cd PacVim

$ sudo make install

使用 PacVim 学习 Vim 命令

启动 PacVim 游戏

要玩这个游戏,只需运行:

$ pacvim [LEVEL_NUMER] [MODE]

例如,以下命令以普通模式启动游戏第 5 关。

$ pacvim 5 n

这里,5 表示等级,n表示模式。有两种模式:

◈ n – 普通模式。◈ h – 困难模式。

默认模式是 h,这很难:

要从头开始(0 级),请运行:

$ pacvim

以下是我 Ubuntu 18.04 LTS 的示例输出。

39a06c231967e83109ceceb5046f289e.png

要开始游戏,只需按下回车。

b32cd6a91f85d38f037090ceddb6089e.png

现在开始游戏。阅读下一节了解如何玩。

要退出,请按下 ESC 或 q。

以下命令以困难模式启动游戏第 5 关。

$ pacvim 5 h

或者,

$ pacvim 5

如何玩 PacVim?

PacVim 的使用与 PacMan 非常相似。

你必须跑过屏幕上所有的字符,同时避免鬼魂(红色字符)。

PacVim有两个特殊的障碍:

☉ 你不能移动到墙壁中(黄色)。你必须使用 vim 动作来跳过它们。☉ 如果你踩到波浪字符(青色的 ~),你就输了!

你有三条生命。每次打赢 0、3、6、9 关时你都会获得新生命。总共有 10 关,从 0 到 9,打赢第 9 关后,游戏重置为第 0 关,但是鬼魂速度变快。

获胜条件

使用 vim 命令将光标移动到字母上并高亮显示它们。所有字母都高亮显示后,你就会获胜并进入下一关。

失败条件

如果你碰到鬼魂(用红色 G 表示)或者波浪字符,你就会失去一条命。如果命小于 0 条,你将会输掉整个游戏。

这是实现的命令列表:

q退出游戏

h向左移动

j向下移动

k向上移动

l向右移动

w向前移动到下一个 word 开始

W向前移动到下一个 WORD 开始

e向前移动到下一个 word 结束

E向前移动到下一个 WORD 结束

b向后移动到下一个 word 开始

B向后移动到下一个 WORD 开始

$移动到行的末尾

移动到行的开始

gg/1G移动到第一行的开始

数字加 G移动到由数字给出的行的开始

G移到最后一行的开头

^移到当前行的第一个 word

&1337 cheatz(打赢当前关)

作用

玩过几关之后,你可能会注意到 vim 的使用有改善。一段时间后继续玩这个游戏,直到你掌握 Vim 的使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java多线程面试题与答案

线程 线程与进程的区别是什么? 进程指的是应用程序在操作系统中执行的副本(系统分配资源的最小单位),线程是程序执行的最小单位;进程使用独立的数据空间,而线程共享进程的数据空间。 线程状态图 多线程会…

用linux集成电路版图设计,集成电路版图设计报告.doc

集成电路版图设计报告集成电路版图设计实验报告班 级:微电子1302班学 号:1306090226姓 名:李根日 期:2016年1月10日一:实验目的:熟悉IC设计软件Cadence Layout Editor的使用方法,掌握集成电路原…

JVM面试题与答案

JVM内存布局 JVM在内存布局上可以分为哪些区域? 堆(线程共享):GC的主要回收地,包含几乎所有的实例对象、字符串常量池;元空间(线程共享):在本地内存分配,包…

md0和md1linux软raid,软RAID管理命令mdadm详解

mdadm是linux下用于创建和管理软件RAID的命令,是一个模式化命令。但由于现在服务器一般都带有RAID阵列卡,并且RAID阵列卡也很廉价,且由于软件RAID的自身缺陷(不能用作启动分区、使用CPU实现,降低CPU利用率),因此在生产…

Spring、SpringBoot常见面试题与答案

Spring Spring Bean 的作用域有哪些?它的注册方式有几种? Spring 容器中管理一个或多个 Bean,这些 Bean 的定义表示为 BeanDefinition 对象,具体包含以下重要信息: Bean 的实际实现类;Bean 的引用或者依赖…

c语言本身有输入输出语句正确错误,C语言模拟选择题

导出试题1. 以下叙述正确的是。A) 在C程序中,main函数必须位于程序的最前面B) C程序的每行中只能写一条语句C) C语言本身没有输入输出语句D) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误2. 以下叙述不正确的是。A) 一个C源程序可由一个或多个…

Dubbo常见面试题与答案

Dubbo的基础知识 Dubbo的核心架构是怎样的? Registry:注册中心。 负责服务地址的注册与查找,服务的 Provider 和 Consumer 只在启动时与注册中心交互。注册中心通过长连接感知 Provider 的存在,在 Provider 出现宕机的时候&#…

99行不用指针 c语言贪食蛇,关于C语言指针的问题

#include"iostream.h"structstudent{longnum;intscore;student*next;};student*creat();voidprint(student*head);student*insert(student*head,student*stud);student*del(student*head,longnum);voidmain(){student*headNULL,*stud;longnum;intscore;cout<建立学…

Redis常见面试题与答案

Redis的基本数据类型 Redis有哪些常用的数据类型&#xff1f; String&#xff1a;字符串&#xff08;最常用的缓存&#xff09;Hash&#xff1a;哈希&#xff08;保存对象&#xff09;List&#xff1a;有序列表&#xff08;消息队列&#xff09;Set&#xff1a;无序集合&…

c语言利用文件体写在桌面上,在C语言中怎样新建一个文件夹?

满意答案JacinthLancet推荐于 2017.10.12采纳率&#xff1a;56% 等级&#xff1a;12已帮助&#xff1a;35899人函数名: mkdir功 能: 建立一个目录(文件夹)用 法: int mkdir(char *pathname);程序例: (在win-tc和Dev-c下运行通过)#include #include #include int main(void){…

MySQL常见面试题与答案

存储引擎 InnoDB的主要特点是什么&#xff1f; MySQL5.5版本之后的默认存储引擎&#xff1b;支持事务&#xff1b;支持行级锁&#xff1b;支持MVCC&#xff1b;支持聚集索引方式存储数据。 InnoDB与MyISAM的区别&#xff1f; 存储引擎MyISAMInnoDB存储结构MyISAM在磁盘上存…

C语言6F多少,求助!!请人帮忙画C语言程序流程图.紧急!!!

#include <stdio.h>#define N 10struct student //第一步, 根据具体情况定义结构体类型。{ double num; /*学号*/float score[5]; //数组依次存放英语,数学,计算机基础及平均分};void input( struct student arr[ ], int ) ; /*函数原型*/void aver ( struct student arr…

java如何将String转换为enum

问题 假设定义了如下的enum&#xff08;枚举&#xff09;&#xff1a; public enum Blah {A, B, C, D }已知枚举对应的String值&#xff0c;希望得到对应的枚举值。例如&#xff0c;已知"A"&#xff0c;希望得到对应的枚举——Blah.A&#xff0c;应该怎么做&#x…

java解析c语言的结构体,JAVA中如何实现C中的结构体数组的功能?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼比如我想实现在C中的结构体数组&#xff1a;struct student{string Sno;string Sname;string Sgen;string Sdept;int Sage;student(){Sno "";Sname "";Sgen "男";Sdept "";Sage 0;}}…

Java 解决跨域问题

JAVA | Java 解决跨域问题 文章目录JAVA | Java 解决跨域问题引言什么是跨域&#xff08;CORS&#xff09;什么情况会跨域解决方案前端解决方案后端解决方案具体方式一、使用Filter方式进行设置二、继承 HandlerInterceptorAdapter三、实现 WebMvcConfigurer四、使用Nginx配置五…

c语言写天气预报程序,微信小程序实现天气预报功能

获取应用实例var app getApp()Page({data: {//加载状态loadingHidden: false,//当前温度currentTemperature: ,//夜间温度nightAirTemperature: ,//白天温度dayAirTemperature: ,//当前天气weather: ,//污染指数aqi: ,//污染程度quality: ,//风力windPower: ,//风向windDirect…

Spring 异常处理三种方式

Spring 异常处理三种方式 异常处理方式一. ExceptionHandler异常处理方式二. 实现HandlerExceptionResolver接口异常处理方式三. ControllerAdviceExceptionHandler三种方式比较说明(强烈推荐各位看一下&#xff0c;我觉得自己总结的比较多&#xff0c;嘿嘿&#xff0c;不对之…

Netty常见面试题 与 答案

Netty基础知识 什么是Netty&#xff1f; Netty 是一款用于高效开发网络应用的 NIO 网络框架&#xff0c;它大大简化了网络应用的开发过程&#xff1b; 封装了JDK底层的NIO模型&#xff0c;提供高度可用的API&#xff0c;用于快速开发高性能服务端和客户端&#xff1b;精心设计…

c语言’内存清除函数,c语言常用内存处理函数

memset()#includevoid*memset(void*s,int c,size_t n);功能&#xff1a;将s的内存区域的前n个字节以参数c填入(用来初始化)参数&#xff1a;s:需要操作内存s的首地址c:填充的字符&#xff0c;c虽然参数为int,但必须是unsigned char,范围为0-255n:指定需要设置的大小返回值&…

c语言编俄罗斯方块有注释,C语言学习1年-俄罗斯方块(无注释)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include #include #include int randtmp3,i,j,p,q,fx,fy,s,t,c,r,dltm,begin0,fq,k,a,sj,score0;int dla32000;int nx[5],ny[5],h[5],m[25];int x[8][4]{0,0,0,0,0,-2,-1,0,0,0,1,2,0,0,0,0,0,-1,0,1,0,0,1,1,0…