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


はじめに

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

最期に、あなたに私の犯した罪を告白します。

そうです、vimでの移動に十字キーを使っていたのです。

この事実を知ったvim教の信者たちが血眼になって私を探しています。

きっと、私は見つかるでしょう。

そしてMacBookの十字キーを全て剥がされ、Logicoolの青軸キーボードで撲殺されるのです。

それほどまでに私の罪は重いということは重々承知しています。

もし、これを読んでいるあなたが私と同じ業を背負っているのであれば今すぐ逃げてください。vimmerはどこにでも潜んでいます。

今日笑顔で話していた同僚が明日にはキーボードで殴りかかってくるかもしれないのです。

だからせめて、私のささやかな抵抗をここに書き記します。

あなたが私と同じ道を辿らないことを願って・・・・


escは海よりも遠いということ

そもそもの始まりはiを押した挿入モード状態で移動するという考えを捨てることからです。

挿入モードで移動することは容易ではありません。

生き延びるためにはまず、 escを押し、標準モードで移動することを心がけなければなりません。

・・・ええ、わかっています。

そんな簡単な話であれば私がこうしてvim教から迫害されることもなかったでしょう。

標準モードに戻るためのescは海よりも遠い場所にあります。

あなたがもしMacBookで、しかもTouch Bar搭載モデルであるならばその道はより険しく、辛いものになるはずです。

vimmerの洗礼は小指の腱がちぎれるほどescを押す訓練から始まります。

ですが、我々は違います。私の友人たちは皆ここのescを押せなかったがために十字キーで移動し、vimmerに命を奪われました。

そうならないための方法が1つだけあります。

Ctrl + [ です。

これでescを押すことなく標準モードに戻れるのです。

あなたが私や私の友人たちと同じ道を辿ることは、私も、私の友も望んでいません。

どうか上のコマンドを覚えてください、ほんの少し標準モードに戻りやすくなったはずです。


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

標準モードに戻れたならあとは移動するだけ、そう思っていました。

十字キーに慣れた私はここでもう一つの、もっと根本的な過ちを犯したのです。

そうです。j,k,h,l この4つのキーを十字キーと同じ感覚でつかおうとしたのです

ただカーソルを移動させるだけならマウスの方が早いのです。

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 + 文字で後ろに進めるでしょう。

2文字以上は打てません。1文字だけです。

そこから次の検索箇所まで移動したい場合は
;を押すといいでしょう。

,を押せば前の検索箇所まで戻ることさえ高きます。

あるいは、wを押すことでも私には違った道が残されていたでしょう。

単語単位で移動ができます。

戻りたくなったならばbを押すといいでしょう。

l,hで横に進むよりははるかに早いはずです。

単語の末尾に移動したい?そんな時はeを押すといいでしょう。

きっとあなたの助けになるはずです。

そうだ、念の為これも伝えておきましょう

^で行頭、$で行末です。


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

ここまできたあなたはもう恐れるものなどないかもしれません。

しかし、私は肝心なことを伝え忘れていました。

あなたが文字を挿入する時iで挿入モードに入っているならばキーを使うのは避けられないことでしょう。

そう・・・たとえ行末に移動したところでiを押した時点で入力は末尾からにはなりません

で右にカーソルをずらさない限り不可能なのです。そうです、彼らは我々を許しはしません。

iで挿入している限り.....

あなたに残されたたった一つの希望を伝えます。

よく聞いてください。

aを押すのです。

カーソルの後ろに文字を追加できます。

全ての文字をaで入力しろというのではありません。

iaを使い分けて初めてvimmerの魔の手から逃げ切れることができるのです。

もし、あなたが該当の行にすでにたどり着いており、

行末に文字を追記したいならば$を押す必要はありません。

Aを押しましょう。きっと望む未来はすぐそこです。

そして、行頭に文字を挿入したいならばIを押しましょう。


手にいれた自由のその先に行くならば

これであなたは十字キーに触れることなくvimでの編集ができることでしょう。

vimmerもこれ以上あなたの命を狙おうとはしないはずです。

しかし、あなたがもし私の友人の仇をとりたいと願うならば

より深くvim教を知る必要があるでしょう。

ここで紹介したものはほんの一部です。vimにはまだまだ様々なコマンドがあります。

今回私が伝えた方法であっても、別のコマンドで同じことができるはずです。

Qiitaには先人たちの残したvim教の経典が数多く眠っています。

そうした記事はきっとあなたの助けになってくれるはずです。

脱初心者を目指すなら知っておきたい便利なVimコマンド25選 (Vimmerレベル診断付き)

Vim幼稚園からVim小学校へ

もしかしたらあなた自身がすでにvimmerになっているかもしれません。

それもまたいいでしょう。

人の幸福は、本人の努力でよってのみ得られるものなのですから。

どうやら、私はここまでのようです。

青軸キーボードのタイプ音がすぐそこまで迫ってきました。

私の罪は決して消えませんが

あなたがこれを読んでくれたことで、私の魂もいくばくか救われたことでしょう。

感謝のしるしに、この先のあなたの人生が幸福なものであるように祈ります。

十字のキーに願いを込めて.....

2019.07.07