vimとはLinuxでよく使われるテキストエディタである
さて、今回の記事では初めてLinuxを触る人が嫌いがち?なvimについて簡単にまとめておきます。
vimは『ヴィム』などと読むテキストエディタのことです。Windowsでいう『メモ帳』の親戚と思ったらいいですね。
CUIでLinuxを扱う際に、ちょっとしたファイルの編集なんかでよく使います。
vim ~/.bash_profile
といった感じで起動します。↑のコードはホームディレクトリにある『.bash_profile』というファイルをvimで開く、という指示になりますね。
ググって出てきたページにかかれているコマンドをよくわからずにコピペしていたら、それが実は先程のようにvimを使って何らかのファイルを開く指示で、いきなりわけのわからないことになってすごくビビったのをよく覚えていますw
先程『メモ帳の親戚』とは言いましたが、CUI、つまり文字(キーボード)だけで操作をするテキストエディタであり、しかも操作もメモ帳とはずいぶん異なるので最低限の操作を知っておかないとファイルを保存するどころか編集や、閉じ方すらわからなくて困ったりする可能性があります。
そんなvim超初心者向けにこの記事を残すことにしました。
(ちなみに私も相変わらず最低限の機能しか使っていないので初心者には違いありません)
この記事での目標
vimを全く知らない人が、基本中の基本の操作を覚えて簡単なファイルの編集ができるようになる。
環境
環境
- Windows Subsystem for Linux (Ubuntu 18.04)
(もちろんべつにLinuxならなんでもいいです)
vimの基本操作(開く・保存)
とりあえずなんか開いてみよう
さて、一応超最低限のLinuxコマンドは知っている前提で書きますね(Linuxコマンドの基礎の基礎はまた記事書く予定)。
適当なテキストファイルを作ってもいい場所に移動してvimで『hoge.txt』というファイルを開いてみましょう。
私は別にホームディレクトリでいいやって感じなのでそこに作りますね。
cd ~ vim hoge.txt
はい、vim ファイル名
で『ファイルをvimで開く』指示になります。
ちなみに存在しないファイル名を指定すると、勝手にその名前でファイルを新規作成してくれるので大丈夫です。つまりhoge.txt
なんてファイルが存在しないときにこのコマンドを打てば勝手に作ってくれますので大丈夫です。
左下に表示されるファイル名の横に [New File] と表示されていますね。これが表示されているということは『あなたの言ったファイルは存在しなかったからとりあえず新規作成したよ』ということを表しています。
逆に存在するはずのファイルを開いたつもりなのにNew Fileになっていたらファイル名(パス)を間違えている可能性大なので確認しましょう。
ちなみに存在しているファイルを開いた場合の表示はこちら。
たぶんLはLinesで行数、Cはcharactersで文字数でしょうね(文字数は1文字が1カウントじゃないみたいだけど)。
ファイルを開くのはまぁ簡単ですね。
ファイルを編集してみよう
さて、開いた状態で『i』キーを1回押してみてください。
左下に-- INSERT --
と表示されましたね?
この状態でabcde
と入力してみましょう。画面に表示されたと思います。
ここで『Esc(エスケープキー)』を入力してみましょう。今度は-- INSERT --
の表示が消えました。
その状態で今度は『Shiftキーを押したままZキーを2回』押してください。画面が閉じてコマンドラインに戻ってきたと思います。
今やった操作は次のようになっています。
操作 | 内容 |
---|---|
i キー | モードをインサートモードに変更 |
abcde | テキストに『abcde』と入力(ただの文字入力) |
Esc キー | モードをノーマルモードに変更 |
Z Z (Shift + z z) | 保存して閉じる |
vimにはモードという概念がある
3種類のモード
さて、聞き慣れない言葉が出てきました。
インサートモード、ノーマルモードなるものが存在するようです。
実はvimにはあとビジュアルモードというものを合わせて3つのモードが存在するのです。ここがメモ帳なんかとは異なるので最初よくわからないんですよね。
モードの種類 | モードの説明 |
---|---|
インサートモード (Insert mode) |
その名の通り、文字を入力するときのモード。 画面左下にはINSERT (挿入)と表示される。 |
ノーマルモード (Normal mode) |
保存や行削除といった様々なコマンドを入力するときのモード。 画面左下にはファイル名などの情報が表示されるか何も表示されていない。 |
ビジュアルモード (Visual mode) |
コピー時のようにテキストの選択を行うときのモード。 画面左下にはVISUALと表示される。 |
ひとまずビジュアルモードはおいといて、インサートモードとノーマルモードについて覚えましょう。
インサートモードは普通に文字入力したいときのモードです。テキストを編集するときはこのモードにしましょう。
ノーマルモードはコマンド操作によって様々なことをするときのモードです。と言ってもよくわからないと思いますが、先程はShift+ZZで実行できる『保存して終了』というコマンドを実行しました。たとえばインサートモード中にShift+ZZを行うと普通に『ZZ』と入力されます。コマンドじゃなくて文字入力と認識されちゃうんですね。なのでこういったコマンドを入力するときは必ずノーマルモードに変更してから入力することで「これはコマンドだよ」とvimに伝えます。
vimでファイルを開いたときはノーマルモードです。
インサートモードに入るにはi
キーを押します。
ノーマルモードに戻るにはEsc
キーを押します。
まずは必ずこれを覚えましょう。Escは離れたところにあって覚えやすいし、i は INSERT の I なので覚えやすいですよね。
インサートモード
インサートモードは…別にいいですねw
このモードに入ると文字入力ができます。コマンド入力時はEscキーを押してノーマルモードに入りましょう。
ノーマルモード
コマンド入力ができるモードです。コマンド入力ってどんなコマンドがあるの?という疑問を持たれると思いますが、ものすごくたくさんあります。なのでとりあえずは必要最低限を覚えて(さきほどの保存コマンドなど)、あとはメモっといていつでも参照できるようにしておくくらいでいいと思います。
ビジュアルモード
範囲選択ができるモードです。範囲選択してコピーしたりができるわけですが、まぁマウスの右クリックでもコピーできるのでひとまずはあまり使わないモードと思っていいでしょう。
まずは第一に覚えておきたいコマンド
インサートモードに入る
i
ノーマルモードに入る
Esc
次から紹介するものはコマンドなので全てノーマルモードで入力して使います。
ファイルの保存
まずはファイルの保存ですがさきほどやりましたね。
Z Z
編集したら保存しなきゃ意味がないのでこれは必須ですね。
文字入力が終わったらEsc押してShift押しながらzを2回。必ず覚えましょう。
ファイルを保存せず閉じる
あっやべ、間違えて変なことになってしまった…。保存せずに閉じたい…。そんなときに使うので絶対覚えましょう。
:q!
あたまにコロンが付きます。ちなみに!
がついていることで『編集を無視(破棄)して閉じる』という意味を表します。
そのため、全く編集せずに開いて内容を見るだけ見て閉じるときは、
:q
だけで閉じることができます (!
は無しでいい)。
何かしら編集されていたらアラートが表示されて閉じることができないので:q!
で強制的に閉じましょう。
ここまでは是非覚えておきたいコマンド
ファイルの一番下に移動
G
大きなファイルだと下まで移動するのに↓矢印キーだと時間がかかりますのでこれを覚えておくと良いです。
ちなみに大文字なのでShift + g
ですよ。
ファイルの一番上に移動
g g
こちらは一番上に移動するコマンドです。gを2回。
下に移動するよりは頻度が少ないでしょうがまぁ難しくないので覚えておきましょう。
行削除
d d
カーソルのある行を1行丸々削除できます。dを2回。
サクッと削除できるので覚えておくと便利です。deleteのdなので覚えやすいですよね。
なお、押しっぱにしておけばどんどん消えます。
もとに戻す
u
WindowsだとCtrl + Z
という超有名コマンドがありますよね、アレと同じです。
なぜuなのか、それはundo
という単語から来ているからです。これも単語を知っておくと思い出しやすいですね。
もう少し覚えられるなら覚えておきたいコマンド
上で紹介したコマンドを覚えたら次はここくらいまでは知っておくともうちょい便利に使えるようになると思います。
いきなり覚えようとすると先ほどまでの超重要コマンドとぐちゃぐちゃになってわからなくなるといけないので、超重要コマンドを完璧に覚えてからでいいと思います。
インサートモードに入る(その2)
a
実はi
ではなくa
でもインサートモードに入ることができます。全く同じというわけではなく、i
ならカーソルの前に、a
ならカーソルの後ろに入ります。INSERTの頭文字のほうが覚えやすい点、ごっちゃになってしまいうる点を考慮してまずi
だけを紹介していました。
使い分けができるとよりよいかもしれませんが、とりあえず使うだけなら覚えなくても大丈夫でしょう。
検索
/
/
に続けて検索対象としたい文字列を入力すると、どこにあるか調べることができます。
/pqrs
と入力するとpqrs
を探してハイライトしてくれる。
使ったことなかったんですがこれは便利そうですね。覚えるのも容易な気がします。
n
検索時に次の検索候補に飛ぶことができます。たとえば1行目、3行目、5行目に検索文字列pqrs
(先ほどの例の場合)があれば、n
を押すたびに次のpqrs
に飛んでいくイメージです。
/pqrs
と入力したあとに一度Enter
を押してからn
を押します。Enter
で確定させる必要があることを覚えておきましょう。
N
大文字なのでShift + n
ですね。こちらはn
と逆の動きで、前の検索文字列に飛ぶ動きをします。
検索を使うためには/
, n
, N
の3つを覚えておきましょう。
その他のコマンド
カーソルの移動
h, j, k, l
コマンド | 対応キー |
---|---|
h | ← |
j | ↓ |
k | ↑ |
l | → |
矢印キーに対応していますのでホームポジションに指をおいたまま移動できるというのがポイントのようです。
…まぁバリバリvimを使いこなしたい人以外は矢印キーでいいんじゃね、って思っちゃいます。
文字を削除
x
カーソルが乗っている文字を消すことができます。ちなみにインサートモードならふつうにBackSpaceが使えるのでそれでいいかなぁって感じです。
ビジュアルモードに入る
v
ビジュアルモードと言うと分かりづらいですが、前述したようにコピーやペーストをするためのモードです。範囲選択モードですね。
まぁビジュアルモードで覚えておけば、VISUALのv
と思い出しやすいことでしょう。
v
を押すと、その時点でカーソルのある場所から範囲選択できる状態になるので、矢印キーやhjkl
キーなどで動かして範囲選択することができます。
コピー
y
範囲選択した状態でy
を押すとコピーできます。コピーなのにy
だなんて覚えづらいですね。
コピーすると左下にyanked
と表示されます。このy
なんですね。ちなみにyank
っていうのは『引っ張る』ような意味らしいですね。コピーと言うよりは文字を引っこ抜いてくるイメージなのでしょうか…。まぁヤンクっていう言葉を覚えてしまうのが楽かもしれません。
貼り付け
p
貼り付けはわかりやすくp
です。もちろんコピーアンドペーストのペーストの方です。こちらは覚えやすい。
ヤンクしたらペーストできます。
1行コピー
y y
y
の2連打で1行コピーができます。ヤンクとペーストは範囲選択モードでしたが、この1行コピーはノーマルモードで可能です(貼り付けもノーマルモードのままp
でOK)。
ノーマルモードでできるのがなんか好きです。
まとめ
- vimにはモードと言う概念があることを覚えよう
- 超基本の保存や閉じるコマンドをまずは覚えよう
- 少しずつやれることを増やしていこう
- 全部は覚えなくて大丈夫
LinuxにSSH接続して触る場合などはvimが全くさわれないと非常に困ると思いますので、ぜひ最低限の操作を覚えていってくださいね。