Linuxサーバーでの作業でファイルの作成や編集を行うことはよくあります。
VSCodeのリモート編集機能などが利用できれば良いですが、sshで接続している場合など、コマンドライン上で作業をしたい場合が多々あります。
「vim 基礎」などで調べると、様々なオプションやコマンドが出てきて頭がこんがらがってしまいそうなので、実際のファイル編集の流れに沿ってvimを利用してみようと思います。
viとvim
まず、vimとviの違いですが、「viの進化系がvim」くらいの認識で問題ないと思います。
細かな機能の部分で違いがあったりしますが、viの機能はvimに含まれており「使いやすくなってる」viがvimです。
vimの基本コマンド 「vim ファイルパス」
vimコマンドは「vim」に続けて、編集対象のファイルパスを入力することでファイルの編集を開始できます。
今回はAWSのCloud9上に空のディレクトリを用意しました。

ファイルの作成 「vim 存在しないファイルパス」
vim コマンドに続けてファイルパスを記述しますが、記述したファイルのパスが存在しない場合はファイルが作成されます。
vim ./test.txt
上記コマンドを実行すると、カレントディレクトリ内の「test.txt」を編集のために開きますが、ディレクトリ内にファイルが存在しません。この場合、「./test.txt [New]」と表示され、ファイルが新規で作成されることが確認できます。

vimでのファイル編集方法
ファイルの中身の編集 「基本モードで【i】」
続いてファイルの編集を行っていきます。vimでファイルを開いた時点では編集が行えません。便宜上この状態を「基本モード」と呼びます。この状態ではファイルの内容を確認することは可能ですが、編集が不可能な状態となっています。
編集を行う場合、この基本モードで「i」のキーを押下します。この時、入力モードが半角英数になっていることを確認してください。
正常にモードが変更できた場合、下部に「– INSERT –」と表示されます。この状態であれば入力が可能なので、入力を行ってみましょう。便宜上この状態を「編集モード」と呼びます。

基本モードに戻る「esc」
編集モードの場合はキーの押下でファイルへの入力となるため、モードの切り替えといったようなvimへの命令が出来ません。
つまり、編集モードのままではファイルの保存やvimの終了といった命令が出来ません。そのため、編集が終わったら編集モードから基本モードへと切り替える必要があります。
基本モードに切り替える場合は「esc」キーを押下することで基本モードへと切り替えることができます。
下の画像の通り、INSERTの文字がなくなっていますね。これで基本モードへと切り替えることが出来ました。

編集の終了
編集の終了、というよりもvimの終了の仕方について確認していきます。
Linuxでのコマンドは「Ctrl + C」で終了することが多いと思いますが、vimは別の方法で終了します。
終了するにあたって、下記の3つのコマンドを覚えておきましょう。
- :q
- :wq
- :q!
これを覚えておけば大丈夫です。
多少順番は異なりますが「:q」が共通している部分ですね。このコマンドが終了コマンドになります。
基本モードの状態で「:q」と入力してみましょう。入力すると、下部に表示されると思います

表示されたら、コマンドが誤ってないことを確認しEnterを押下してください。

エラーが表示されてしまいましたね。このエラーはファイルが編集されている状態で終了しようとすると発生します。
ここで出てくるコマンドが「:wq」と「:q!」になります。編集状態の場合「保存して終了」か「編集内容を破棄して終了」でvimを終了する必要があります。今回はファイルの変更を保存したいので「:wq」とコマンドを入力しましょう。
入力すると、エラーメッセージが消えて「:wq」と下部に表示されます。Enterを押すと、ファイルが保存されvimが終了します。
今回は使用しない「:q!」は「編集内容を破棄して終了」となるため、編集を取り消したい場合はこちらのコマンドで終了します。

lsコマンドでディレクトリを確認するとファイルが存在することが確認できますね。

既存ファイルの編集 「vim ファイルパス」
続いて、ファイルの編集作業を行っていきます。先ほど作成したtest.txtをvimで開いてみましょう。
vim ./test.txt

先ほどの内容が書き込まれていることが確認できますね。
[New]と出てきていて、ファイルの内容が空の場合は「パスが間違っていて新規作成モードになっている」可能性があるので、開くファイルのパスが正しいか確認しましょう。
編集方法については作成時点と変わらないので割愛します。
それでは「:q」と入力してvimを終了しましょう。編集を行っていないため、「:q」コマンドで終了できます。
「:q!」の「編集内容を破棄して終了」を試してみたい方は、「vimでファイルを開く > 編集モードで編集 > 基本モードに戻る > :q!で終了 > もう一度開いてみる」の手順で試してみましょう。
まとめ
今日は簡単にvimについて説明してみました。調べるとたくさんの便利コマンドが出てきますが、基本の操作は今回のコマンドで十分だと思います。
- vim ファイルパス →起動
- 基本モードで「i」 →編集モード
- 編集モードで「esc」 →基本モードに戻る
- 「:q」「:q!」「:wq」キーで終了する
この流れを覚えておきましょう。
ファイルパスで指定されたファイルが存在すればファイルの編集、そうでなければファイルが作成される。
終了コマンドは動作によって使い分ける。使い分けの目安としては
- 基本は「wq」
- エラーになってしまったら何か編集があるはず
- 編集内容が保存したいものであれば「:wq」
- 編集内容が保存したくない、または編集内容が思い当たらない場合は「:q!」
とすると良いでしょう。よく分からない編集の保存は事故の原因になりかねません。
ファイルの内容を確認する「cat」
cat ファイルパス
というコマンドでファイルの中身を確認できます。
vimコマンドでもファイルの内容は見ることができますが、catは閲覧用のコマンドであるため、誤った編集をすることがなくなります。ファイルの確認が目的の場合はcatコマンドを利用しましょう。