vimを使うとき十字キーで移動して、vimmerに殺されるその前に


## はじめに
あなたがこの記事を読んでいるということは、私はすでにこの世にはいないのでしょう。

最期に、あなたに私の犯した罪を告白します。
そうです、**vimでの移動に十字キーを使っていたのです。**

この事実を知ったvim教の信者たちが血眼になって私を探しています。
きっと、私は見つかるでしょう。
そしてMacBookの十字キーを全て剥がされ、**Logicoolの青軸キーボードで撲殺されるのです。**
それほどまでに私の罪は重いということは重々承知しています。

もし、これを読んでいるあなたが私と同じ業を背負っているのであれば今すぐ逃げてください。vimmerはどこにでも潜んでいます。
今日笑顔で話していた同僚が明日にはキーボードで殴りかかってくるかもしれないのです。
だからせめて、私のささやかな抵抗をここに書き記します。
あなたが私と同じ道を辿らないことを願って・・・・

## `esc`は海よりも遠いということ
そもそもの始まりは`i`を押した挿入モード状態で移動するという考えを捨てることからです。
挿入モードで移動することは容易ではありません。
生き延びるためにはまず、 **`esc`を押し、標準モードで移動すること**を心がけなければなりません。

・・・ええ、わかっています。
そんな簡単な話であれば私がこうしてvim教から迫害されることもなかったでしょう。
標準モードに戻るための`esc`は海よりも遠い場所にあります。
あなたがもしMacBookで、しかも**Touch Bar搭載モデル**であるならばその道はより険しく、辛いものになるはずです。
vimmerの洗礼は小指の腱がちぎれるほど`esc`を押す訓練から始まります。
ですが、我々は違います。私の友人たちは皆ここの`esc`を押せなかったがために十字キーで移動し、vimmerに命を奪われました。
そうならないための方法が１つだけあります。

 `Ctrl + [` です。

これで**`esc`を押すことなく標準モードに戻れるのです。**
あなたが私や私の友人たちと同じ道を辿ることは、私も、私の友も望んでいません。
どうか上のコマンドを覚えてください、ほんの少し標準モードに戻りやすくなったはずです。


## 過ちとは`j`,`k`,`h`,`l`だけで移動しようとすることです

標準モードに戻れたならあとは移動するだけ、そう思っていました。
十字キーに慣れた私はここでもう一つの、もっと根本的な過ちを犯したのです。
そうです。`j`,`k`,`h`,`l` この４つのキーを**十字キーと同じ感覚でつかおうとした**のです

ただカーソルを移動させるだけなら**マウスの方が早いのです。**
**vimではそんなものは認められません**

だからと言って、今から全ての移動コマンドを記憶しようとすることは聡明ではないでしょう。
山のような数のkeymapを覚えている間に殺されてしまいます。

私が書き記すのは`vimmerになるための術`ではありません。
`vimmerに殺されないため`の術です。

まずページを送りたいなら`Ctrl + f`で画面分下に進めます。
上に戻りたいなら`Ctrl + b`です。
あなたが慎重であれば半ページ上下移動がいいと望むでしょう。
そんな時は`Ctrl + u`/`Ctrl + d`を使うことを勧めます。
もっと大きく、ファイルの先頭に行きたいならば`gg`。
逆にファイルの終わりに行きたいのであれば`Shift + g`でたどり着けるでしょう。

当然ページ移動だけできたところで無力です。
カーソルが動かなければそれは生きていないことと同義です。
`:行番号`で指定した行に移動できます。
しかし、ああ、なんということでしょうか。開いただけのviでは行番号がわからないのです。

`:set number`で表示させてしまうことをご存知であればあなたは幸運です。
しかし我々が悠長に`number`と打とうものならvimmerは我々の愛する人を殺せるでしょう。

`:set nu`です。
我々に残された道はそこしかなかったのです。
より聡明であるならば事前に`grep -n `して行を特定しておくこともできるでしょう。
私はもちろんこの方法を使いました。
しかし、足りなかったのです。

grepに複数引っかかった時、全ての番号を記憶することは私には不可能に思えました。

