Vim Adventure攻略法 レベル7

## レベル7のポイント
[Vim Adventure](https://vim-adventures.com/)のレベル7では`f`、`F`、`t`、`T`、`;`、`,`、`g`、`G`の各モーションを利用して行の中を自由に移動したり、文書全体の先頭行や最終行に移動することや`z`コマンドで文書の位置を描画し直して見やすくすることを学習します。

|キー|効果|
|:-:|---|
|t{一文字}| 行末方向で次に出てくる{一文字}の左側の文字に移動する |
|T{一文字}| 行頭方向で次に出てくる{一文字}の右側の文字に移動する |
|f{一文字}| 行末方向で次に出てくる{一文字}に移動する |
|F{一文字}| 行頭方向で次に出てくる{一文字}に移動する |
|;| 最後に実行した`f`、`t`、`F`、`T`を逆方向に実行|
|;| 最後に実行した`f`、`t`、`F`、`T`を順方向に実行|
|gg| 文章の先頭行の行頭に移動する |
|G| 文章の最終行の行頭に移動する |
|zt| カーソル位置の行を画面最上部に移動させる |
|zz| カーソル位置の行を画面中央に移動させる |
|zb| カーソル位置の行を画面最下部に移動させる |

## レベル7開始時点で使えるようになっているキー
下記キーボードはマップの好きな場所で:keyboardと入力すると表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/498d8be9-3f35-a29c-3b18-2ceb19c79dd4.png)

