ちゃんと理解したい vi(vim)の使い方

viでテキスト編集をする時に、モードで悩みませんか?

UnixやLinux、Macの標準にインストールされているテキストエディタ。多少とっつきにくい面がありますが、慣れると高速でテキストの編集処理を行うことが出来ます。

この記事では、viやvimの初心者を対象にして、よく使うコマンドについてまとめました。

目次

モード一覧

viでは、以下のモードが存在し、それぞれ操作可能な機能が存在します。

モード 機能
ノーマルモード カーソル移動、ヤンクとプット、削除など
インサート(入力)モード 文字入力など
ビジュアルモード 範囲選択、選択範囲のヤンク、削除など
ビジュアルラインモード 矩形選択
コマンドモード 変更の保存、vim終了、文字列置換など

ノーマルモード

viが起動されると、まずノーマルモードになります。
また、インサートモードなどから、「Esc」を押すとノーマルモードに戻ります。

インサートモード

テキストファイルを編集することができるモードです。
ノーマルモードの状態から「i」、「I」、「a」、「A」のいずれかを入力するとインサートモードに切り替わります。

ビジュアルモード

複数の文字列を選択できるモードです。
ノーマルモードの状態から「v」を入力するとビジュアルモードに切り替わります。

ビジュアルラインモード

矩形選択ができるモードです。
ノーマルモードの状態から「V」を入力するとビジュアルラインモードに切り替わります。

コマンドモード

ノーマルモードの状態から「:」を入力するとコマンドモードに切り替わります。

モードを図にしてみた

モードの種類と切り替えと戻り方法を図にしてみました。

viの起動

シェルプロンプトで、viコマンドを入力します。
例えば、test.txtというファイルを編集したい場合、下記のように入力をします。

vi test.txt

viの終了

コマンドモードで、「:q」を入力することで、viを終了できます。終了方法には以下があります。

:q viの終了
:q! 編集結果を書き込まず、強制終了
:wq 編集結果を保存して終了

カーソル移動(コマンドモードで実行)

主要なカーソル移動のコマンドを列挙します。これだけ知っていれば、ドヤ顔出来るかも知れません(笑)

カーソル移動(上下左右)

viは矢印キーでもカーソルの移動はできます。でも「vi使い」になりたければ、コマンドキーを使ってカーソル移動が出来るようになりましょう。

h 左に移動
i 右に移動
k 上に移動
j 下に移動
0 カーソルを行頭へ
$ カーソルを行末へ

カーソル移動(行移動)

gg 最初の行に移動
G 最後の行に移動
[n]G 数値[n]で指定した行に移動
5行目に移動したい場合は5Gと入力
:5と入れても移動できます

文字の挿入

i カーソル位置の前に文字を挿入
a カーソル位置の後ろに文字を挿入
I 行の先頭に文字を挿入
A 行の終わりに文字を挿入
o 現在の行の後ろに文字を挿入
O 現在の行の前に文字を挿入
R カーソル位置の文字を上書き

文字の削除(コマンドモードで実行)

文字の削除は、普通のエディタで使用する「Del」「BS」キーは使用しません。

1文字削除

x カーソル上の文字を削除
[n]x 数値[n]で指定した文字だけ、カーソル上の文字から右側を削除
カーソル上の文字を含み5文字削除したい場合は「5x」と入力
X カーソルの左側の文字を削除
(カーソル上の文字は削除されない)
[n]X 数値[n]で指定した数だけ、カーソルから左側を削除
カーソルから5文字削除したい場合は「5X」と入力

行削除

文字の削除方法にもいくつか種類があります。

dd 一行削除
[n]dd 数値[n]で指定した行数削除
5行削除したい場合は「5dd」と入力

コピー・ペースト(コマンドモードで実行)

yl 一文字コピー
[n]yl [n]で指定した文字数をコピー
5文字コピーしたい場合は「5yl」と入力
yw 一単語コピー
yy 一行コピー
Y yyと同じ
[n]yy [n]で指定した行数をコピー
5行コピーしたい場合は「5yy」と入力
p 文字・単語のペースト時はカーソルの右側にペースト
行のペーストはカーソルの下の行にペースト
P 文字・単語のペースト時はカーソルの左側にペースト
カーソルの上の行にペースト

操作の取り消しと繰り返し(コマンドモードで実行)

操作の取り消しや取り消し操作の取り消し、繰り返しのコマンドです。

u 直前の変更を取り消す(undo)
U 行全体への変更を取り消す
Ctrl + r redo(リドゥ)。アンドゥで戻した操作を、元に戻す
. 直前のコマンドを繰り返す
[n]. 数値[n]回、直前のコマンドを繰り返す
5.で直前に実行したコマンドを5回繰り返します。

その他

その他のコマンドです。

:noh ハイライトを無効にする
:nohlsearch の略
:set number 番号を表示する
よかったらシェアしてね!
  • URLをコピーしました!
目次