Linuxの最初の壁はファイル編集
これまでWindowsとLinuxにおける基本的な概念の違いや、基本的な操作方法の違いなどを紹介してきた。Windowsでは主にファイルエクスプローラ(ウィンドウズエクスプローラ、エクスプローラ)を使って操作を行い、Linuxではターミナルアプリケーションとコマンドを使って操作する方法を取り上げてきた。
WindowsではGUIアプリケーションやダイアログなどから設定を行うことが多いが、Linuxでは設定ファイルに設定を書き込むことが多い。Linuxはサーバとして使われることが多く、GUIが利用できない状態でも利用できるようにこうした作りになっている。
慣れてしまえばどうということはないが、Windowsユーザーにとって最初の大きな壁はこの「Linuxにおけるファイルの編集」にあると思う。そこで、今回は、Linuxでファイル編集が行えるようにするための導入方法を紹介しよう。
Windowsにおけるファイル編集
Windowsにおけるファイルの編集の基本はメモ帳だ。メモ帳はエディタと呼ばれるアプリケーションに分類される。提供されている機能はごくごくシンプルで基本的なものだけだ。サードパーティ製のエディタアプリケーションと比べるとあまりにも機能が少ないのだが、テキストファイルが編集できればよいという基本的な要求には応えてくれる。
Microsoftは、Windows 10にLinuxを実行する機能であるWSL (Windows Subsystem for Linux)を導入してから、少しずつメモ帳の機能拡張を行っている。しかし、それでも代表的なサードパーティ製エディタアプリケーションと比べると機能は少ない。
その分、利用方法は簡単だ。機能は基本的にメニューから操作することができる。慣れてくればそれぞれの操作のショートカットキーを覚えておいて、メニューを操作しなくても利用できるようになる。メモ帳はマニュアルを読まなくてもフィーリングで利用できるアプリケーションに分類されるだろう。
もちろん、作業効率を上げようと考えたら、メモ帳ではなくより多機能で高性能なエディタアプリケーションをインストールして利用したほうがよいだろう。簡単に利用を開始することができ、それほど操作も難しくない、これがメモ帳の特徴であり利点と言えるだろう。
Linuxにおけるファイル編集
一方、Linuxでメモ帳に相当するエディタがviだ。実際にはVimと呼ばれるvi系のエディタが使われていることが多いので、Vimで説明することにする。
デスクトップ系のLinuxディストリビューションを使用していれば、メモ帳に相当するエディタアプリケーションはインストールされている。しかし、それは利用している統合デスクトップ環境ごとに違っている。インストールすれば同じエディタを利用することはできるが、そうなるとデフォルトで利用できるエディタとは言い難い。
また、こうしたデスクトップ環境での利用を想定したアプリケーションは当然リモートログインして利用するようなCUI環境では利用できない。サーバでの利用が多いLinuxという環境を考えた時、デフォルトのエディタはターミナルで動作するVimのようなエディタになってくるわけだ。
メモ帳と比べると、Vimの操作はかなり難しい部類に入るだろう。まず、メモ帳にはモードという概念がないが、Vimにはモードという概念がある。モードとは、例えばテキストを入力する時とテキストを削除する時が、「異なる場所(モード)で行う操作」として認識されている、といったものだ。保存や終了といった操作も、テキストの入力とは別のモードだ。カーソルの移動もテキストの入力とは別のモードになっている。
メモ帳ではテキストの入力も削除も同じモードで動作するが、Vimではテキストの入力と削除は別のモードで動作する(入力のモードの時に削除もカーソルの移動もできるので、説明がなかなか難しい)。
このような作りになっているのは歴史的な流れもあるが、結局のところ、この「モード」の存在がテキストファイルの編集にとって都合がよかったという理由があるように思う。慣れるまでは大変だが、モードがあることで編集作業を高速に行え、操作のスキルが挙がるほど効率良く編集が可能になる。
最初はVimを使ってファイルを編集するどころか、ファイルを保存する操作すら難しい。例えば、新しいファイルを作って「Hello World」という文字列を書き込んでファイルの編集を終了する、という操作は、次のような操作の流れになる。
順 | 場所 | 操作 | 内容 |
---|---|---|---|
1 | シェル | vim hello.txt(Enter) | ターミナルからファイル名を指定してVimを起動 |
2 | Vim | i | 挿入モードに移行 |
3 | Vim | Hello World | 文字列を入力 |
4 | Vim | ESCキー | ノーマルモードに移行 |
5 | Vim | : | コマンドラインモードに移行 |
6 | Vim | w(Enter) | ファイルhello.txtに保存後、ノーマルモードに移行 |
7 | Vim | : | コマンドラインモードに移行 |
8 | Vim | q(Enter) | Vimを終了 |
慣れてしまえば、これはVimの基本的な操作で特に違和感のないものだ。本当に基本的な機能しか使っていないし、モードもノーマルモード、挿入モード、コマンドラインモードしか使っていない。3つのモードを行ったり来たりしているわけだが、これがVimの最も基本的な操作だ。
モードがあると何が便利なのか。それは、モード、特にコマンドラインモードというモードでさまざまな命令を行うことができることであり、これがVimの大きな強みになっている。検索、置換、繰り返し操作、コマンド結果の挿入など、さまざまな操作をコマンドラインモードから実施できる。内容がわからないと呪文のようにしか見えないが、これができるようになると編集の多くを自動化できるようになる。
Vimはさらにビジュアルモードというモードを持っており、コマンドラインモードでの命令の適用対象をビジュアル的に選択するといったことができる。Vimの動作は自分でVimスクリプト書いて拡張することもできるし、プラグイン機能の利用により拡張することもできる。とにかく、スキル強化も環境整備もすればするほど有利になるのがこのエディタだ。
最初は戸惑うこと必須のエディタだが、一旦利用できるようになればかなり強力なツールとして利用できるようになる。プログラムの開発環境として統合開発環境ではなくVimを使っているデベロッパーも相当数存在しているが、その1つの証拠と言えるだろう。
Vimは練習あるのみ
Vimの習得には近道というものがない。こればかりは練習を通じて基本的な操作方法を身につけるほかない。最初は簡単なテキストデータの入力と保存を繰り返し、徐々に基本的なコマンドラインモードの使い方を身につけていく。ここで身につけたスキルは長期にわたって利用できるものだ。身につけておいて損はない。
本連載はWindowsとLinuxの使い方の違いを紹介していくものであり、Vimの習得が目的ではないので詳細までは掘り下げないが、知っておくべく基本的な使い方と、便利なコマンドモードの使い方は今後説明していく予定だ。