Vim Adventure攻略法 レベル8

## レベル8のポイント
[Vim Adventure](https://vim-adventures.com/)のレベル8では`*`、`#`、`n`、`N`の各モーションを利用して文書全体の中の同一単語を検索し、同一単語の間を移動することを学習します。

|キー|効果|
|:-:|---|
|*|自分のカーソル位置にある単語を順方向に検索して、その単語の先頭に移動する |
|#|自分のカーソル位置にある単語を逆方向に検索して、その単語の先頭に移動する |
|n|検索済みの単語に対して、カーソル位置がその単語上になくても、順方向で次に出てくるその単語の先頭に移動する |
|N|検索済みの単語に対して、カーソル位置がその単語上になくても、逆方向で次に出てくるその単語の先頭に移動する |

## レベル8開始時点で使えるようになっているキー
下記キーボードはマップの好きな場所で:keyboardと入力すると表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/26191b3d-4f9e-0374-00f2-73c34f0fe876.png)

## レベル8攻略手順
まずレベル7の最後のマップを逆に戻ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/3f1e1d79-5817-49ff-df31-014ef4f3c290.png)

|キーストローク|カーソル位置|捕捉説明|キー回数|
|:-:|:-:|---|:-:|
||(| |0|
|%|)| 行末方向の ) に移動 |1|
|j|| 一行下に移動してマップを抜ける |1|
|||キー回数合計|2|

次はキーストローク5回までです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/7f75d1a3-4740-b957-c263-24d4551d471e.png)

|キーストローク|カーソル位置|捕捉説明|キー回数|
|:-:|:-:|---|:-:|
||a| |0|
|G|w| 最終行の先頭に移動 |1|
|h|| 一文字左に移動してマップを抜ける |1|
|||キー回数合計|2|

次のマップは特に回数制限はありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/256d3f20-193d-7dda-ab1e-2cbd15d8b3ff.png)


|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|
||o| 文字列 shoot の2個目の o |
|w|f| 次の単語 for の先頭に移動 |
|w|t| 次の単語 the の先頭に移動 |
|w|h| 次の単語 honeymoon. の先頭に移動 |
|dtm|m| mまでを削除する|
|j|s| 一行下に移動する|
|h|i| 一文字左に移動する|
|h|k| 一文字左に移動する|
|rm|m| k を m で置換する|
|j|a| 一行下に移動する|
|b|h| 一つ前の単語 have の先頭に移動する|
|dtl|l| lまでを削除する|
|j|n| 一行下に移動する|
|h|o| 一文字左に移動する|
|dta|a| aまでを削除する|
|j|| 一行下に移動する|
|dG|t| カーソル位置の行から最終行まで全行を削除する|

すると `*`モーションが入手できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/78ad858a-93f4-7733-9d28-acb9cce5e702.png)

次のマップはヒビの入ったセルを通れば良いようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/2f775c7e-c193-8e49-6325-f838db15a23d.png)

すると鍵が入手できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/d8af60d3-abc9-891b-54a2-a2ca1c75c75d.png)

つぎのマップはモーションキーを上手に使わないと移動できなさそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/5a390476-76d4-3cd8-d560-11c299e130b6.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|
||H| 文字列 Here's の先頭 |
|$|y| 行末に移動 |
|*|e| カーソル位置にあるのと同じ単語 easy の先頭に移動 |
|*|e| カーソル位置にあるのと同じ単語 easy の先頭に移動 |
|j|r| 一行下に移動 |
|*|s| カーソル位置にあるのと同じ単語 sir の先頭に移動 |
|Fh|h| 行頭方向の h に移動 |
|*|w| カーソル位置にあるのと同じ単語 whoose の先頭に移動 |
|0|w| 行頭に移動 |
|j|S| 一行下に移動 |
|gg|H| 先頭行の先頭に移動 |
|$|y| 行末に移動 |
|Fe|e| 行頭方向の e に移動 |
|*|e| カーソル位置にあるのと同じ単語 easy の先頭に移動 |
|*|e| カーソル位置にあるのと同じ単語 easy の先頭に移動 |
|j|r| 一行下に移動 |
|*|s| カーソル位置にあるのと同じ単語 sir の先頭に移動 |
|fr|r| 行末方向の r に移動 |
|0|w| 行頭に移動 |
|*|S| カーソル位置にあるのと同じ単語 Sue's の先頭に移動 |
|gg|H| 先頭行の先頭に移動 |
|$|y| 行末に移動 |
|*|e| カーソル位置にあるのと同じ単語 easy の先頭に移動 |
|*|e| カーソル位置にあるのと同じ単語 easy の先頭に移動 |
|j|r| 一行下に移動 |
|j|| 一行下に移動してマップを抜ける |

マップ下部の中央にある sue に行くには `#` モーションキーが足りないし、建物の青い鍵も持っていないので、取り敢えず先に進み後で戻ってくることにします。

