エンジニアになりたての私は思っていました。
「Vimって何やねん??」と。。
エンジニアになると、やたらと周りから「Vim!」「ビム!」「びむ!」と聞こえてきます。しかし、私はその意味がわかっていませんでした。
プログラミング言語なのか、テキストエディタなのかすら把握していなかったのです。。
しかし最近では仕事で実践する中で徐々にVimについて理解し、ある程度のコマンドは使えるようになってきました。
そこで今回は、過去の私のように、「Vimって何?それ美味しいの?」と思っているそこのあなたに向けて、「Vimとは何か?」そして、「基本的なVimコマンド」を解説します。
この記事が少しでもあなたのエンジニアスキルの向上に役立てば嬉しいです。
※この記事はMacでの操作を想定しています。
Vimとは何か?【Vim概要】
一言でいうと、Vimとは「テキストエディタ」のことです。プログラミング言語ではありません。
ただ、一般的なテキストエディタ(AtomやVSCodeなど)とは大きく異なる特徴を持っています。
それは、AtomやVSCodeがGUI(マウスとかで操作できる)なのに対し、Vimは「CLI(ターミナルでコマンド操作)」だということです。
つまり、ターミナルからコマンドを打ち込むことで、Vimというテキストエディタを操作することができます。
Vimは、「ターミナル(CLI)から操作するテキストエディタ」
- GUI・・・グラフィカル・ユーザ・インターフェース(Graphical User Interface)
- CLI・・・キャラクタ・ユーザ・インタフェース(Character User Interface)
Vimと同じように、Viというテキストエディタもあります。「何が違うの?」と思っている方もいると思いますが、ハッキリ言って違いはほとんどありません。単に、Viを使いやすいように機能拡張したものがVimというだけです。Vimで使えるコマンドは、基本的にはViでも同じように使えます。
なぜVimを使う必要があるのか?【メリット】
あなたは今こう思っているはずです。
「なぜそんなの使う必要があるの?別にVSCodeとかでいいじゃん!」と。
分かります。私もVimをよく知らなかった頃はそのように思っていました。
しかし今ではハッキリと「Vimは必要!」と言えます。なぜなら、Vimが持つ強力な「メリット」を知っているからです。
では、Vimが持つ「メリット」とは何なのでしょうか。
たくさんありますが、今回は代表的な3つをご紹介します。
- マウスやパッドを使わなくていいので、作業効率が上がる
- サーバー内で操作できる
- サクッとコードを修正できる
マウスやパッドを使わなくていいので、作業効率が上がる
vimの特徴の一つは、CLIであるため、マウスやパッドを使う必要がない点です。
全ての操作をキーボードだけで行うことができます。
もちろん、キーボードだけで操作をするのは、慣れるまでは大変です。
しかし、一度慣れてしまえば、いちいちマウスを使うよりも断然早く作業を進めることができるので作業効率は上がるでしょう。
サーバー内で操作できる
vimが特に活躍する場面があります。それは、「サーバー(コンテナとかも)内のファイルを操作するとき」です。
なぜなら、サーバー内ではGUIのエディタを使うことができないからです。(サーバー内でVSCodeは開けませんよね?)
そんなとき、Vimならサーバー内でサクッとファイルを編集できます。これもVimの大きなメリット(というか、学ばないといけない理由)の一つでしょう。
サクッとコードを修正できる
プログラミングをしていると、「若干コードを修正したい」場面が出てきます。
そんなとき、VSCode等のIDE(統合開発環境)を使っている場合は、ターミナルで作業をしていてファイルを編集したい場合に、いちいちVSCodeを開いて移動する必要があります。
一方Vimの場合は、その場でさっとファイルを開いて、サクッとコードを編集・修正することができます。
これは確実に作業時間の短縮に繋がるでしょう。
ここまでで、「Vimとは何か」は理解できたと思います。次は、「Vimの基礎的なコマンド」を紹介します。
Vimの基礎的なコマンドまとめ
Vimの基礎的なコマンドについて簡単にまとめておきます。
単に見るだけでなく、実際に手を動かしてみて下さい。よりVimに対する理解が深まると思います。
前提:モードについて
コマンド紹介に入る前に、前提となる知識について勉強しましょう。Vimの「モード」についてです。
vimには「モード」という概念があり、それぞれのモードでできることに差異があります。
基本として押さえておきたいのは以下の4つのモードです。(細かく言えば他にもモードはあるのですが、初歩としてはこの4つさえ知っていれば十分です)
- ノーマルモード
- ビジュアルモード
- インサートモード
- コマンドモード
それぞれ簡単に説明します。
ノーマルモードは、Vimを起動した段階で設定されているモードです。カーソルの移動や文字の移動、削除等を行うことができます。Vimでファイルを編集する際の、起点となるモードと考えておけばいいでしょう。
ビジュアルモードは、ファイルに書かれてある文字列を選択するモードです。例えば、指定した範囲の文字列を削除するなどの操作が可能となります。ただ、使用頻度はそこまで多くはなく、他の3つのモードよりは重要度は下がると思います。
インサートモードはその名の通り、「文字を入力するモード」です。ファイル内に書かれてある文字列を編集したり、新たな文字列を追加することができます。
コマンドモードとは、コマンドを入力するモードです。変更内容の保存、Vimの終了、タブの生成等の操作を行うことができます。
Vimの始め方(起動方法)
Vimを始める(起動する)のは簡単です。
以下のコマンドを打つことで、対象のファイルをVimで開くことができます。
vim [file name]
開きたいファイル(vim.txt)を指定する。
対象のファイルをVimで開ける。
vimの基礎的なコマンドまとめ
Vimの基礎的なコマンドをまとめます。
これらのコマンドを押さえたら、「vimの基礎」はマスターしたと言っていいでしょう。
以下のように操作のジャンルごとに分けて紹介します。
移動
カーソルを移動させるコマンドです。ノーマルモードで使用します。
h | 左に一つ移動 |
---|---|
j | 下に一つ移動 |
k | 上に一つ移動 |
l | 右に一つ移動 |
e | 単語の末尾に進む |
w | 単語の先頭に進む |
b | 単語の先頭に戻る |
0 | ノーマルモードのまま行の先頭に移動 |
$ | ノーマルモードのまま行の末尾に移動 |
shift + [ | 飛ばし飛ばしで上に移動 |
shift + ] | 飛ばし飛ばしで下に移動 |
control + u | 半画面上に戻る |
control + d | 半画面下に進む |
[[ or H or gg | 一番上に移動 |
M | 画面の真ん中に移動 |
]] or L or G | 一番下に移動 |
数字 + gg | 入力した数字の行へジャンプ |
f | 1文字検索してカーソル移動(その行の順方向) |
F | 1文字検索してカーソル移動(その行の逆方向) |
/[任意の文字] | 指定した文字がある場所に移動 |
削除
文字や行を削除する操作です。
x | カーソル上の文字削除(インサートモードには入らない) |
---|---|
r + 文字を入力 | カーソル下の文字を置き換える |
dd | 1行削除 |
cc | 1行消してインサートモードに入る(dd + iとほぼ同じ) |
v + hjkl + d | 選択した文字列を削除 |
V + d | 選択した1行を削除 |
V + jk + d | 選択した複数行を削除 |
ggVG + d | ファイル内の全ての記述を削除 |
モード変更
モードを変更する操作です。
個人的には、ほとんどノーマルモードとインサートモードしか使いません。そのため、インサートモード←→ノーマルモードの移動がスムーズにできれば十分かなと思います。
control + [ or esc | ノーマルモードへ(個人的にはcontrol + [ がオススメ) |
---|---|
i | その場でインサートモードへ |
a | 1文字後ろでインサートモードへ |
A | 行の最後に移動してインサートモードへ |
I(アイ) | 行の先頭に移動してインサートモードへ |
o | 1行下に移動してインサートモードへ |
v | ビジュアルモードへ |
v | ビジュアルモードを抜ける |
V | 行選択のビジュアルモードへ(ビジュアルラインモード) |
V or vv | 行選択のビジュアルモードを抜ける |
Exコマンド
ノーマルモードで:(コロン)を打つと、コマンドモードに移行し、続けてコマンドを実行することができます。
このときに打つコマンドのことをExコマンドと言います。
基礎的なExコマンドをまとめてみました。(:も含めて書いています)
:w | 保存する |
---|---|
:wq | 保存して画面を閉じる |
:q | 保存せずに画面を閉じる |
:wq! | (保存して)画面を強制的に閉じる |
:set number | 行番号を表示する |
:set nonumber | 行番号を非表示にする |
:vsp name | 名前(name)指定でwindow(画面)分割 |
control w + h or l(エル) | (画面分割した状態で)hで左に移動、lで右に移動 |
:clo | カレントウインドウを閉じる |
:on | カレントウインドウ以外を閉じる |
:tabnew name | 名前(name)指定で新しいタブを作る |
gt, gT | 次のタブ(前のタブ)に移動 |
その他操作
その他よく使う操作をまとめておきます。
yy | 1行コピー(ヤンク) |
---|---|
p | コピーした文字をペースト |
J | カーソルがある行に1つ下の行を連結する |
>> | インデントを一つ付ける |
<< | インデントを一つ戻す |
u | undo(一つ前の状態に戻す) |
control + r | redo(一つ次の状態に進める) |
.(ドット) | 同じ操作を繰り返す |
とりあえずこれだけ押さえておけば、基本的なところは十分かなと思います。
Vimの練習にオススメのツール【無料】
個人的にVimの練習でオススメなのは、「Vimtutor」です。
これはvim公式の練習ツールで、実際に手を動かしながらvimの基礎的なコマンドを学べます。(私も最初はこの教材に取り組みました)
始め方は簡単です。
Macの場合は、以下のコマンドをターミナルで打つだけで、Vimtutorを起動することができます。
vimtutor
※Linux,Windows等の別のOSを使っている方は、若干別の手順を踏む必要があります。こちらを参考に設定してみて下さい。
vimをマスターするには、結局のところ「慣れる」しか道はないので、どんどん使ってvimに慣れ親しんでいって下さい。
Vimの勉強にオススメの参考記事
最後に、私がVimの勉強する際に使ったオススメの記事を貼っておきます。どれも本当に参考になるので、ぜひ読んでみて下さい。
Vim基礎まとめ
最後に、今回の内容を簡単にまとめます。
- VimとはCLIで使えるテキストエディタ
- 主に4つのモードがある
- それぞれのモードでできる操作が異なる
- Vimを習得するにはとにかく慣れるしかない
この記事の内容をマスターしたら、確実に「脱初心者」はできていると言って良いと思います。あとはコツコツと使える操作を増やしていくだけなので頑張って下さい!
今回は以上となります。
この記事が少しでもこれからVimを始める方の一助となっていれば幸いです。