RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

vi コマンド【使い方まとめ】

アイキャッチ画像

はじめに

パクチーが大好きな技術広報のyayawowoです。
今回はLinuxコマンドについてご紹介したいと思います。

今回ご紹介したいのが、Linux標準のテキストエディタを起動させるvi コマンドについてです。
本ブログでは、Linux上でエディタを触る機会が多い方向けに、vi コマンドの基本的な使い方を目的別にまとめました。

vi コマンドは、慣れてしまえば問題ないのですが多少扱いにくいコマンドでもあります。
Linux上でvi コマンドを使う際、本ブログが操作のお供になれれば幸いです!

viとは

viとは、Linuxにプリインストールされているテキストエディタです。
Linux上にあるテキストファイルをviで開き、内容の修正や確認をすることが多いです。
例えばサーバ保守の際に、sshでリモート接続して設定ファイルの修正をする場合にも利用できます。

現在は、viを立ち上げるとvim(Vi IMproved)が立ち上がるケースも多いです。
vimとは、viに少し機能を追加したものですが、viと同じものと思っていただいて問題ございません。
vimでは矢印キーが使用できるだけでなく、多段アンドゥ(Undo)や構文強調表示にも対応しています。

vi のモード

viには、以下2つのモードがありますので覚えておいてください。

インサートモード

文字の入力が行えるモードです。
インサートモード時、左下に[INS]や挿入という文字列が表示されます。
また、以下の時はEscキーを押しましょう。

  • インサートモードを終了したい時
  • コマンドモードへ移行する時
  • viで困った時

コマンドモード

文字入力以外の編集作業が行えるモードです。 文字列の検索やテキスト保存、viの終了などもコマンドモードで行います。

vi コマンド 準備

viは、テキストエディタであるため修正・確認をするためのファイルが必要です。新規ファイルは、目的に応じて以下のどちらかで作成ください。

  • 空の新規ファイルを作成する
$ touch [ファイル名]
  • 空の新規ファイルを作成し、そのまま編集する
$ vi [ファイル名]

「他のLinuxコマンドをもっと知りたい」
touchコマンドの詳細は何だっけ…」
と思った方は、よく使うLinuxコマンド一覧【最新版】をご参考ください。

Linuxの理解をより深めたい方へ以下関連おすすめブログ
- ls コマンド 【使い方 まとめ】
- Linuxのファイル操作でよく使うLinuxコマンド
- 初心者のためのawkコマンド
- 実務で使える!基本的なシェル(Linux)コマンドの話 ~forとsed~
- 【Linux】今振り返りたい、プロセスって何?

vi コマンド一覧

次からは、vi コマンドを目的別にまとめております。
vi コマンドを利用する際は以下の内容をご参考ください。

起動

コマンド 説明
vi [ファイル名] ・ファイルを新規作成する
・ファイルを開く
vi [Enterキー] ・新規ファイルを開く
※ファイル名は後で指定
vi -r [ファイル名] ・システムエラー時のファイルを復元して開く
view [ファイル名] ・読み取り専用でファイルを開く
  • 使い方例:vi [ファイル名]

viを起動する際は、以下の通りvi [ファイル名]と入力します。

[root@localhost dev1]# ls
dev.txt  dev1_1.txt  dev1_2.txt
[root@localhost dev1]# vi dev.txt

起動後は、以下のようなエディタ画面が表示されます。

"i":入力後画面
"vi":起動後画面

入力

コマンド 説明
i カーソルの前(左側)に文字を入力
I カーソルのある行頭に文字を入力
a カーソルの後ろ(右側)に文字を入力
A カーソルのある行末 に文字を入力
o カーソルのある行の次の行頭 に文字を入力
O カーソルのある行の前の行頭 に文字を入力
  • 使い方例:i

iを入力することで、インサートモードになります。
カーソルの前(左側)から文字が入力できます。

"i":入力後画面
"i":入力後画面
インサートモードの入力後
"i":文字入力後画面

移動

カーソル移動

コマンド 説明
h カーソルを左へ移動
j カーソルを下へ移動
k カーソルを上へ移動
l カーソルを右へ移動
w カーソルを1語進める
b カーソルを1語戻す
e カーソルを単語末尾へ移動
^ カーソルを行頭へ移動
$ カーソルを行末へ移動
G カーソルを最終行行頭へ移動
- 前行の行頭へ移動
Enter 次行の行頭へ移動
  • 使い方例:lh

lコマンドは、コマンドモードで使えます。
lコマンドでカーソルを右へ移動してみましょう。

"l":入力後画面
"l":入力後画面

hコマンドでカーソルを左へ移動できます。

"h":入力後画面
"h":入力後画面

画面移動

コマンド 説明
H カーソルを画面先頭へ移動
M カーソルを画面真中へ移動
L カーソルを画面最終行へ移動
Ctrl + F 1ページ下へ移動
Ctrl + B 1ページ上へ移動
Ctrl + D 半ページ下へ移動
Ctrl + U 半ページ上へ移動

コピー・貼り付け・削除

コピー