## レベル7攻略手順
全体が見えない大きなマップですが、木のセルにキーが隠されていないか総当たりします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/8a8582f6-c841-7433-193b-b2460e0f48cc.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|:-:|
|-|| 先頭行 The cat の間の空白|
|$|.| 先頭行の行末に移動|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/dce37000-5485-1ea2-c6ed-b2d1f248b433.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|
||| 前のキーストローク "$" からの続き|
|j|l| 一行下に移動 |
|j|,| 一行下に移動 |
|j|h| 一行下に移動 |
|b|w| 単語 with の先頭に移動 |
|h| | 一文字左に移動（木のセル、`,`モーションを入手）|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/7205a1c0-2b77-015b-3f46-2626af026833.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|:-:|
|||前のキーストローク "h" からの続き|
|e|h| 単語 with の末尾に移動 |
|j|| 一行下に移動 |
|j|| 一行下に移動 |
|j|| 一行下に移動 |
|j|k| 一行下に移動 |
|j|| 一行下に移動（木のセル）|
|l|w| 一文字右に移動 |
|l|i| 一文字右に移動 |
|l|d| 一文字右に移動 |
|j|d| 一行下に移動 |
|j|| 一行下に移動（木のセル、赤い髪のキャラ） |
|e|y| 単語 way の末尾に移動 |
|k|d| 一行上に移動 |
|k|.| 一行上に移動 |
|k|e| 一行上に移動 |
|k|s| 一行上に移動 |
|B|a| 単語 as の先頭に移動 |
|B|t| 単語 timidly, の先頭に移動 |
|j|w| 一行下に移動 |
|j|a| 一行下に移動 |
|h|| 一文字左に移動（木のセル、`;`モーション）|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/cd65c1de-ad15-8fe2-0195-5ee6ee1063dc.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|:-:|
|||前のキーストローク "h" からの続き|
|b|g| 単語 grinned の先頭に移動 |
|j|'| 一行下に移動 |
|h|,| 一文字左に移動 |
|j|l| 一行下に移動 |
|j|| 一行下に移動 |
|j|| 一行下に移動（木のセル）|
|h|| 一文字左に移動（木のセル、`t`モーション） |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/9e5084ab-9b8b-019a-4cd9-0e568d6f6204.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|:-:|
|||前のキーストローク "h" からの続き|
|j|| 一行下に移動 |
|w|o| 次の単語 on の先頭に移動 |
|w|w| 次の単語 where の先頭に移動 |
|w|y| 次の単語 you の先頭に移動 |
|w|w| 次の単語 want の先頭に移動 |
|h|| 一文字左に移動（木のセル、白い帽子のキャラ） |
|b|y| 前の単語 you の先頭に移動 |
|b|w| 前の単語 where の先頭に移動 |
|b|o| 前の単語 on の先頭に移動 |
|k|| 一行上に移動（木のセル） |
|k|| 一行上に移動 |
|k|l| 一行上に移動 |
|k|,| 一行上に移動 |
|l|'| 一文字右に移動 |
|tc|i| 行末方向の c の一文字左に移動 |
|l|c| 一文字右に移動 |
|k|a| 一行上に移動 |
|k|w| 一行上に移動 |
|k|e| 一行上に移動 |
|k|a| 一行上に移動 |
|k|| 一行上に移動 |
|k|| 一行上に移動 |
|k|h| 一行上に移動 |
|k|h| 一行上に移動 |
|k|l| 一行上に移動 |
|k|.| 一行上に移動 |
|Tn|| 行頭方向の n の一文字右に移動（木のセル）|
|h|n| 一文字左に移動 |
|h|e| 一文字左に移動 |
|h|h| 一文字左に移動 |
|Tn|e| 行頭方向の n の一文字右に移動 |
|j|u| 一行下に移動 |
|h|t| 一文字左に移動 |
|j|c| 一行下に移動 |
|j|i| 一行下に移動 |
|j|| 一行下に移動 |
|j|| 一行下に移動 |
|h|| 一文字左に移動（木のセル） |
|j|| 一行下に移動 |
|j|l| 一行下に移動 |
|j|r| 一行下に移動 |
|l|,| 一文字右に移動 |
|l|| 一文字右に移動（木のセル） |
|h|,| 一文字左に移動 |
|k|l| 一行上に移動 |
|k|s| 一行上に移動 |
|k|| 一行上に移動 |
|k|| 一行上に移動 |
|k|i| 一行上に移動 |
|k|c| 一行上に移動 |
|k|t| 一行上に移動 |
|k|n| 一行上に移動 |
|Tn|y| 行頭方向の y の一文字右に移動（木のセル）  |
|h|y| 一文字左に移動 |
|j|o| 一行下に移動 |
|j|| 一行下に移動 |
|j|| 一行下に移動 |
|b|f| 前の単語 felt の先頭に移動 |
|l|| 一文字右に移動（木のセル、`f`モーション） |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/5f04162a-09d9-1a0f-d9e3-499938e8fac1.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|:-:|
|||前のキーストローク "h" からの続き|
|fi|i| 行末方向の i に移動 |
|j|| 一行下に移動 |
|j|| 一行下に移動 |
|j|s| 一行下に移動 |
|j|l| 一行下に移動 |
|j|,| 一行下に移動 |
|T:|| 行頭方向の : の一文字右に移動（木のセル、赤い髪のキャラ） |
|fg|g| 行末方向の g に移動 |
|j|'| 一行下に移動 |
|h|,| 一文字左に移動 |
|j|l| 一行下に移動 |
|j|| 一行下に移動 |
|j|| 一行下に移動（既出の木のセル） |
|j|o| 一行下に移動 |
|b|d| 単語 deal の先頭に移動 |
|b|g| 単語 good の先頭に移動 |
|b|a| 単語 a の先頭に移動 |
|h|| 一文字左に移動（木のセル、白い帽子のキャラ） |
|Tt|| 行頭方向の t の一文字右に移動（木のセルf） |
|fg|g| 行末方向の g に移動 |
|j|e| 一行下に移動 |
|j|| 一行下に移動木のセル） |
|j|r| 一行下に移動 |
|TI|| 行頭方向の I の一文字右に移動（木のセル） |
|fr|r| 行末方向の r に移動 |
|j|| 一行下に移動 |
|j|| 一行下に移動 |
|e|r| 単語 matter の末尾に移動 |
|l|| 一文字右に移動（木のセル） |
|l|| 一文字右に移動 |
|w|w| 次の単語 way の先頭に移動 |
|w|y| 次の単語 you の先頭に移動 |
|tg|| 行末方向の g の一文字左に移動（木のセル） |
|F'|'| 行頭方向の ' に移動 |
|b|d| 単語 does の先頭に移動 |
|h|| 一文字左に移動（木のセル） |
|Tn|| 行頭方向の n の一文字右に移動（木のセル、黒い髪のキャラ） |
|0|`| 行頭に移動 |
|j|s| 一行下に移動 |
|j|| 一行下に移動 |
|j|`| 一行下に移動 |
|j|a| 一行下に移動 |
|te|| 行末方向の e の一文字左に移動（木のセル） |
|ti|| 行末方向の i の一文字左に移動 |
|j|| 一行下に移動 |
|j|u| 一行下に移動 |
|h|s| 一文字左に移動 |
|h|| 一文字左に移動（木のセル、茶色い髪のキャラ） |
|fh|h| 行末方向の h に移動 |
|fs|s| 行末方向の s に移動 |
|tt|| 行末方向の t の一文字左に移動（木のセル、`zt, zz, zb`コマンド） |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/a77995f2-c4c5-4461-95e2-a90a41905737.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|:-:|
|||前のキーストローク "h" からの続き|
|Fu|u| 行頭方向の u に移動 |
|k|| 一行上に移動 |
|k|t| 一行上に移動 |
|k|| 一行上に移動 |
|tA|| 行末方向の A の一文字左に移動（木のセル） |

