Linuxシステム管理入門2 標準エディタviの使い方まとめ
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 | 右 |
カーソル移動 | 5l | 5文字右にカーソルを移動する |
カーソル移動 | Shift + g | ファイルの最後の行の先頭に移動 |
カーソル移動 | gg | ファイルの先頭に移動 |
カーソル移動 | $ | 行の最後に移動 |
カーソル移動 | 0 ゼロ | 行の先頭に移動 |
カーソル移動 | ^ | 行の最初の空白でない文字に移動 |
カーソル移動 | G | ファイルの末尾に移動 |
カーソル移動 | Ctrl + f | ページアップ |
カーソル移動 | Ctrl + b | ページダウン |
カーソル移動 | M | カーソルを画面の中心に移動 |
実行例 | dd 移動 p dd 移動 p | 1行目と6行目を入れ替える。 |
ファイル再読み込み | :e! | 編集を破棄してファイルの再読み込み |
ファイル保存 | :wq | 現在編集中の内容を元のファイルに書き込んで終了 |
ファイル保存終了 | :w | 編集結果を保存 |
ヘルプ | :help + エンター | オンラインヘルプ表示 |
編集:UNDO | u | 直前の編集状態に戻す |
編集:検索 | / | 前方 |
編集:検索 | ? | 後方 |
編集:検索 | n | 前方再検索 |
編集:検索 | N | 後方再検索 |
編集:削除 | x | 現在カーソルのある文字を削除 |
編集:削除 | X | カーソル直前の文字を削除 |
編集:削除 | D | カーソル以降を削除 |
編集:削除 | 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 | カーソル行の下にペースト |
編集:ペースト | P | カーソル行の上にペースト |
編集:文字入力 | i | インサートモードになり、カーソルの前に文字列を挿入可能 |
編集:文字入力 | a | インサートモードになり、カーソルの後ろに文字列を挿入可能 |
編集:文字入力 | o | カーソル行の下に一行空白行を挿入 |
編集:文字入力 | Shift + o | カーソル行の上に一行空白行を挿入 |
編集:文字入力 | ESC | インサートモードからコマンドモードに戻る |
編集:文字入力 | I | カーソル行の先頭から入力開始 |
編集:文字入力 | A | カーソル行の末尾から入力開始 |
編集:文字入力 | r | カーソル上の文字を置換 |
編集:文字入力 | R | 以降の入力を上書き状態 |
編集:文字入力 | O | カーソル行の上に一行空白行を挿入 |
編集:文字入力 | J | カーソル行と直下の行を連結 |
編集:ヤンク | yy | カーソル行をヤンク(コピー) |
モードについて | i | コマンド -> インサート モード |
モードについて | ESC | インサート -> コマンド モード |
モードについて | : | コマンド -> exラインエディタ モード |
モードについて | ESC | exラインエディタ -> コマンド モード |
終了 | :q! | 編集結果を破棄して強制終了 |
終了 | :wq file_name | 現在編集中の内容を指定されたファイルに上書きして終了 |
終了 | :wq! file_name | 現在編集中の内容を指定されたファイルが上書き禁止でも上書きして終了 |