Vimのコマンドを練習してみた【vimtutor編】

Vimとは?

viから派生した高機能なテキストエディタです。
viはLinuxに標準搭載されているため、使ったことがある人は多いと思います。
大体同じような操作感ですが、viと違うところもあります。

viはたまに使うけどCLIでコードを書くことはあまりない…と思ってましたが、
慣れればIDE(統合開発環境)にも負けない速度でコードが書けるらしいので少し練習してみることにしました。
そこで第一歩としてVimチュートリアルなるものをやってみることにしました。

Vimチュートリアル

Vimはその独特な操作感のため、慣れるのが大変です。
そこでチュートリアルが用意されています。(親切!)
$ vimtutorを打つことでチュートリアルを見ることができます。

Vimのコマンド一覧

以下ではVimのコマンドについて説明していきます。
基本的にはVimチュートリアルに載っているものをまとめていますが、
一部、載っていないが使いそうなコマンドを載せています。

ノーマルモード

Vimのコマンドを使うにはノーマルモードにする必要があります。
ESCでノーマルモードになります。
どっちのモードかわからない時はとにかくESCを押すのが吉。

ファイルの保存、ファイルを閉じる

ファイルの保存には:w、ファイルを閉じるには:qを使います。
:を押すと左下に出てきます。他にも一部コマンドは左下に出て確認できます。

  • :w
    保存

  • :q
    閉じる

  • :wq
    保存して閉じる

  • :q!
    保存しないで閉じる

  • :w ファイル名
    ファイル名で保存する

カーソル移動

カーソル移動にはh,j,k,lを使います。(普通に矢印も使えます。)
テキスト入力モードではh,j,k,lは使えないので矢印を使いましょう。

  • k
    ↑に移動

  • j
    ↓に移動

  • h
    ←に移動

  • l
    →に移動

  • ^
    行頭に移動

  • $
    行末に移動

  • gg
    ファイルの1行目へ移動

  • G
    ファイルの最終行へ移動

  • 行番号G or 行番号gg
    指定行へ移動

  • w
    カーソル位置から空白を含む単語の末尾まで(次の単語のはじめ)

  • e
    カーソル位置から空白を含まない単語の末尾まで。(次の単語の終わり)

また、モーションとも言い、削除コマンドなどに付け加えて範囲を指定することができます。
詳しくは後述。

テキスト編集について

  • x
    1文字削除

  • r
    1文字置換、r入力後1文字だけ入力

テキストを編集するには挿入モードに入る必要があります。
以下のコマンドで挿入モードに入った後にキー入力することでテキストが挿入されていきます。

  • i
    カーソル位置から挿入モード

  • I
    行の先頭から挿入モード

  • a
    カーソル位置の後ろから挿入モード

  • A
    行末から挿入モード

  • o
    カーソルの下に行を追加し挿入モード

  • O
    カーソルの上に行を追加し挿入モード

また、置換モードもあります。
置換モード中はカーソル位置の文字を上書きします。

  • R
    置換モード

テキスト削除

dが削除コマンドです。

  • dwでカーソル位置から単語の末尾まで削除
  • d$でカーソル位置から行の末尾まで削除

などができます。
dの後ろにモーション(カーソル移動できるコマンド)をつけることで対象を削除することができるのです。
行削除はよく使われるためにddで行うことが可能です。
また、後述する貼り付けで削除したものが貼り付けられるので削除というよりは切り取りなのかもしれません。

カウント

数字入れることで繰り返し行うことができます。
3dwで3単語削除などができます。(3dwd3wは同じ)
10jで10行下に移動、7xなら7文字削除などいろいろ応用できます。

コピー

yでコピーできます。(yankと言うそうです。)
削除と同じようにモーションで範囲を指定したり、カウントで回数を指定することができます。
yyで行コピーもできます。

貼り付け

pで貼り付けです。 削除やコピーと同じくいろいろできます。

変更

cで変更です。
対象を削除して入力できます。
ほとんど削除みたいなものですが、削除語に挿入モードに入ります。

