Linuxシステム管理入門2 標準エディタviの使い方まとめ

2019年8月2日

LinuxではGUIが実装される前から標準エディタとしてviが使われて来ました。viはどのようなLinux、UNIXにも標準でインストールされているのでお客さんのサーバーを操作するシステムエンジニアは必ず覚えなければならないコマンドです。

この記事ではviについてまとめました。最低これだけ知っていればファイルの作成はできるという視点で書いています。さらにviの上位の機能を使って見たい方は他のサイトを検索して見てください。

viの起動

viを起動するにはコンソールにviと編集したいファイル名を入力します。

testac@some1:~$ vi file1.txt

viのモード

viはキーボードだけで操作ができるようにするため、キーを押すと文字が入力される「入力モード」とキーを押すとviの操作ができる「コマンドモード」の2つのモードがあります。

viを起動するとコマンドモードで起動します。コマンドモードから入力モードに移るにはi(カーソルの前から入力)かa(カーソルの後ろから入力)のどちらかのキーを押します。入力モードからコマンドモードへ戻るにはESCキーを押します。

どちらのモードになっているかわからなくなったときはESCキーを3回連打してコマンドモードに戻ります。3回押せばどのような状態になっていても必ずコマンドモードに戻れるようになっています。

viのコマンド

モードについて理解できたら、コマンドモードの操作方法を覚えればviの操作は完璧です。最低以下のコマンドを覚えればファイルの読み書きはOKです。

カーソル移動 h、j、k、l

カーソルの移動は矢印キーでなくh、j、k、lを使います。h、j、k、lはそれぞれ←、↓、↑、→に対応しています。

このキーは右手をホームポジションにおいたときの人差し指右、人差し指、中指、薬指の位置にあります。人差し指右、人差し指、中指、薬指が←、↓、↑、→と覚えると良いです。

入力モードへ移動 i と a

入力モードへ移動するにはiかaを使います。iはカーソルの前から入力し、aはカーソルの後ろから入力がされます。

文字削除 x

文字を削除する場合は、削除したい文字にカーソルを合わせてxをします。最近のviは入力モードでbackspaceキーでも文字を消せるのですが、コンピュータの中にはbackspaceが無いものもありましたので、xを覚えておくと良いです。

ファイルの保存と終了

ファイルに保存する場合はコマンドモードで:wと入力します。viを終了させたい場合は:qと入力します。ファイルに保存してviを終了させたい場合は:wqと入力します。

まとめ

この記事ではLinuxの標準エディタであるviの基本的な使いかたについて説明しました。コマンドモードでの使い方はここで説明したよりも多くの便利コマンドがありますが、詳細な説明は省略し最後に一覧をつけておきます。

viはSEには必須のコマンドです。Linux入門の際はソッコーで覚えるのがおすすめです。

カーソル移動h
カーソル移動j
カーソル移動k
カーソル移動l
カーソル移動5l5文字右にカーソルを移動する
カーソル移動Shift + gファイルの最後の行の先頭に移動
カーソル移動ggファイルの先頭に移動
カーソル移動$行の最後に移動
カーソル移動0 ゼロ行の先頭に移動
カーソル移動^行の最初の空白でない文字に移動
カーソル移動ファイルの末尾に移動
カーソル移動Ctrl + fページアップ
カーソル移動Ctrl + bページダウン
カーソル移動Mカーソルを画面の中心に移動
実行例dd 移動 p dd 移動 p1行目と6行目を入れ替える。
ファイル再読み込み:e!編集を破棄してファイルの再読み込み
ファイル保存:wq現在編集中の内容を元のファイルに書き込んで終了
ファイル保存終了:w編集結果を保存
ヘルプ:help + エンターオンラインヘルプ表示
編集:UNDO直前の編集状態に戻す
編集:検索/前方
編集:検索?後方
編集:検索前方再検索
編集:検索N  後方再検索
編集:削除x現在カーソルのある文字を削除
編集:削除カーソル直前の文字を削除
編集:削除カーソル以降を削除
編集:削除dw現在カーソルのある単語を削除
編集:削除dd現在カーソルのある行を削除(カット)
編集:置換s/xxx/yyy/xxxをyyyに置換
編集:置換:s/xxx/yyy/gカーソル行を全範囲として、xxxをyyyに置換
編集:置換:%s/xxx/yyy/gファイルを全範囲として、xxxをyyyに置換
編集:置換:%s/xxx/yyy/gcファイルを全範囲として、xxxをyyyに置換  確認しながら。
編集:ペーストpカーソル行の下にペースト
編集:ペーストカーソル行の上にペースト
編集:文字入力iインサートモードになり、カーソルの前に文字列を挿入可能
編集:文字入力aインサートモードになり、カーソルの後ろに文字列を挿入可能
編集:文字入力oカーソル行の下に一行空白行を挿入
編集:文字入力Shift + oカーソル行の上に一行空白行を挿入
編集:文字入力ESCインサートモードからコマンドモードに戻る
編集:文字入力カーソル行の先頭から入力開始
編集:文字入力カーソル行の末尾から入力開始
編集:文字入力rカーソル上の文字を置換
編集:文字入力以降の入力を上書き状態
編集:文字入力カーソル行の上に一行空白行を挿入
編集:文字入力カーソル行と直下の行を連結
編集:ヤンクyyカーソル行をヤンク(コピー)
モードについてiコマンド -> インサート モード
モードについてESCインサート -> コマンド モード
モードについて:コマンド -> exラインエディタ モード
モードについてESCexラインエディタ -> コマンド モード
終了:q!編集結果を破棄して強制終了
終了:wq file_name現在編集中の内容を指定されたファイルに上書きして終了
終了:wq! file_name現在編集中の内容を指定されたファイルが上書き禁止でも上書きして終了