「迷子になったみたいだから助けてあげる」などと言いながら5秒経つとマップの最初の方の赤い髪のキャラの一つ上のセルに飛ばされます。地味にウザい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/02562f34-b2d0-0416-f5ee-1a5a003e897f.png)

飛ばされた先。恐らく全ての木のセルを確認したと思うので、あとはクリアするだけですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/0f421c69-f9a7-2c2f-8d9e-e1b7a157f6ea.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|:-:|
|||前のキーストローク "h" からの続き|
|F'|'| 行頭方向の ' に移動 |
|h|,| 一文字左に移動 |
|j|l| 一行下に移動 |
|j|| 一行下に移動 |
|j|| 一行下に移動 |
|j|o| 一行下に移動 |
|Fg|g| 行頭方向の g に移動 |
|j|e| 一行下に移動 |
|j|| 一行下に移動（木のセル） |
|j|r| 一行下に移動 |
|j|| 一行下に移動 |
|j|| 一行下に移動 |
|0|`| 行頭に移動 |
|j|s| 一行下に移動 |
|j|| 一行下に移動 |
|j|`| 一行下に移動 |
|j|a| 一行下に移動 |
|ft|t| 行末方向の t に移動 |
|j|| 一行下に移動 |
|j|u| 一行下に移動 |
|Fy|y| 行頭方向の y に移動 |
|j|o| 一行下に移動 |

これで大きいマップを抜けることができました。

つぎのマップはキーストローク5回以内で赤枠赤字のセルを削除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/dbf5b3b4-2859-63ed-42a9-4f7ac7c5eede.png)

|キーストローク|カーソル位置|捕捉説明|キー回数|
|:-:|:-:|---|:-:|
||e| 文字列 emptyStr の先頭|0|
|fx|x| 行末方向の x に移動 |2|
|dt"|"| " までの文字を削除|3|
|||キー回数合計|5|

すると鍵が入手できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/f23e273b-ec9a-79fc-bdeb-8598815f8d71.png)

入手した鍵で近くの建物に入ると `%` モーションを入手できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/85c5a929-aeea-30c6-b8b3-7b0cc542eaf1.png)

次のマップもキーストローク5回以内で赤枠赤字のセルを削除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/eb99d5fd-05f9-5e32-5bea-352d0a9543e8.png)

|キーストローク|カーソル位置|捕捉説明|キー回数|
|:-:|:-:|---|:-:|
||i| 文字列 if の先頭|0|
|$|{| 行末に移動 |1|
|%|}| } に移動する|1|
|j|e| 一行下に移動 |1|
|d%|}| 次に出てくる{}が閉じるまでを削除する |2|
|||キー回数合計|5|

すると鍵と白い帽子のキャラが出てきます。`d%`だけでなく`dG`でも同じ事ができると解説しています。確かにそうなんですが`G`はまだ入手していない。このレベルの最初の鍵付きの建物をまだ開けていないので、この鍵を入手してから戻ることにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/60477c97-1729-4681-0e22-49b16a68ef6d.png)

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|:-:|
||y| you の先頭 |
|k|| 一行上に移動 |
|fs|s| 行末方向の s に移動 |
|l|u| 一文字右に移動 |
|k|| 一行上に移動 |
|k|t| 一行上に移動 |
|k|| 一行上に移動 |
|tA|| 行末方向の A の一文字左に移動（木のセル） |

