LinuxサーバーやUbuntu、Macなどで使われるテキストエディタ「Vim」。
ここではVimテキストエディタのモードやファイル編集、保存や終了のやり方、suログインやsudoでファイルを開く必要があるのに普通に開いてしまった場合の保存方法について紹介します。
Vimのモードとは
Vimエディタはモードと言われる画面があります。コマンドモード、編集・挿入モード(インサートモード)、コマンドラインモード、ビジュアルモードなどです。
Vimのコマンドモードとは
1つ目はコマンドモードです。Vimでファイルを開いたときのデフォルトの画面がコマンドモードです。
コマンドモードでは、エディタ内でvimのコマンドを入力することが可能です。
コマンドの例として、コピー、削除、置換などが行えます。
Vimの編集/挿入モード(インサートモード)とは
もう2つ目は編集・挿入モードです。インサートモードとも言います。Vimで開いているファイルのコード、テキストの入力やテキスト内容を編集する時は編集モードで行います。
編集モードに移行するには、キーボードのiキーを押します。
編集できる状態になると、左下に「挿入」と表示されます。(serverなどOSを日本語化していない場合は「INSERT」と表示されます。)
変更してコマンドモードに戻る場合はキーボードの「Esc」を押します。
Vimのコマンドラインモードとは
3つ目がコマンドラインモードです。
コマンドラインモードでは、Vimの終了などで使われます。
コマンドラインモードに移行したい場合はコマンドモードでキーボードの:(コロン)キーを押します。
コマンドラインモードでコマンドが入力できる状態になると画面の左下に:(コロン)が表示されます。
Vimのビジュアルモードとは
最後にビジュアルモードです。
ビジュアルモードに移行したい場合はコマンドモードでキーボードのvキーを押します。
それ以外のモード画面の場合、キーボードのesc(エスケープ)キーを押して1度コマンドモードに戻ってvを
押してください。
ビジュアルモード画面になると、左下に「ビジュアル」と表示されます。(serverなどOSを日本語化していない場合は「VISUAL」と表示されます。)
Vimでファイルを編集する手順
ファイルをVimで編集する場合、ターミナル/端末でファイルを開きます。
Vimでファイルを開く
ファイルを開くコマンドは
$ vim ファイル名
です。
システムファイルなど権限があるファイルの場合はroot権限でのログインやsudoで実行してください。
$ sudo vim ファイル名
su root権限でログインしている場合はsudoは不要です。(※権限のないテキストファイルなどは不要です。)
Vimでファイルを編集する
Vimで開いているファイルを編集するにはコマンドモードから編集モードに切り替える必要があります。
読み取り専用モードから編集モードへの移行は
キーボードのiキーを押してください。
「挿入」と表示されたら、テキストの追加など編集が可能になります。
Vimの保存と終了
Vimの保存
Vimで編集中のファイルを保存したい場合はコマンドラインモードで行います。
その前に編集モード画面からコマンドモードに戻りましょう。
編集モード画面でキーボードの「Esc」を押します。
「Esc」を押すとコマンドモード画面に移行します。(挿入の表示が消えます)
その状態でキーボードの :(コロン)キーを押してください。
コマンドラインモードに移動します。
Vimの保存コマンド
Vimの保存コマンドは「w」です。
キーボードのw→Enterを押すと編集されたファイルの内容が保存されます。
サーバー内のシステムファイルは頻繁に保存したり、コピーしたり慎重に取り扱いましょう。
保存するとコマンドモードの画面に戻ります。
Vimの終了コマンド
ファイル編集→保存後、Vimエディタを終了したい場合は、もう一度コマンドラインモードでコマンドを入力します。
:の後にキーボードのqを押してください。
qを入力したらキーボードのenterを押すとVimエディタが終了します。
Vimファイル修正後に終了する
Vimでファイル編集後、保存してVimエディタも終了することも可能です。
編集ファイルを保存してVimエディタを終了する場合は
:wq
と入力してキーボードのenterを押します。
Vimで編集していたファイルを保存されエディタも終了します。
Vimの強制終了
Vimでファイル編集中、入力間違いなどでファイルを保存したくない場合は編集内容を保存しないでVimを強制終了することが可能です。
編集中のファイルを保存することなくVimを終了したい場合は
:q!
と入力してキーボードのenterを押してください。
Vimで編集していたファイルは保存されず、Vimエディタが終了します。
読み込み専用ファイルをvimで開いて保存できない場合
読込専用のファイルをVimで開き編集した場合、「w」では保存できません。権限がないからです。
システムファイルなど読込専用ファイルはroot権限suやsudoで実行してください。
どうしても読込専用ファイルを保存したい場合があるかもしれません。システムファイルなどをroot権限がない状態(suログインしていない)やsudoでVimを開かなかった場合でもファイル保存が可能です。
読込専用のファイルを保存する方法
読込専用ファイルを編集して「:w」「:wq!」で保存しようとすると
「書き込み用にファイルをひらけません」
「readonly~」などと表示されファイルを保存できません。
その場合は「Enter」を押して、下記のコマンドを試してみましょう。
:w !sudo tee % > /dev/null
入力後、「Enter」を押します。
sudoのパスワード入力が求められるのでパスワード入力します。
するとファイルの内容とバッファが変更され確認メッセージが表示されます。
編集内容が保存されました。
キーワードの「o」を入力して「Enter」を押します。
再度「Enter」を押したら、コマンドモードに戻ります。
変更内容に間違いがない場合はファイルを終了します。
今回のような読み取りファイルを保存した場合は強制終了する必要があります。
キーボードの :(コロン)キーを押してコマンドラインモードに移動します。
:q!
と入力してキーボードのenterを押し強制終了してください。
この方法は10年以上前から定番です。
:w !sudo tee %
だけでも編集内容が保存される場合がありますが、エラーになったりvimで保存に時間がかかる場合があります。
以上、Vimの編集、保存や終了などの紹介でした。