また木の茂みを全部探ることにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/4c42313a-9142-15ee-3f09-8272b59b7f99.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|
||Y| 文字列 You の先頭 |
|e|u| 文字列 You の末尾 |
|k|| 一行上に移動 ​|
|k|u| 一行上に移動 ​|
|k|| 一行上に移動（木のセル、白い帽子のキャラ） ​|
|fe|e| 行末方向の e に移動 |
|j|f| 一行下に移動 |
|h||| 一文字左に移動（木のセル） |
|b|h| 一つ前の単語 have の先頭に移動 |
|j|o| 一行下に移動 |
|0|i| 行頭に移動 |
|j|Y| 一行下に移動 |
|j|a| 一行下に移動 |
|fr|r| 行末方向の r に移動 |
|ty|| 行末方向の y の一文字左に移動（木のセル） |
|j|r| 一行下に移動 |
|j|w| 一行下に移動 |
|h||| 一文字左に移動 |
|j|t| 一行下に移動 |
|h||| 一文字左に移動（木のセル、赤い髪のキャラ） |
|k|| 一行上に移動 |
|fy|y| 行末方向の y に移動 |
|fn|n| 行末方向の n に移動 |
|k|| 一行上に移動（木のセル、`#`モーション） |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/d726a04a-542a-b5f0-705a-c23bc55f5378.png)

`#`モーションを入手したので、今来たマップを戻り、先ほど後回しにしたマップに向かいます。
 
|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|
||| 前からの続き |
|0|Y| 行頭に移動 |

先ほど後回しにしたマップに戻ってきました。Sueが一つ残っていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/cfd2d5c0-e749-473c-2cb4-07bac4a7ffcc.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|
||r| sir の末尾 |
|#|s| カーソル位置にあるのと同じ単語 sir の先頭に移動 |
|0|S| 行頭に移動 |
|#|S| カーソル位置にあるのと同じ単語 Sue の先頭に移動 |

全てのひび割れブロックを踏破すると青い鍵が出現します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/bf4cf841-2f5e-e3d8-32cb-52d158628328.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|
||S| 先ほどの続き |
|gg|H| 先頭行の先頭に移動 |
|$|y| 行末に移動 |
|*|e| カーソル位置にあるのと同じ単語 easy の先頭に移動（青い鍵） |
|*|e| カーソル位置にあるのと同じ単語 easy の先頭に移動 |
|j|r| 一行下に移動 |
|Fh|h| 行頭方向の h に移動 |
|*|w| カーソル位置にあるのと同じ単語 whoose の先頭に移動 |
|e|e| 単語 whose の末尾に移動 |
|k|| 一行上に移動してマップを抜ける |

青い鍵の建物に入ると`n`モーションが入手できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/2b7078c2-97d0-9481-dd80-0b384c2add9d.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|
||e| whose の末尾からマップに入る |
|gg|H| 先頭行の先頭に移動 |
|$|y| 行末に移動 |
|*|e| カーソル位置にあるのと同じ単語 easy の先頭に移動（青い鍵） |
|*|e| カーソル位置にあるのと同じ単語 easy の先頭に移動 |
|j|r| 一行下に移動 |
|j|| 一行下に移動してマップを抜ける |

次のマップは
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/91a41134-ef9e-191f-e8ac-ac36694a9914.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|
||e| true の末尾からマップに入る |
|Fs|s| 行頭方向の s に移動 |
|j|i| 一行下に移動 |
|h||| 一文字左に移動（木のセル、茶色い髪のキャラ） |

このマップで鍵のある建物に行くには先頭行の You にジャンプしなければいけないがこのマップの最終行の You にたどり着く方法が見つけられない。茶髪キャラの説明によると、Youという単語上からでなくても`n`モーションを使えばジャンプできる。なので、一度このマップを抜けて、先ほどのマップでYouを検索し、このマップに戻って`n`モーションを利用することにする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/706dd46d-aae1-d537-5a46-8fbe7fb33170.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|
||| 先ほどからの続き |
|k|i| 一行上に移動 |
|$|e| 行末に移動 |

一番下の You で`#`モーションで検索すると You がハイライトされる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/fa5ea1dc-1973-5119-3ba0-7551b53c6d19.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|
||Y| 一番下のYouからマップに入る |
|#|Y| Youを逆順に検索してハイライトする |

すると攻略中のマップに戻ってきても You がハイライトされたままになっている。ここで`n`モーションを使えば先頭行の You にジャンプできる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/47a51b6d-c6a8-c5e4-185f-5ad8e09ae305.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|
||e| trueからマップに入る |
|n|Y| 先頭行のYouにジャンプする |

鍵のある建物に入って黒いキャラと会話すると違う場所に飛ばされる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/27056c53-7eed-b9df-537c-d6208e7c34ef.png)

飛ばされた先。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/23240bb1-0e73-98ab-37df-ca1e275e8fe4.png)

次のマップも飛び飛びなのを`*`、`#`、`n`モーションを使って制限時間の60秒以内に移動する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/3000e40b-b8c1-02de-0047-fb2955156f43.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|
||,| ,からマップに入る |
|#|m| 下から2行目の meeny にジャンプする |
|$|,| 行末の , に移動する |
|#|,| , を逆方向に検索する |
|n|,| , を逆方向に検索する |
|n|,| , を逆方向に検索する |
|0|I| 行頭に移動する |
|k|b| 一行上に移動する |
|$|.| 行末に移動する |
|*|.| 次の . に移動する |
|j|| 一行下に移動してマップを抜ける|

マップを抜けたら黒いキャラと会話して、青い髪のキャラのセルまで行けばレベル8クリアです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/386e5154-ffe8-d5b7-b210-c9d078c2ea1d.png)

[目次へ](https://qiita.com/mailstop/items/284f2a1300369b693f45)
[レベル7へ](https://qiita.com/mailstop/items/e42d4ac759f4cd3f793d)
レベル9へ(未投稿)