そこで`/`です。
標準モードで`/`を押し、**調べたい単語を入力することで検索ができるのです**
次の検索箇所まで移動したい場合は `n`を押すといいでしょう。
`Shift + n`を押せば前の検索箇所まで戻れるでしょう。



## やるベきことがあるのなら、たどり着いた先で`f`を押しなさい

ここまでくればあなたはたどり着くべき行に辿りつくことができるはずです。
まるで自分がvimmerになったかのような優越感さえ感じるかもしれません。
その油断こそが私の犯した最大の罪です。
私はたどり着いた安堵感と、緊張からの開放から`i`を押し`→`キーでカーソルを右に移動させてしまったのです。
ほんの少しであっても十字キーに触れるエンジニアをvimmerは許しはしません。

あの時私は`f`で検索するべきだったのです。
`f + 文字`でカーソル以降、 **行内で**次の該当文字まで移動することができます。
例えば`f + t`なら引っかかるのは`t`です。
すでにカーソルが、その箇所を過ぎていたなら`F + 文字`で後ろに進めるでしょう。
２文字以上は打てません。１文字だけです。
そこから次の検索箇所まで移動したい場合は `;`を押すといいでしょう。
`,`を押せば前の検索箇所まで戻ることさえできます。

あるいは、`w`を押すことでも私には違った道が残されていたでしょう。
単語単位で移動ができます。
戻りたくなったならば`b`を押すといいでしょう。
`l`,`h`で横に進むよりははるかに早いはずです。

単語の末尾に移動したい？そんな時は`e`を押すといいでしょう。
きっとあなたの助けになるはずです。

そうだ、念の為これも伝えておきましょう
`^`で行頭、`$`で行末です。


## `i`で挿入している限り、彼らは我々を許しはしない

ここまできたあなたはもう恐れるものなどないかもしれません。
しかし、私は肝心なことを伝え忘れていました。
あなたが文字を挿入する時`i`で挿入モードに入っているならば`→`キーを使うのは避けられないことでしょう。
そう・・・たとえ行末に移動したところで`i`を押した時点で入力は**末尾からにはなりません**。
`→`で右にカーソルをずらさない限り不可能なのです。そうです、彼らは我々を許しはしません。
**`i`で挿入している限り.....** 


 あなたに残されたたった一つの希望を伝えます。
よく聞いてください。

`a`を押すのです。
**カーソルの後ろに文字を追加**できます。
全ての文字を`a`で入力しろというのではありません。
`i`と`a`を使い分けて初めてvimmerの魔の手から逃げ切れることができるのです。

もし、あなたが該当の行にすでにたどり着いており、
行末に文字を追記したいならば`$`を押す必要はありません。
`A`を押しましょう。きっと望む未来はすぐそこです。
そして、行頭に文字を挿入したいならば`I`を押しましょう。


## 手にいれた自由のその先に行くならば
これであなたは十字キーに触れることなくvimでの編集ができることでしょう。
vimmerもこれ以上あなたの命を狙おうとはしないはずです。

しかし、あなたがもし私の友人の仇をとりたいと願うならば
より深くvim教を知る必要があるでしょう。

ここで紹介したものはほんの一部です。vimにはまだまだ様々なコマンドがあります。
今回私が伝えた方法であっても、別のコマンドで同じことができるはずです。
Qiitaには先人たちの残したvim教の経典が数多く眠っています。
そうした記事はきっとあなたの助けになってくれるはずです。

 [脱初心者を目指すなら知っておきたい便利なVimコマンド25選 (Vimmerレベル診断付き)](https://qiita.com/jnchito/items/57ffda5712636a9a1e62)
 [Vim幼稚園からVim小学校へ](https://qiita.com/hachi8833/items/7beeee825c11f7437f54)


もしかしたらあなた自身がすでにvimmerになっているかもしれません。
それもまたいいでしょう。
人の幸福は、本人の努力でよってのみ得られるものなのですから。


どうやら、私はここまでのようです。
青軸キーボードのタイプ音がすぐそこまで迫ってきました。

私の罪は決して消えませんが
あなたがこれを読んでくれたことで、私の魂もいくばくか救われたことでしょう。

感謝のしるしに、この先のあなたの人生が幸福なものであるように祈ります。
十字のキーに願いを込めて.....

2019.07.07