先ほどのマップの最初の方の赤い髪のキャラの一つ上のセルに飛ばされるセルを利用します。

|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|:-:|
|||前のキーストローク "tA" からの続き|
|k|d| 一行上に移動 |
|k|e| 一行上に移動 |
|k|s| 一行上に移動 |
|k|| 一行上に移動 |
|k|| 一行上に移動 |
|k|h| 一行上に移動 |
|k|,| 一行上に移動 |
|k|l| 一行上に移動 |
|0|I| 行頭に移動 |
|k|T| 一行上に移動 |

これで大きいマップをはるばる元来た場所に戻ってきました。そして鍵を使って建物に入り`gg`モーションを入手します。この時点で`G`モーションも利用可能となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/7f503135-7ace-6c1d-1ca9-da0cab0a80f3.png)

再び大きなマップを抜けなければいけないが、今度は`G`モーションがあるのでダイブ手間が省ける。
|キーストローク|カーソル位置|捕捉説明|
|:-:|:-:|---|:-:|
||T| the の先頭 |
|G|| 最終行の先頭に移動 |
|fy|y| 行末方向の y に移動 |

つぎのマップはキーストローク12回未満で赤枠赤字のセルを削除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/13e07c12-90a2-e821-51f2-6e741017d775.png)

|キーストローク|カーソル位置|捕捉説明|キー回数|
|:-:|:-:|---|:-:|
||d| 文字列 find の末尾|0|
|Fx|x| 行頭方向の x に移動 |2|
|x|| 一文字削除 |1|
|j|| 一行下に移動 |1|
|,|x| 行末方向の x に移動 |1|
|x|| 一文字削除 |1|
|j|e| 一行下に移動 |1|
|;|x| 行頭方向の x に移動 |1|
|x|| 一文字削除 |1|
|j|x| 一行下に移動 |1|
|x|| 一文字削除 |1|
|||キー回数合計|11|

順調に進めるがキーストロークが1回足りません（汗）。マップ外にはじき出されるので、再びやり直します。今度は最初の`Fx`を`;`で代用してキー数を節約します。これって1回目は絶対うまく行かないようになってるのね（笑）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/fd529d6a-a5bb-c955-9a82-fb4343128eab.png)

|キーストローク|カーソル位置|捕捉説明|キー回数|
|:-:|:-:|---|:-:|
||d| 文字列 find の末尾|0|
|;|x| 行頭方向の x に移動 |1|
|x|| 一文字削除 |1|
|j|| 一行下に移動 |1|
|,|x| 行末方向の x に移動 |1|
|x|| 一文字削除 |1|
|j|e| 一行下に移動 |1|
|;|x| 行頭方向の x に移動 |1|
|x|| 一文字削除 |1|
|j|x| 一行下に移動 |1|
|x|| 一文字削除 |1|
|||キー回数合計|10|

するとキーストローク回数があと一回残って最後のxを無事に削除できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/8b091e17-d3d1-2ea0-0474-a10d8d3138b3.png)

鍵が出現するので入手します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/fa06a346-b8c0-3829-1d25-9e9ab54db386.png)

つぎのマップはキーストロークの回数制限が5回までです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/362ea0ab-147e-76ce-3c53-d99eae3a7de4.png)

|キーストローク|カーソル位置|捕捉説明|キー回数|
|:-:|:-:|---|:-:|
||w| 文字列 would の先頭|0|
|gg|W| 先頭行の行頭に移動 |2|
|tm|a| 行末方向の m の一文字左に移動 |2|
|k|| 一行上に移動してマップを抜ける |1|
|||キー回数合計|5|

最後はキーストロークの回数制限が2回までです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/0a91efa8-7ba3-76a0-d075-c1e01c22e625.png)

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

鍵で建物の中に入り青い髪のキャラのセルに到着すればレベル7クリアです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696922/7c686d65-a781-0aae-dd5d-90688db12e24.png)

[目次へ](https://qiita.com/mailstop/items/284f2a1300369b693f45)
[レベル6へ](https://qiita.com/mailstop/items/1cb4e1557f4a63277a65)
[レベル8へ](https://qiita.com/mailstop/items/b0a41995ac684c9166a3)