LoginSignup
13
5

More than 1 year has passed since last update.

Ateam Commerce Techのアドベントカレンダー 9日目は@shimura_atsushiが担当します。

昨今

ソフトウェアエンジニアにとって欠かすことができないテキストエディタですが古今東西様々なものがあります。
私はかねてからVimを愛用していますがこの頃はMicrosoftVisualStudioCodeがとても人気で一強の様相です。
私の職場でもVisualStudioCodeを使っている人が大半でVimを利用しているのは私一人となってしまいました。

Vimはトリッキーで最初はとっつきにくいエディタですが一通りコマンドを覚えてしまえばとて便利なエディタです。
コマンドを覚えるまでが大変なところがありますがゲーム感覚でVimに慣れたり、Vimのコマンドを覚えてしまおうというのが今回紹介するVim ゴルフです。

準備

まずVimがないと話が始まらないので手元のPCでVimを使えるようにしましょう

ここから少し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

回答例

その1

# 7打
llllxi4
  • 解説
    • シンプルにカーソルを5までlで移動させxで削除したのちiでインサートモードで移行し4を入力します。
    • 今回の記事紹介したコマンドで可能な範囲のストロークです。

その2

# 5打
f5xi4
  • 解説
    • fコマンドで5までカーソルを移動させxで削除しiでインサートモード移行したのち4を入力
    • ffを入力した直後の文字をカーソル以後同じ行を検索し最初にヒットした箇所までカーソルを移動させます。

Q2

スタート

ABCDEFG

ゴール

G

回答例

その1

# 6打
xxxxxx
  • 解説
    • 愚直にxコマンドで1文字づつ6文字削除します。
    • これではVimを利用している意味が薄れてしまいます。

その2

# 2打
6x
  • 解説
    • 実行したいコマンドの前に数字を入力することで入力した分の数直後のコマンドを繰り返して実行してくれます。
    • この特性を活かすことでわずか2打で6文字を削除することができます。

Q3

スタート

1234567890

ゴール

1234567890
1234567890

回答例

その1

# 12打
i1234567890[ENTER]
  • 解説
    • iでインサートモードへ移行後1-0までの数字を入力しエンターキーで改行します。
    • これではまたQ2同様Vimを利用している意味が薄れてしまいます。

その2

# 3打
yyp
  • 解説
    • yyコマンドで行ヤンク後、pコマンドでペーストします。
    • yyコマンドはカーソルがある行を一行まるごとヤンクします。
    • pコマンドはヤンクされたものをカーソルの次の行へペーストします。

Q4

スタート

let's play vim

ゴール

let's play vi

回答例

その1

# 3打
fmx
  • 解説
    • Q2で登場したfコマンドでmを検索してカーソルをmまで移動させてxで削除しています。

その2

# 2打
$x
  • 解説
    • $コマンドはカーソルを行末まで移動させてくれます、その後xで削除することで2打でゴールへたどり着けます。

問題を出し合おう

Vimゴルフの要領を得てきましたら自身で問題を作成してみるとよりVimのコマンドについて詳しくなると思います。
今回、Vimの紹介や例題で扱ったコマンドはその1割にも満たないです、まだまだ実戦で使えるコマンドが沢山あるのでVimゴルフを通じで楽しみながら覚えたり慣れることができたらGoodです。

Vimを使うモチベーション

Vimは他のテキストエディタに比べると圧倒的に学習コストが高いエディタです。
Vimの起動時のモードはコマンドモードなのでカーソルの移動や文字の入力がままならないかもしれません。
いざ文章を作成しても初見では保存やエディタの終了もままならなず、GUIのエディタとは一線を画する作りになっています。

ただそれでもVimを使い続けるのはVimが手に馴染むエディタだからです、Vimはとにかくカスタム性に優れたエディタです。
普段エディタでコーディングなどの作業している時になにかちょっと気持ち悪いなと思った操作感を.vimrcという設定ファイルに設定を追加して解消したときの快感は忘れられません。
すべてのVimmerは常に自分の手に馴染む設定を模索し.vimrcを試行錯誤しVim育てていくのです、そうなった時あなたはVimを手放せなくなるでしょう。

13
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
5