覚えるべきviコマンドの基本操作は6つだけ!もっとも簡単なviコマンドの使い方
Linux/Unixの操作で必ず必要になるのがviによる操作です。
viはコマンドであり、設定ファイルを編集するエディターとも呼ばれます。
Linux/Unixをデスクトップとして利用される方は少ないと思いますが、サーバー管理者としてLinux/Unixを操作する場合、ほぼ間違いなくviコマンドを利用して設定作業を行います。
そもそも「なんでこんな使いにくいコマンドで設定ファイルを編集しなければならないの?」と思う人も多いかもしれませんが、viは1976年に初版がリリースされた古いコマンドです。
当時は、現代のWindowsやmacOSのようなグラフィカルでマウスが標準で利用できるGUI(グラフィカル・ユーザー・インターフェース:Graphical User Interface)が無かったため、少し操作に癖があるのも仕方が有りません。
viに利用可能なオプションを覚えるとより高度な使い方もできますが、ちょっとだけ使いたい場合にはそこまで覚えなくても問題ありません。
そこで、今回は覚えるべきviコマンドの6つの基本操作とオプションについてご紹介したいと思います。
なお、今回はCentOS 7.9を利用していますが、Ubuntuなど他のディストリビューションやSolorisなどでも動作に大差はありません。
vi コマンドの基本
viの操作の前に覚える最も大事なことは、viには2つの動作モードがあります。
- コマンドモード
- 挿入モード
コマンドモードでは文字の入力はできず、『vi ファイル名』でファイルを編集しようとすると、まずはコマンドモードでファイルが開かれます。
コマンドモード(最下段に編集中のファイル名が表示されます。)
次に、挿入モードです。
実際にファイルの編集として、文字を入力することが出来るモードです。
挿入モード(ターミナルの下にINSERTと表示される)
挿入モードへの切り替えは、コマンドモード時に以下を入力することで設定ファイルの編集が可能になります。
- 『i』を押すと現在のカーソル位置に文字を挿入(INSERT)
- 『a』を押すと現在のカーソル位置の右隣に文字を挿入
- 『A』(大文字)を押すと現在のカーソル行の最後に文字を追加する
- 『o』を押すと現在のカーソル行の下の行に行を挿入する
- 『O』(大文字)を押すと現在のカーソル行の上の行に行を挿入する
- 『R』を押すと現在のカーソル位置から文字を上書きする(REPLACE)
どの文字を入力してもコマンドモードから挿入モードに変わりますが、どの部分を編集したいかによって効率的に編集が開始できます。
なお、『Esc』ボタンを押すことで、挿入モードからコマンドモードに移行できます。
1. ファイルの編集
では基本操作の1つ目ですが、viコマンドでファイルを編集するには、『vi ファイル名』を実行します。
# vi ファイル名
おそらく、サーバーの運用・設定作業では一番利用する操作でしょう。
2. カーソルの移動
次にカーソルの移動です。
vi でファイルファイルを開いた後に編集したい部分に移動するのに最も簡単な方法は、キーボードのカーソルを利用することです。
カーソルを使うのが一番分かりやすいのですが、手元を動かさずにキーを操作できるのメリットで、以下の操作でもカーソルと同じように編集部分(ポインター)の移動が可能です。
- 『h』を押すと左にカーソルが移動
- 『j』を押すと下にカーソルが移動
- 『k』を押すと上にカーソルが移動
- 『l』を押すと右にカーソルが移動
つまり、
となります。
キーで覚えると「うーん、覚えられるかな?」となりますが、こうやってキーボードで見ると分かりやすいかもしれません。
編集できれば結果は同じなので、使いやすい方(忘れない方)を覚えましょう。
3. 文字の入力
前述の挿入モードに切り替えの際のオプション『i』『a』『A』『o』『O』『R』を覚えておくと便利ですが、『i』だけ覚えておけば何とかなります。
慣れるまではまずは『i』(INSERT)で文字を入力することだけ覚えましょう。
4. 文字の削除
文字の削除はコマンドモードと挿入モードで異なります。
コマンドモードの場合には『x』、挿入モードの場合には『Back Space』キーで文字の削除が可能です。
ただし『Back Space』なので、カーソルのある左の文字が削除対象になります。
5. 保存して終了
ファイルの編集を行ったらファイルの保存です。
保存は挿入モードから『Esc』をしてコマンドモードに移り『:wq!』を入力しエンターを実行します。
『w』は書き込み(write)、『q』は終了(quite)の意味となります。
『:wq』でもファイルは保存されますが、以前Unixでの操作で『!』を付けないとファイルの変更が正しくハンドルされないという経験が有りますので、『:wq!』で一つの作業で覚えてしまいましょう。
『!』は強制の意味となります。
6. 保存しないで編集
一方で編集に誤りがあったり、編集しているファイルのバックアップを取っていないなどの理由で、保存したくない場合も有ります。
その場合には、『:q!』を実行します。
『w』(書き込み)を指定していないので、保存がされないという意味ですね。
覚えておくととても便利なオプション
ここでは、viの利用の際に覚えておくと便利なオプションを紹介します。
それぞれコマンドモードで利用が可能ですので是非試してみてください。
- 『dd』を押すとカーソルのある一列を削除
- 『yy』を押すとカーソルのある一列をコピーしクリップボードへ格納する
- 『p』を押す『yy』で記憶した1行をカーソルの下の行に挿入
- 『$』(Shiftを押しながら$)でカーソルがある行の最後に文字に移動
- 『G』(Shiftを押しながらg)でそのテキストの最終行に移動
- 『/検索したい文字』で検索し『n』で次の候補に移動
vi と vimはどう違うの?
CentOSでは、viとvimコマンドは基本的には同じです。
Linux/Unixでコマンドの動作を調べるにはmanコマンドを利用することで、コマンドの内容や利用できるオプショやサンプルの確認ができます。
そこで、本当にviとvimコマンドが同じなのかmanコマンドで確認してみましょう。
# man vi
出力結果をみると分かりますが、vimと表示されているのが分かります。
どうやらvimのmはImproved(改良された)viコマンドであり、基本的な動作は同じようです。
VIM(1) General Commands Manual VIM(1)
NAME
vim - Vi IMproved, a programmers text editor
SYNOPSIS
vim [options] [file ..]
vim [options] -
vim [options] -t tag
vim [options] -q [errorfile]
ex gex
view
gvim gview vimx evim eview
rvim rview rgvim rgview
DESCRIPTION
Vim is a text editor that is upwards compatible to Vi. It can be used
to edit all kinds of plain text. It is especially useful for editing
programs.
There are a lot of enhancements above Vi: multi level undo, multi win‐
dows and buffers, syntax highlighting, command line editing, filename
completion, on-line help, visual selection, etc.. See ":help
vi_diff.txt" for a summary of the differences between Vim and Vi.
コマンド結果にありますが、”:help vi_diff.txt” を確認すれば違いが分かるようですね。
今度はvimを確認してみます。
# man vim
今度は日本語で表示されますので、そういった意味でも改良版という位置付けなのかもしれません。
英語が苦手な方で viコマンド のオプションを確認したい時は、vimコマンドのmanを利用しましょう。
# man vim
VIM(1) General Commands Manual VIM(1)
名前
vim - Vi IMproved, プログラマのテキストエディタ
書式
vim [options] [file ..]
vim [options] -
vim [options] -t tag
vim [options] -q [errorfile]
ex
view
gvim gview evim eview
rvim rview rgvim rgview
説明
Vim は Vi 互換のテキストエディタです。
どのような種類のプレインテキストでも編集できます。
特に、プログラムの編集に力を発揮します。
Vi に多くの改良が加えられています:
多段アンドゥ、マルチウィンドウ、マルチバッファ、構文強調表示、
コマンドライン編集、ファイル名補完、ヘルプ、ビジュアル選択、などなど。
Vim と Vi の違いについての要約は ":help vi_diff.txt"
を参照してください。
結果は英語で出力されますが、翻訳すると以下の通りで”:open”コマンドに関しては互換性がないようです。
VimとViのviの違い
ヘルプファイル全体を通して、VimとVi / Exの違いは、「{notinVi}」のように中括弧で囲まれています。 このファイルには、他のファイルで言及されていないもののみがリストされ、概要が示されています。
VimはほとんどPOSIX1003.2-1に準拠しています。 欠落していることがわかっている唯一のコマンドは「:open」です。 おそらく多くの小さな違いがあります(Vimに何かが欠けているか、Posixがマークの横にあるため)。
まとめ
今回はLinux/Unixの操作で避けて通れないviの操作について簡単に纏めました。
Linux/Unixだけではなく、Linux/Unixをベースに作られたOSではviによる操作は頻繁に発生しますので、ITエンジニアとして活躍するには必須の知識となります。
viが少し使えるだけで作業の幅はぐんと広がりますし、忘れてしまってもmanで確認したり、インターネットでも多くの情報が確認できますので、ビクビクする必要は有りません。
最低限の操作が出来れば問題ありませんので、今回ご紹介した内容さえ覚えておけば困ることはほぼ無いでしょう。