コマンド 説明
yy 1行をコピー
例)y3y:3行コピー
yl 1文字をコピー
例)y3l:3文字コピー
yw 1単語をコピー
例)y3w:3単語コピー
y0 行頭からカーソルの直前までをコピー
y$ カーソルの位置から行末までをコピー

貼り付け

コマンド 説明
p コピーした文字列をカーソルの後ろ(右側)に貼り付け
P コピーした文字列をカーソル の前(左側)に貼り付け

削除

コマンド 説明
x カーソルの文字を削除
X カーソル左にある文字を削除
dl 1文字を削除
例)d3l:3文字削除
dw 1単語を削除
例)d3w:3単語削除
dd 1行を削除
例)d3d:3行削除
d0 行頭からカーソルの直前までを削除
d$ カーソルの位置から行末までを削除
  • 使い方例:yypdd

コピーした行を貼り付け、削除するまでの流れをご説明します。
コピー・貼り付け・削除は、コマンドモードで実施します。

コピーしたい行にカーソルを合わせ、yyと入力します。
画面上では何も起きていないように見えますが、該当行のコピーはしっかりとされているのでご安心ください。

"yy":行のコピー
"yy":行のコピー

カーソルを貼り付けたい箇所に移動させ、pコマンドを入力します。
以下の通り、yyコマンドでコピーした行が貼り付けられているのを確認いただけます。

"p":コピーした行を貼り付け
"p":コピーした行を貼り付け

では最後に、ddコマンドで行を削除します。
削除したい行の上にカーソルを合わせddと入力すると、以下の通り削除されます。

"dd":行を削除
"dd":行を削除

検索・置換

検索

コマンド 説明
f 検索したい文字 同行から文字を右方向へ検索
F 検索したい文字 同行から文字を左方向へ検索
; 同行から次を検索
/検索したい文字列 ファイル全体から下方向へ検索
?検索したい文字列 ファイル全体から上方向へ検索
n ファイル全体から次を検索
N ファイル全体から前を検索

置換

コマンド 説明
s 1文字置換
※置換後はインサートモード
r 1文字置換
※置換後はコマンドモード
R 上書き
cw カーソルの位置から単語の末尾まで置換
:s/文字列A/文字列B/ カーソル行で最初に合致する文字を、文字列A→文字列Bに置換
:s/文字列A/文字列B/g カーソル行で合致する全ての文字を、置換文字列A→文字列Bに置換
:%s/文字列A/文字列B/g 全行で合致する全ての文字を、置換字列A→文字列Bに置換
:10,50s/文字列A/文字列B/g 10行目から50行目までの間で合致する全ての文字を、置換文字列A→文字列Bに置換
:10,$s/文字列A/文字列B/g 10行目から最終行までの間で合致する全ての文字を、置換文字列A→文字列Bに置換
  • 使い方例:/検索したい文字列

"Bad"という文字列を検索します。
こちらもコマンドモードで、/検索したい文字列を入力してみましょう。

/Bad

"/検索したい文字列":"Bad"を検索
"/検索したい文字列":"Bad"を検索

以下の通り、"Bad"の文字を検索することができました。

"/検索したい文字列":"Bad"を検索後画面
"/検索したい文字列":"Bad"を検索後画面

  • 使い方例::%s/文字列A/文字列B/g 文字列の検索ができましたので、次は文字の置換を行います。
    コマンドモードで、以下の通り入力してください。
:%s/Bad/Good/g

":%s/文字列A/文字列B/g":"Bad"を"Good"に置換
":%s/文字列A/文字列B/g":"Bad"を"Good"に置換

以下の通り、"Bad"→"Good"に置換されました。

":%s/文字列A/文字列B/g":置換後画面
":%s/文字列A/文字列B/g":置換後画面

保存・終了

コマンド 説明
:q 終了
:q! 変更を保存せずに終了
:w 上書き保存
:w! 強制上書き保存
:wq 保存して終了
  • 使い方例::wq

ファイル内容を修正後、保存をしなくてはなりません。
修正時は、インサートモードになっていると思いますのでEscキーコマンドモードに戻してから操作を行ってください。

:wqコマンドを入力し、内容を保存して終了します。

":wq":保存して終了
":wq":保存して終了

vi コマンド まとめ

vi コマンドを目的別一覧としてまとめさせていただきました。
一部コマンドの使い方例も記載しましたが、いかがでしたでしょうか。

本ブログをまとめるにあたり、久々にvi コマンドを触ってみましたが、横にコマンド集がないと結構操作ミスを起こしやすいな…と思いました。
是非本ブログをご参考いただきながら、操作ミスが起こらないようご活用いただけますと幸いです。
もし活用できそうと思った方は、ブックマークも大歓迎ですよ!

Linuxの理解をより深めたい方へ以下関連おすすめブログ
find コマンド 【使い方 まとめ】
iptables まとめ【Linux ファイアウォール】
sed コマンド【使い方 まとめ】
Linuxのファイル操作でよく使うLinuxコマンド
初心者のためのawkコマンド
実務で使える!基本的なシェル(Linux)コマンドの話 ~forとsed~
【Linux】今振り返りたい、プロセスって何?


◆TECH PLAY
techplay.jp

◆connpass
rakus.connpass.com

Copyright © RAKUS Co., Ltd. All rights reserved.