食わず嫌いは良くない!?使ってみればわかった男前エディタVim!!

皆様は、メンターにマウスを禁止されたことはありますか!?

新卒入社1年目のshotaです!

私は恥ずかしながら最近までvimの存在を知らなかったのですが、とあるきっかけがあり3ヶ月程前にVimを触り始めてみました!その期間で、どのようにvimに歩み寄ったかを紹介します。

今までvimに触れたことが無く、これからvimを触りたい!と考えてる方の助けになればと思います。

第一印象

入社した当時はvimというエディタの存在を知りもしませんでした。

というのも学生時代はDirectXやOpenGLといったグラフィックAPIをVisualStudio等の統合開発環境で主に作業をしていたため、CLIに触れる機会も無くエディタに対して何一つ不自由を感じたことがなかったからです。

そんな自分が初めてvimを触れたのは入社後の研修中のことでした。その時の印象を箇条書きで書きますと

  • なんでマウス使わないの?
  • hjklでカーソル移動?誰得?
  • 普通に入力できないの?
  • モードとかややこしいだけじゃない?
  • 使いにくい。。。

と、正直な話最初はネガティブな印象しかないエディタでした。。

きっかけ

入社するまではUnix/Linuxのターミナルを触る事はありませんでしたし、今後も触るつもりがなかったので「別にvimで無くとも文字は書けるしこんな使いづらいエディタ使わなくてもいいかー」と高を括っていたのですが、親しい同僚達にはvimを利用している方が多く、魔法のように文字を入力している姿を見て衝撃を受けました。

「ここまで出来るようになればかっこいいなぁ」と感じて、自分もこの領域まで到達してやる!とvimを使う決意をしたのです。(要するに使いこなすとかっこよさそうだったから!)

3ヶ月間で取り組んだこと

エディタは必ずvimを使用する

vimを触る決意をしてまずはじめに取り組んだのが、何を書くにも日報を書くにもちょっとしたメモを残すにもとりあえずvimを使用するということです。

ちょうどその時期は案件に配属されてから、1週間を利用して簡単なゲームを制作するというタスクを課せられていました。

その時点ではインサートモードに入り文字を入力してノーマルモードに戻るぐらいの知識しかなく、vimに対する感想は随所でアピールしているのですが「漫画ドラゴンボールの悟空の胴着」です。この頃はどうにも通常のキーバインドのエディターの方が効率がよかったです。。

vimとの格闘の中で躓いたりわからないことがあればすぐに調べることで、vimに対する知識を実用レベルでどんどん吸収することができたので、これからvimを触る方にはぜひ実践していただきたいです。

マウスを極力触らないようにする

私はwindows用のvimを利用させていただいていたので、実はマウスが使えます。

vimというエディタはマウスがまだ一般的でなかった時代に作られたviと呼ばれるエディタを元に制作されたという話を聞いてマウスを極力触らないよう意識をするようになりました。

元々マウスを多用する方だったので少し気を抜くとマウスに手が伸びてしまい。この取り組みには大変苦労しました。

しかしこの苦労を乗り越えてh,j,k,lでの移動や移動に便利なコマンド等を活用できるようになり、今ではマウスに手を伸ばすこと自体が億劫になっています!

一日一つ便利なコマンド等を覚える

vimを触り始めてから最初の1ヶ月あたりは1日に1つずつ便利そうなコマンドを覚えていきました。

物覚えが悪い自分にはこの方法が実に効果的で、この時の知識が今でも業務で活躍しています。

その中から5つピックアップして紹介いたします。

「*」

as

単純ですがとても強力でした。

任意の単語の上で「*」を入力すると、その単語で検索を掛けてハイライトをしてくれます。その後「N」,「n」でそれぞれ前方後方の単語へジャンプできます。

「f,F,t,T」

fFtT

自分は主に行中の移動で利用しています。

「f」の後に任意の1文字を入力すると次に出てくる文字の上に、「t」の場合は文字の手前にカーソルがジャンプします。

それぞれ大文字の場合はジャンプの方向が前方になり、直近にジャンプした文字は「;」で次へ「,」で前へジャンプできます。

「◯i◯,◯a◯」

diw

動作+a or i+対象」という使い方をして、対象に対して動作を行います。

例えば「vi”」の場合。「区切り文字を含めない”で囲まれたテキストをビジュアルモードで選択する」というコマンドになります。

このとき「i」を利用すると対象に区切り文字を含めず、「a」を利用すると対象に区切り文字を含むことができます。

「i」や「a」は挿入モードに切り替えるiやaと違いそれぞれinnerと冠詞のaという意味を持つそうです。

また対象を「w」とすることで単語を対象にすることができます。

「J,gJ」

gJ

ビジュアルモードで選択した行を連結することができます。

「J」の場合連結時にスペースが挿入されますが、「gJ」を利用することでスペースを挿入せずに連結することができます。

「ctrl+v」

ctrlv

こちらのコマンドはビジュアルモードで矩形選択をするものです。

また矩形選択時に「I」,「A」どちらかで挿入モードに入り文字を入力したあとノーマルモードに戻ると選択した行すべてに同じ入力ができます。

前述の「J」,「gJ」を併用して改行区切りのデータを手軽にCSVに整形できるので、業務でもよく使っています。

.vimrcにキーバインドを記述する

2ヶ月目に入り操作にも慣れてきたころ、.vimrcというファイルに記述をすれば思い通りに設定ができることを思い出したので、前々から使い辛いと思っていた以下の4つのキーバインドを変更しました。

  1. 行頭へジャンプ:「0」→「ctrl+h」
  2. 行末へジャンプ:「$」→「ctrl+l」
  3. 画面上の先頭行へジャンプ:「H」→「ctrl+k」
  4. 画面上の末尾行へジャンプ:「L」→「ctrl+j」

最初にhjklのキーバインドに矯正したこともあり、こちらのバインドを設定するだけでカーソルのジャンプがとても直感的になりました。

何よりこのバインドではホームポジションからほとんど指を動かす必要が無くなるので素早く操作ができるようになります。

また新バインドのうち、1,2,4については元々別の機能がバインドされていますが、1,4はctrlを押さずに入力した場合と同じ機能がバインドされていて、2についても画面の再描画という今まで使ったことがない機能がバインドされています。

今のところ使う場面に出くわしていませんので、必要になれば使わなくなった「0」や「$」にバインドしようと考えています。

これから

3ヶ月間で標準のVimにはそこそこ慣れてきました。

ですが実はまだvimの本領ともいえるであろうプラグインによる拡張を試せていません。

同期の友人はプラグインでいろいろ拡張してとても便利にしているので、そろそろ3,4ヶ月目に入ることですしいろいろなプラグインを試してみたいなぁ。

しかし標準の状態でもちょっとコマンドを覚えるだけでコーディングの効率が上がりましたし、何より入力が楽しくなりました!

また、vimに慣れてきたといいましても、まだまだ手が覚えておらずやりたい動作を瞬時に入力できませんし知らないコマンドも山ほどあるので時間をかけてもっとお近づきになりたいと思います。

長文ですが最後までお付き合いいただきありがとうございました。

このブログについて

KLabのゲーム開発・運用で培われた技術や挑戦とそのノウハウを発信します。

おすすめ

合わせて読みたい

このブログについて

KLabのゲーム開発・運用で培われた技術や挑戦とそのノウハウを発信します。