http://vim-adventures.com/
vim是一个非常方便的文本编辑器,使用它可以快速的编辑文本
vim-adventures是一个很有意思的解谜游戏,需要玩家使用一些vim下的指令来移动光标来解决一系列谜题
为了化简题意此题我们只考虑如下指令:
h:让光标向左边移动一格
j:让光标向下边移动一格
k:让光标向上边移动一格
l:让光标向右边移动一格
w:让光标移动到下一个"word的开头"
e:让光标移动到下一个"word的结尾"
b:让光标移动到前一个"word的开头"
ge:让光标移动到前一个"word的结尾"
W:让光标移动到下一个"WORD的开头"
E:让光标移动到下一个"WORD的结尾"
B:让光标移动到前一个"WORD的开头"
gE:让光标移动到前一个"WORD的结尾"
(注意断句,是"下一个|word的结尾",而不是"下一个word|的结尾".如"1234 5678",2的下一个word的结尾是4而不是8,其他同理)
注:
其中一个word由字母/数字/下划线序列或者其他的非空字符序列组成.由white space(空格或者换行符)分开;
其中一个WORD由非空字符序列组成.由white space(空格或者换行符)分开;
下一个/前一个word/WORD可以跨行,如当前word是该行最后一个word,那么下一个word就是下一行的第一个word;
如果没有下一个/前一个word/WORD,那么按下w/e/b/ge/W/B/E/gE之后会让光标移动到所能移动的最远处;
例子:
This is a line with example text
<----<--<-<----<----<-------<---
b b b b b b b
This is a line with example text
<--<--<-<----<----<-------<-----
ge ge ge ge ge ge ge
This is a line with example text
----->-->->---->---->------->-->
w w w w w w w
This is a line with example text
--->-->->---->---->------->---->
e e e e e e e
while ((((true)))) printf("Hello VIM!")
------>--->--->---->------------->-->->
w w w w W w w
(w,e,b,ge,W等表示按下该键后可以让当前光标移动到对应的"<",">"位子.
前两个例子光标一开始在最右,后三个例子光标一开始在最左)
文本中还有一些不能走上去的位置,如上图中的石头,这些石头光标不管怎么样都没办法移动上去.
现在给你一段文本,要求你从起点位置按最少的按键将光标移动到终点位置.
其中ge算两次按键,大写字母如W可以按shift+w(算两次按键),或者在Caps Lock打开的状态下按一下w,打开/关闭Caps Lock算一次按键.
shift不能按住不放,如在Caps Lock大写的情况下, 按下shift+G和shift+E来实现ge算4次按键.
起始状态Caps Lock是在小写状态