Vimコマンドの基本を押さえよう

Vimコマンドの基本を押さえよう

Vimというエディタを耳にしたことのある方は多いでしょう。Emacsというエディタと共にプログラマ御用達として非常に人気の高いエディタの1つです。

ただ・・・Vimは何の知識もなく扱うと、1文字も文字を打てず、そして終了させることすら出来ず、途方に暮れ、トラウマとなり、使う気を失せさせる入門者泣かせの難物でもあります。

そんなことにならないよう、Vimの基礎をご紹介することにします。

目次
  1. Vimの何がいいのか
  2. 操作説明
  3. 表記について
  4. 入力モードでの操作
  5. ビジュアルモード
  6. コマンドモードでの操作
  7. 最後に

Vimの何がいいのか

コマンドの紹介の前に、Vimの何がいいのか、これを押さえておきましょう。

マウス不要

Vimの操作は、全てキーボードでコマンドを打つことで行います。マウスを扱う必要はありません。「えっ、そんなの大変じゃない?」と思われるかもしれません。マウスでも操作はできます。しかし、Vimを使う以上、キーボードでの操作を覚えないとVimならでは効率の良さが発揮できません。

「マウスに手をやる」という動作は、思ったよりも手間で時間を取られます。人によっては正確な位置をポイントするのが苦手だったりもします。しかしVimの場合全ての操作をキーボードで行えるため、常に両手をホームポジションに置いたまま操作することが出来ます。これが生産性の向上をもたらします。

モードの存在

Vimはいくつかのモードを切り替えながら使います。普段はコマンドモードでファイルを行き来し、入力モードで文字を打ち込みます。コマンドモードでは編集出来ないため、誤編集を防げますし、また同じ操作でもモードによって機能が異なるため、少ない操作で多くの機能を呼びだすことが出来ます。

「繰り返し操作」の存在

Vimは「操作を○回繰り返す」というのが得意です。例えば「今いる行をコピーして10回ペーストする」というのをとても短いコマンドで実現できます。

yy10p

たったこれだけです。

プログラムを書く際に繰り返し似たようなことを書くことがあるため、繰り返し操作は効率を上げてくれます。

幅広いカスタマイズ

Vimは幅広くカスタマイズできるため、自分好みにチューンアップさせることが出来ます。いわば成長するエディタであり、マニアに好まれる所以でしょう。以下はカスタマイズを加えたVimの姿です。

vim_customize

Linux系で使える

これは良いところと言うのかは微妙ですが・・・Linux系のOSに最初からインストールされているエディタは、多くの場合Vim、あるいはその劣化版であるViです。Vimの基本的な使い方を知っておけば、Linux環境でのテキスト編集に困りません。

操作説明

さてここからはVimの操作説明です。最初に、モードについて理解しておきましょう。

4つのモード

Vimはモードという状態があります。

起動直後はノーマルモードです。このモードではカーソル移動やコピー&ペーストを行います。ノーマルモードは基本となるモードで、他のモードからESCキーで戻ってくることが出来ます。

入力モードは文字を入力するモードです。

コマンドモードはファイルの操作や検索などの操作をするモードです。コマンドを入力することでVimの機能を呼び出します。

ビジュアルモードはテキストを選択します。行単位や矩形(四角)での選択などが行えます。

vim_mode

表記について

ここからはコマンドを紹介します。

表記の説明をしておきましょう。

: Enterキーを押します。

+○ : Shiftキーを押したまま○キーを押します。

+○ : Controlキーを押したまま○キーを押します。

ノーマルモードでの操作

ノーマルモードでは主に移動系の操作を行います。

行移動、文字移動

基本中の基本、カーソルを移動します。

j :下の行に移動

k :上の行に移動

h :左の文字に移動

l :右の文字に移動

こうやって文字で書くとややこしいですが、やってみると直感的です。

1画面単位で移動

<Ctrl>+f :1画面分下に移動

<Ctrl>+b :1画面分上に移動

単語単位の移動

w :次の単語の先頭に移動

b :前の単語の先頭に移動

行頭、行末に移動

o :行頭に移動

<Shift>+i :行頭に移動し入力モードに移行

$ :行末に移動

<Shift>+a :行末に移動し入力モードに移行

カーソル行を変えずにスクロール

<Ctrl>+e :カーソル行を変えずに1行ずつ上にスクロール

<Ctrl>+y :カーソル行を変えずに1行ずつ下にスクロール

コピー&ペースト

ノーマルモードではコピー&ペーストも可能です。

yy :現在行をコピー

p :ペースト

繰り返しを駆使することで、一気に複数行をコピーすることも出来ます。例えば現在行以下3行をコピーするには以下のようにします。

3yy

カット

x :カーソル下の文字をカット

dw :カーソル下の単語をカット

dd :現在行をカット

繰り返しを駆使することで、一気に複数行をカットすることも出来ます。例えば現在行以下3行をカットするには以下のようにします。

3dd

アンドゥ(操作の取り消し)&リドゥ

u :アンドゥ(操作の取り消し)

<Ctrl>+r :リドゥ

新しい行を作る

o :現在行の下に新しい行を作り入力モードに移行

カーソルのある単語を検索

* :カーソルの下にある単語を下方向に検索

手早く検索するのに便利な操作です。

###入力モードでの操作

入力モードでは文字を入力するのが基本です。ノーマルモードと入力モードを頻繁に行ったり来たりしながら編集するのが、Vimでの基本です。

さらに入力補完する機能もあります。

<Ctrl>+p :前方一致する単語の候補を表示

ビジュアルモード

ビジュアルモードはテキストを範囲選択するためのモードです。3種類あります。範囲選択したら、

y でコピーするか d

文字単位のビジュアルモード

ノーマルモードから v で移行します。このモードでは「ノーマルモードでの操作」で紹介した各種移動を使って範囲選択できます。

行単位のビジュアルモード

ノーマルモードから <Shift>+v で移行します。とてもよく使うモードです。

矩形選択のビジュアルモード

ノーマルモードから <Ctrl>+v で移行します。

データの加工などで威力を発揮するモードです。

コマンドモードでの操作

ファイル操作系

ノーマルモードから : を入力することでファイル操作系のコマンドを実行できます。

e <パス><Enter> :<パス>のファイルを開く

w<Enter> :上書き保存

w <パス><Enter> :<パス>のファイルに保存

%s/<検索語>/<置換語>/g :全ての<検索語>を<置換語>に置換

検索系

ノーマルモードから / を入力することで検索を実行できます。

<任意のテキスト><Enter> :<任意のテキスト>にマッチする語を検索

Enterを押した時点で最初にマッチする語にカーソルが移動し、ノーマルモードに移行します。

n :下方向で次のマッチする語に移動

<Shift>+n :上方向で次のマッチする語に移動

最後に

様々な操作を説明しましたが、まだまだ基本的な操作であり、Vimの奥深さのほんの一部に触れたに過ぎません。最初の学習コストこそ高いものの、使い込めば普通のエディタでは得られないスピード感が癖になります。特にカスタマイズに手を出すとどんどん自分好みに成長していき、手放せない道具になります。

Code部にもカスタマイズのヒントになる記事があります。

tomo
ライター
tomo

関連記事