元に戻す、やり直し

元に戻す、やり直し機能もあります。
所謂、Redo,Undoというやつです。
これがあるとないとでは編集速度が段違いです。

  • u
    元に戻す、Redo

  • CTRL-r
    やり直し、Undo

  • U
    行全体を元に戻す

ファイル情報を表示

CTRL-gでファイルの情報が最下部に出ます。
オプションで有効になっていれば、右側にカーソルの位置情報が出ます。(多分デフォルトです。)
行を覚えておけばGコマンドで移動できるってわけです。

画面スクロール

PageUpやPageDownの機能もあります。
長いファイルもどんどんスクロールできますね!

  • CTRL-B
    全画面上にスクロール、PageUp

  • CTRL-F
    全画面下にスクロール、PageDown

  • CTRL-U
    半画面上にスクロール

  • CTRL-D
    半画面下にスクロール

Back,Forward,Up,Downで覚えるとわかりやすそうです。

検索

文字検索です。正規表現検索も可能です。
慣れてなくて毎回忘れるやつです。

  • /検索文字
    下側に検索

  • ?検索文字
    上側に検索

  • n
    検索している時、更に下に検索

  • N
    検索している時、更に上に検索
    /で検索を始めてもNを押すと左下が?になってます。

  • CTRL-o 前の位置に移動する

  • CTRL-i 次の位置に移動する

  • % 対応する(),{},[]を検索

括弧を検索できる%は便利ですね。

置換

検索して置換することができます。
こちらも正規表現を使えます。

  • :s/置換前/置換後
    カーソルの行で見つかったもののみ置換

  • :s/置換前/置換後/g
    見つかった行に大して行全体を置換

  • :#,#s/置換前/置換後/g
    #,#で置き換える範囲の開始と終了の行番号を指定

  • :%s/置換前/置換後/g
    ファイル全体で見つかったものを置換

  • :%s/置換前/置換後/gc
    ファイル全体で見つかったものを確認しながら置換

コマンド

:!コマンドでコマンドが打てます。
例えば:!lsで現在のフォルダのファイルなどを見ることができます。
一旦ファイルから出てコマンドを打つ感覚ですね。

選択モード

vで選択モードに移行します。
左下には-- ビジュアル --と出ます。
コピーや削除などができます。

ファイル挿入

:r ファイル名でファイルの中身を挿入できます。

オプション

:set オプションでオプションを設定できます。
:seでもできるみたいです。
:set allで設定一覧が出ます。

  • :set ic
    ‘ignorecase’、検索時に大文字小文字の区別しない

  • :set is
    ‘incsearch’、検索フレーズに部分マッチしている部分を表示する

  • :set hls
    ‘hlsearch’、マッチしている場所を強調表示

長いオプション名でも使用できます。
noつければオプションを無効にします。(:set noicなど)

ヘルプ

:helpでヘルプが出ます。:qで閉じます。
引数をつけるといろいろなヘルプが出ます。(cmdなど)
CTRL-wでヘルプウィンドウに移動できます。

起動スクリプト

ホームディレクトリにある.vimrcを編集することでいろいろな設定ができるらしいです。
チュートリアルにはあまり詳しく書いてませんでした。

コマンド補完

コマンドの始まりをタイプしてからCTRL-dでコマンドの補完ができます。
今回紹介したコマンドは1文字が多く補完の必要がないですが、
Vimにはもっといろいろなコマンドがあり、その補完に役立ちます。
ディレクトリ名やファイル名の補完もできます。

チュートリアルをやってみて

いや~かなりの量のコマンドがありますね…
というか、多すぎじゃないですか!? チュートリアルだけでも全部覚えるには時間がかかりそうです。
とりあえずこの分だけでも少しずつ覚えて使えるようになりたいですね。

目指せVimマスター!

成田哲洋

最近親知らずを抜きました。

※記事の内容は保証はしておりません(執筆時期や実施環境により挙動が変わるものがある為)。
別途検証してご利用いただくことをおすすめいたします。