Ateam Commerce Techのアドベントカレンダー 9日目は@shimura_atsushiが担当します。
昨今
ソフトウェアエンジニアにとって欠かすことができないテキストエディタですが古今東西様々なものがあります。
私はかねてからVim
を愛用していますがこの頃はMicrosoft
のVisualStudioCode
がとても人気で一強の様相です。
私の職場でもVisualStudioCode
を使っている人が大半でVimを利用しているのは私一人となってしまいました。
Vimはトリッキーで最初はとっつきにくいエディタですが一通りコマンドを覚えてしまえばとて便利なエディタです。
コマンドを覚えるまでが大変なところがありますがゲーム感覚でVimに慣れたり、Vimのコマンドを覚えてしまおうというのが今回紹介するVim ゴルフ
です。
準備
まずVimがないと話が始まらないので手元のPCでVimを使えるようにしましょう
ここから少しVimの説明が入ります。
Vimのことは知ってる!!Vimの説明はいいからVim ゴルフの説明お願いって人は直下のリンクでジャンプ
Mac
Macでは初期状態からVimがインストールされているのでターミナルを開いてVim
コマンドを実行すれば立ち上がるはずです。
Windows
Vimの公式にインストーラーがあるのでインストール後パスを通せばPowerShellやコマンドプロンプトから起動できます。
Vim公式
Windowsの場合、WSL2でLinuxをインストールすればVim
は初期状態からインストールされていることが多いので準備が楽です。
GUIが欲しい人は...
VimとはいえGUIがほしいという人はGUI版のVimがあります。
以下からインストーラをダウンロードできます。
Mac
Windows
VisualStudioCode
どうしてもVisualStudioCodeがいいんだって方はVisualStudioCodeでVimをエミュレートできるプラグインがありますインストールすることでVimのキーバインドでVisualStudioCodeを操作できます、試してみてください。
Vimを覚えよう
モード
Vimには主に3つのモードがあります、それぞれ特徴がありうまく使い分けることがより効率いいテキスト編集を実現します。
初見では理解するのに苦労するかもしれませんがVimを使う上では欠かせない概念です。
コマンドモード
Vimを起動すると初期状態はこのコマンドモードです。
コマンドを用いてテキストを編集するモードです。
例えば...
-
x
でカーソル上の一文字を削除- コマンドモードは
Delete
キーやBackSpace
キーでは削除できません
- コマンドモードは
-
u
でアンドゥ -
w
でカーソルを次の単語へジャンプさせる
カーソルを移動
コマンドモードではカーソルの移動を上下左右キー(↑↓←→)ではできません。
カーソルの移動もコマンドで行います。
- カーソルを上へ一つ移動
- kキー
- カーソルを下へ一つ移動
- jキー
- カーソルを左へ一つ移動
- hキー
- カーソルを右へ一つ移動
- lキー
Vimには他にも数多のコマンドが存在します、Googleで調べるなりひとつづつ覚えていきましょう。
インサートモード
コマンドモートでキーボードのi
を押すとインサートモードに遷移します。
エディタの下部に
INSERT
もしくは日本語なら挿入
と表示されます
文字や記入したり編集したりするのはこのモードで行います、通常のテキストエディタと同じ状態です。
このモードでは上下左右キー
によるカーソルの移動やDelete
キー、BackSpace
キーによる文字の削除ができます。
ビジュアルモード
テキストの編集をより効率的に行うための要となるモードです。
ビジュアルモードではテキストを範囲選択でき選択した範囲に対して何かしらの操作をするためのモードです。
ビジュアルモードはコマンドモードでv
を押すことで遷移します。
例えば...
ビジュアルモードで複数の文字を選択した状態でy
を押すことで選択した範囲をヤンク(コピー)することができます。
ビジュアルモードには通常のビジュアルモードとは別にビジュアルブロックモード、ビジュアルラインモードがあります。
- ビジュアルブロックモード
-
Ctrl + v
で起動 - 選択を矩形範囲ですることができます。
-
- ビジュアルラインモード
-
Shift + Ctrl + v
で起動 - 選択を行単位ですることができます。
-
Escキー
Vimを扱う上で最も重要度が高いキーと言っても過言ではありません。
Escキーはインサートモードやビジュアルモード滞在時にコマンドモードへ戻る機能を持ちます。
「困ったらEscキー」という格言がVim界にあるようにVimを利用している上でモードや状態に迷子になった時にEscキーを用いることで
コマンドモードへ戻りニュートラルな状態に復帰させることができるためです。
そして触ってみよう
VimはWebや書籍などの文字ベースである程度の知識を入れたら実践してなれることが上達への圧倒的な近道です、慣れるまではきついかもしれませんが頑張って乗り越えましょう。
特にビジュアルモードは文字での説明ではイメージしづらいので実際に機能に触れてみるのがいいかと思います。
Vimゴルフをしよう
Vimの基本を押さえたらVimゴルフにトライしましょう!
Vimゴルフとは?
実際のゴルフは打数が少ないプレイヤーが勝ちですがその要素をVimよるテキスト編集に取り入れたのがVimゴルフ
です。
決められた文章に編集するためのストローク数を競う遊びです。
より少ないストロークを狙うためにはVimのコマンドを駆使する必要があるのでゲーム感覚でVimのコマンドに触れ合い覚えることができます。
例題
より少ないキーストロークでスタート
をゴール
にしましょう
Q1
スタート
1234567890
ゴール
1234467890
回答例
Q2
スタート
ABCDEFG
ゴール
G
回答例
Q3
スタート
1234567890
ゴール
1234567890
1234567890
回答例
Q4
スタート
let's play vim
ゴール
let's play vi
回答例
問題を出し合おう
Vimゴルフの要領を得てきましたら自身で問題を作成してみるとよりVimのコマンドについて詳しくなると思います。
今回、Vimの紹介や例題で扱ったコマンドはその1割にも満たないです、まだまだ実戦で使えるコマンドが沢山あるのでVimゴルフを通じで楽しみながら覚えたり慣れることができたらGoodです。
Vimを使うモチベーション
Vimは他のテキストエディタに比べると圧倒的に学習コストが高いエディタです。
Vimの起動時のモードはコマンドモードなのでカーソルの移動や文字の入力がままならないかもしれません。
いざ文章を作成しても初見では保存やエディタの終了もままならなず、GUIのエディタとは一線を画する作りになっています。
ただそれでもVimを使い続けるのはVimが手に馴染むエディタ
だからです、Vimはとにかくカスタム性に優れたエディタです。
普段エディタでコーディングなどの作業している時になにかちょっと気持ち悪いなと思った操作感を.vimrc
という設定ファイルに設定を追加して解消したときの快感は忘れられません。
すべてのVimmer
は常に自分の手に馴染む設定を模索し.vimrc
を試行錯誤しVim
を育て
ていくのです、そうなった時あなたはVimを手放せなくなるでしょう。