この記事では、Linux内でのファイル編集のためのVimについて説明していく。Linuxシステムを扱う際、設定ファイルの編集は非常に重要だ。
あるソフトウェアが特定の動作をするようにしたい、カスタマイズしたい、そんなとき、設定ファイルを開いて編集することが多い。
PHP.iniファイルであるか、パスワードファイルであるか、.htアクセスファイルなどさまざまなものがあるが、Linuxシステムのすべての設定は、シンプルなテキストファイルに保存されている。
Linux内の設定ファイルを編集するために、多くの異なるエディタがある。本記事では、Linuxで利用可能な最も強力なファイルエディタの一つVimについて説明していく。
Vimはその独特の操作方法が難しいと言われているテキストエディタだが、慣れて使えるようにしていこう。
ファイルの拡張子がない
Windowsとの大きな違いの一つは、Linuxにはファイルの関連付けが存在しない点である。
これは、Windowsでは、ファイル名の後に常にファイル拡張子(関連付け)があるという意味だ。
例えば、Microsoft WordのドキュメントがNotesという名前の場合、そのファイル拡張子は.docまたは.docxになる。したがって、完全なファイル名はNotes.docまたはNotes.docxになる。
ファイル拡張子は、Windowsシステムにそのファイルを開くためのプログラムを教える。
Linuxにはファイルの関連付けが存在しない。あるのはファイル名だけだ。
それがテキストファイルなのか、その他のファイル形式なのか、どうやって区別するのか?と思うかもしれないが、これがLinuxの奇妙な点だ。
テキストファイルを修正する場合、.txtファイル拡張子は存在しない。.txt と表示されていても、それは拡張子ではなく単なるファイル名だ。
ファイルエディタソフトを使用する前に、まず、どのファイルを修正する必要があるのかを理解しておきたいところだ。
Linuxのすべての設定ファイルは、ファイルエディタを使用して編集する。ドキュメントやテキストを編集する方法を理解しないなら進展はない。
Vimのインストール方法
Linuxディストリビューションによっては、Vimがデフォルトでインストールされている場合がある。
ターミナルで vim –version コマンドを実行するとVimがインストールされているかどうかを確認できる。
$ vim --version
Vimがインストールされていないなら、以下のコマンドでインストールできる。
- Ubuntu Debianベースのディストリビューションの場合
$ sudo apt install vim
- CentOSやFedoraなどのRPMベースのディストリビューションの場合
$ sudo dnf install vim
- Arch linux ベースのディストリビューションの場合
$ sudo pacman -S vim
gvim
gvim は、Vim エディタの GUIバージョンだ。
gvimをインストールすると、Vimコマンドラインバージョンも一緒にインストールされる。
Vim は元々は端末ベースの UI (ユーザーインターフェース) を持っていた。GUI 環境でも使えるように、gvim というバージョンが作られた。
vimコマンドラインバージョンは、グラフィカルなウィンドウや画面は使用せず、ターミナル上で動作する。マウスは使えず、キーボードのみで操作する。メニューやツールバーがないなど、GUI版に比べて視覚的な情報が制限され、マウス操作ができないので初心者には敷居が高い。
一方 gvim では、メニューやツールバーによる操作、マウスによる選択や操作など、GUIの機能が利用できる。視覚的な効果やマウス操作などの GUI の恩恵を受けられる。好みや作業環境に合わせて vim か gvim を選べばいい。
- Ubuntu Debianベースのディストリビューションの場合
$ sudo apt install vim-gtk
- CentOSやFedoraなどのRPMベースのディストリビューションの場合
$ sudo dnf install vim-X11
- Manjaro などArch linux ベースのディストリビューションの場合
$ sudo pacman -S gvim
「ソフトウエア」などでもインストールができる。
Vim や gvim をアンインストールしようとすると、なぜか上手くいかない場合がある。強制的にアンインストールしようとすると、システムを破壊することがある。
Vim の依存関係には sudo という重大なコマンドがあるようで、このコマンドが使えなくなる危険性がある。sudo を再インストールしようにも sudo が使えないのでインストールできないことになる。
できないときは、無理にアンインストールしないで放置しておいたほうがいい。
Vimの開始
Vimを開始していく。ファイルを開くまたは作成する方法についてみていく。それは非常に簡単だ。
最初にやるべきことは、ターミナルを開いて、sudoコマンドを入力し、その後にスペースを入れてvimという単語を入力し、さらにスペースを入れて開きたいファイルの名前を入力する。
$ sudo vim
vimという単語はすべて小文字である。Linuxでは大文字と小文字の区別が重要であるため、vimをすべて小文字で入力することを覚えておこう。開きたいファイルの名前を入力するのも同じだ。
これだけでVimを使用してファイルを開ける。例えば、PHP.iniファイルを開きたい場合は、以下のコマンドを単に入力する。
$ sudo vim php.ini
新しいファイルを作成しようとしている場合、「$ sudo vim 」の構文でもファイルを作成できる。そのコマンドをコマンドプロンプトに入力すると、ファイルが作成され、同時に開かれる。ファイルの開き方と作成方法はまったく同じコマンドを使用するわけだ。
経験がある一部のユーザーは、sudoなしでvimコマンドを実行できること知っているかもしれない。しかし、ディストリビューションよっては、sudoなしでvimを実行すると、正常に動作したり動作しなかったり、ということがが起こる。
sudoを使用せずに開いて編集できる設定ファイルがある一方、適切に編集できないファイルもある。
sudoなして vim ファイル名で設定ファイルを開くと、編集が終わった後にファイルを保存できない問題に遭遇することがある。そのファイルを管理者として開いていないためだ。
Linuxで重要なタスクを実行する際、常にsudoを使用するの良い、とされているのだが、以上の理由があるからなのだ。
ファイルの所有権の変更
設定ファイルを編集するためにVimを使用しているので、所有権についても注意が必要な重要なポイントになる。
では、基本的に「ファイルの所有権」とは何を意味するのだろうか。Linuxシステムにインストールするほとんどのソフトウェアは、それぞれの開発者から提供されている。つまり、外部のソースから提供されるもの、ということだ。
これらをLinuxシステムにインストールすると、そのソフトウェアのすべてのファイルの所有権は技術的には開発者にある。
問題はここにある。Linuxでは、そのファイルの所有者でない限り、ファイルを編集することはできない。
例えば、Apache2、mySQL、またはPHPをLinuxのWebサーバーにインストールすると、そのソフトウェアに関連するすべてのファイルは、ファイルのソースであるrootによって所有される。
これらのファイルを編集しようとすると、所有者ではないために編集できないことになる。
したがって、設定ファイルを編集する場合、まず所有者をユーザーである自分に変更し編集ができるようにする。そのためには、次のコマンドを入力する。
$ sudo chown
上記のコマンドの は、許可を変更したいユーザーの名前で、一方、 は所有権を変更したいファイルの名前である。
たとえば、ユーザー名が purin で、files という名前のファイルの所有権を変更したい場合、以下のコマンド構文を入力する。
$ sudo chown purin files
これを行うと、ユーザー purin がファイルの所有者となり、編集する権限が得られる。
ノーマルモードからインサートモードに切り替える
ファイルを開いたあとに理解する必要があるのは、Vimを使用してファイルを修正する方法だ。
Vimでファイルを編集するときに最初に気付くことがある。
カーソルを移動させるために矢印キーを使用しても、編集を開始するためにタイプしても何も起こらないのだ。
その理由は、Vimのインサートモードに入る必要があるからだ。Vimは起動するとまずノーマルモードになっている。ノーマルモードではカーソルの移動などが多く、文字を入力できない。そこで、インサートモードに切り換える。
Vimのインサートに入るためには、単純に文字「a」または「i」をタイプする。これを行うと、エディタの下部に –挿入– と表示され、ファイルの編集を開始して修正できるようになる。ファイルの修正を終えたら、挿入モードから抜け出すためにキーボードのESCキーを押す。
特定の文字を検索する
次に、特にphp.iniやその他の主要な設定ファイルのような設定ファイルを編集する場合、これらは非常に長いことがある。
非常に長いファイル内の単一の単語や値を編集しようとすると、その単一の単語や値を見つけるだけで大変だ。
Vimでお目当ての文字列を見つけるために使用できる2つのシンプルなコマンドがある。まず、インサートモードから出ていることを確認し、以下のコマンドを入力する。
:/
これはコロン、次にスラッシュ、そして編集しようとしているファイル内で探している単語または値をタイプする。:/の後に半角スペースを入れる必要はない。半角スペースを入れると半角スペースを含めて探せ、という意味になる。半角スペースも文字列として検索できる。
大文字と小文字の区別は重要だ。名前は正確に大文字で書く。正確に入力しないと探しているものを見つけられない。何かを見つけたとしたら、それは正しくない。
このコマンドは、カーソルからドキュメントの残りまでを調べる。探し物のコマンドで入力した単語または値を探す。
検索の重要な点は、ワイルドカード文字を使用できることだ。
設定ファイル内で「age」という単語を探すとする。文字列 age を探すには、以下のコマンドをタイプする。
:/age
ファイル内の特定の文字列を探すときに、文字列の名前の前後にワイルドカード文字としてアスタリスク記号を置くやり方がある。そのコマンドは次のようになる。
:/*age*
上記のコマンドは、「age」と独立した文字列を探せとの意味である。:/age だと packages などの文字列の中にある age まで検索されてしまう。
:/ageだと「age」と独立した文字列でないと検索されない。packages の文字列では「age」はない、と判断される。
「:/」を使用すると、Vimはカーソルがある位置から下方向に検索を行う。
カーソルがある位置から上方向に検索を行うには、以下のコマンドを単純に入力する。
:?
これはコロン、続いてクエスチョンマーク、そして検索している文字列または値を入力する。これにより、カーソルがある位置から上方向に検索が行われます。
さて、Vimファイル内で探している文字列や値が複数ある場合、検索を行うと、Vimは探している最初の文字列や値で自動的に停止する。次の文字列や値に移動するには、キーボードの「n」キーを押す。
:?で上方向に検索した場合は 「n」キーでは上方向にカーソルが移動していく。
終了と保存
Vim内でのファイルの開き方、終了、保存についてみていく。
コマンドプロンプトからVimファイルを開く方法については確認したが、Vim内部で他のVimファイルを開く方法を理解しよう。
もし既にVim内にいて別のファイルを開きたい場合、以下のコマンドを単純に入力する。
:e
これはコロン、次に小文字のe、スペース、そしてファイル名だ。
この操作を行う際には、インサートモードから出ていないとできない。
インサートモードでこのコマンドを入力すると、Vimはそのコマンドの文字列をファイル内に単に入力するだけで、別のファイルを開くコマンドとしては解釈されない。
ファイルを開き、中を閲覧した後、何も変更せずにそのファイルから出たい場合、以下のコマンドを入力する。
:q
これはコロンの後に小文字のqだ。このコマンドはVimから出る。各コマンドを入力した後にENTERキーを押す必要がある。
Vimから強制的に終了する必要がある場面もある。Vimが応答しなくなったり、通常の終了コマンドを受け付けない場面があるかもしれない。このような場合には、Vimを強制的に終了させる必要がある。その際には、小文字のqの後に「! (エクスクラメーションマーク)」を置きます。
:q!
Vimが固まったり、他のコマンドに応答しなくなった場合でも、小文字のqの後に「!」を置くことで、Vimアプリケーションから確実に出られる。他に方法が効かない場合にのみ、このコマンドを使用する。
Vimを通常に終了する際に、:q または :q! コマンドを使用しても、終了コマンドを実行する前に変更を保存していない限り、そのファイルに変更は保存されない。
ファイルに変更を加えた場合はどうだろうか?すべての変更を再度行わないように、終了前にファイルを保存したいと思うだろう。この場合には、以下のコマンドを入力する。
:wq
これはコロンの後に小文字のwが続き、さらに小文字のqだ。小文字のwは「書き込み」を意味し、小文字のqは「終了」を意味する。したがって、Vimを終了する前に行った変更を保存する。
次に、ファイルに変更を加えたが、それを元のファイルに保存したくない場合がある。これは、「名前を付けて保存」コマンドを実行するという意味になのだが、そのためには、以下のコマンドを入力する。
:w
これはコロン、小文字のw、半角スペース、そして新しいファイルの名前。このコマンドは、編集したファイルを新しいファイルに保存する。
これは、元のファイルを上書きしたくない場合や、何らかの理由で元のファイルを保持したい場合に役に立つだろう。