Ubuntu日和

【第39回】Ubuntuのテキストエディタ事情について知る

 PC上で、誰もが必ず使うであろうアプリケーションというものがいくつかある。ファイラーや、今時であればWebブラウザがそうだろう。

 そしてテキストエディタも、こうした誰もが使うアプリの1つではないだろうか。特にLinuxは、Unixの流れを汲むテキスト文化のOSのため、システムのメンテナンスにおいても、テキストエディタの使用は避けては通れない。今回はUbuntuにおける、そんなテキストエディタ事情を紹介しよう。

Linuxとテキスト

 繰り返しになるが、LinuxはUnixの影響を強く受けているOSだ。このUnixというOSにはいくつかの特徴があるのだが、その1つが、あらゆるものをテキストで表わすという点だ。

 たとえば、システムやアプリの設定ファイルは、(いくつかの例外はあるものの)基本的にはプレーンなテキスト形式で格納される。またシステム内部では数多くのスクリプトが動作しているが、これらもその中身はテキストだ。プレーンなテキストファイルはOSやアプリに依存せず読み書きができるため、移植性にも優れている。

 さらにGitなど、バージョン管理システムの恩恵を受けやすいのも、バイナリに対するテキストのアドバンテージだと言えるだろう。CLIのプログラムも、標準入出力を流れるテキストのストリームに対する、フィルタとして振る舞うものが多い。このあたりの事情は、興味があったら「UNIX哲学」などのキーワードでググってみて欲しい。

 GUIのアプリは、いわゆる「設定ダイアログ」をマウスでポチポチするだけでも動くため、普段は設定ファイルの存在を意識しないことも多いだろう。だが多くのアプリは内部的に設定ファイルを持っており、ホームディレクトリ以下に隠しファイルとして保持している。GUIには項目が存在しないため設定できない隠しパラメータを、ファイルを書き換えることで直接指定したり、アプリがバグっていて正しく設定が保存されないため、テキストエディタで直接修正したような経験が、ベテランであれば1度くらいはあるのではないだろうか。

 テキストエディタとはその名の通り、テキストをエディットするためのアプリだ。文字を装飾したり、プリント後のレイアウトといった「見た目」を考慮するワープロとは異なり、あくまでテキストを快適に編集することのみに特化している。まあ簡単に言えば、「Word」と「メモ帳」の違いだ。

 テキストを書くアプリであるため、通常は「メモを書く」、「プログラムを書く」、「小説を書く」など、文章を書く用途で使われることが多いだろう。だがことLinuxにおいては、前述の通りシステムの管理にも使われるツールだ。特にGUIによる対話的な設定メニューを持たないサーバーでは、テキストエディタによるテキスト編集は、必須のスキルと言ってよいだろう。

Ubuntuデスクトップの標準エディタ

 Linuxにおけるテキストエディタの立ち位置が理解できたところで、Ubuntuにおける標準エディタを紹介しよう。

 長年、Ubuntuデスクトップにおける標準エディタとして君臨し続けてきたのが「Gedit」だ。デフォルトのエディタ、つまりWindowsでいう「メモ帳」ポジションであることもあって、あまり言及されることのないアプリなのだが、実は非常に高度な機能を備えている。なんならGeditだけで、プログラマーがプログラミング作業を行なうことも可能なほどの「本格派」エディタだ。とはいえGeditの細かい機能を話し始めるとキリがないため、ここでは簡単な紹介に留める。

Geditを起動する。GNOMEでは、従来のアプリ名を「ファイル」や「ビデオ」など、用途に合わせたシンプルな名称へと変更している。そのためGeditは内部的な名称であり、アイコンに表示されるアプリ名などが「テキストエディター」となっている所に注意して欲しい
Geditを起動した状態。まっさらのバッファが開いて、テキストを入力できる状態となっている。非常にシンプルな見た目だが、プラグインによる拡張が可能で、OSの標準エディタとしては十分すぎるほど強力なエディタだと言える

 Geditも、ファイルを開き、編集して保存というプロセスは一般的なアプリと同じなため、特に迷うことはなく使えるだろう。今時のアプリなので当然、タブ機能に対応している。複数のファイルを切替えながら、同時に編集したい場合に便利だ。新しいタブは、Ctlr+Tキーで開ける。

 右上のハンバーガーメニューの「設定」から、Geditの設定を変更できる。「表示」タブでは、Geditの見た目に関する設定が行なえる。「行番号を表示する」にチェックを入れると、行の左側に行番号が表示されるようになる。「カーソルのある行を強調表示する」にチェックを入れると、現在カーソルのある行の背景に色がついて見やすくなる。

 また「対応するカッコを強調表示する」にチェックを入れると、カッコの上にカーソルを置いた際、対応するカッコのペアに色がつく。このあたりは特に、プログラミングを行なう際に便利な機能だ。

 プログラミングを行なうのであれば、「エディター」タブで、タブ文字の扱いも設定しておくといいだろう。「タブの幅」でタブ文字の幅を指定できる。これで4タブ派も8タブ派も安心だ。「タブの代わりにスペースを挿入する」チェックを入れると、タブ文字のかわりにタブ幅ぶんのスペースを挿入するようになる。ソフトタブ派はこの設定を試してみて欲しい(ちなみに筆者はソフトタブ2スペース派である)。さらに「自動インデントを有効にする」にチェックを入れると、インデントをした状態で改行すると、前の行と同じだけ自動でインデントするようになる。

 「プラグイン」タブでは、プラグインの管理が行なえる。標準でもいくつかのプラグインがインストール/有効化されているが、それ以外のプラグインも「gedit-plugin-ナントカ」という名前のパッケージで提供されており、APTでインストールできる。気になったものがあったら、試してみてほしい。

 実はUbuntu 22.10以降のバージョンでは、標準のテキストエディタが変更されている。Geditに代わって標準となった期待のニューフェイスが「GNOME Text Editor」だ。なぜ変更されたかと言うと、アップストリームであるGNOMEプロジェクトがGNOME 42以降、標準のテキストエディタを変更し、それに追従したためだ。

 GNOME Text Editorは、Geditと比較するとかなりシンプルなテキストエディタだ。とはいえ前述した行番号の表示やタブ幅の指定、自動インデント、カーソル行の強調表示などのカスタマイズは、ウィンドウ右上の歯車のメニューか、ハンバーガーメニューの「設定」から行なえる。

GNOME Text EditorでMarkdownを表示した例。シンタックスハイライトにも対応している

 GNOME Text Editorはシンプルと言えば聞こえはいいが、プラグインでバリバリにGeditをカスタマイズしていたようなヘビーユーザーには、物足りないかもしれない。だがGeditはデフォルトでインストールこそされなくなったものの、「gedit」パッケージ自体は引き続き提供されている。Geditを使いたい場合はパッケージを手動で追加した上で、後述の手順でファイルとの関連づけを設定しておくといいだろう。

もっと高機能なコードエディタを使う

 Geditは思った以上に高機能なエディタであるものの、本格的なソフトウェア開発を行ないたいような場合は、プログラミング向けに開発されたエディタの使用を検討してみよう。

 こうしたテキストエディタは「コードエディタ」と呼ばれることもある。現在Ubuntu上で動作するコードエディタのうち、一番のオススメと言えるのが、Microsoft製のVisual Studio Code(以下VSCode)だ。VSCodeにはソフトウェア開発を支援するさまざまな機能と、豊富な拡張機能が存在する。たとえばバージョン管理システムとの連携機能や、コンテナを用いたリモート開発機能、最近流行りのAIを用いたコーディング支援機能といった具合だ。VSCodeはビルドされた製品こそ、MICROSOFT SOFTWARE LICENSE TERMSでライセンスされるものの、ソースコードはMITライセンスの下、GitHubで公開されているオープンソースソフトウェアだ。

 VSCodeのインストール方法は、大きく2つある。まずは公式ページで配布されているDebパッケージを使った方法だ。

.debをダウンロードしてインストールしよう

 インストールには、以下のコマンドを実行すればいい(ダウンロードしたパスや、ファイル名のバージョン番号は適宜読み換えて欲しい)。

$ sudo apt install ~/ダウンロード/code_1.84.2-1699528352_amd64.deb

 またVSCodeは、Snapパッケージシステムを使ってインストールすることもできる。この場合は以下のコマンドを実行しよう。

$ sudo snap install code --classic

 ただしSnapパッケージの仕様上、特定の機能が動かないといった問題がある可能性が否定できない。筆者も起動と文字の入力しか試せていないため、もしも動かない機能があったら、Deb版を試してみてほしい。

VSCodeの編集画面。プロジェクトのフォルダツリーや、ターミナルを同時に表示することができる。テキストエディタと言うより、統合開発環境に近い使い勝手だ
エディタ戦争とは

 Unix文化において、非常に長い歴史を持ち、エンジニアに愛され続けてきたエディタがふ2つ存在する。それがEmacsとviだ。そしてそれぞれの愛好家たちは、自身の使うエディタがどれほど優れているかを語り、それは時に激しい論争を呼び、その様子は「エディタ戦争」と呼ばれることもあった。

 などと言うと、「アイエエエエ!? 宗教戦争! コワイ!」と身構えてしまう、Linuxニュービーもいるかもしれない。だがこれはある種のジョークであり、“きのこ”と“たけのこ”のようなものなので、安心してほしい。普段はEmacs上で生活していても、サーバー上での作業はviで行なうという人も多いし(筆者がこのパターンだ)、Emacs自体は一切使わなくても、Emacsキーバインド(カーソル移動をはじめ、多くの操作をCtrlキーとのコンビネーションで行なう独特の操作体系。Emacs以外のアプリでも数多く採用されている)だけは使うという人も珍しくない。

VSCodeの拡張機能を「Emacs」で検索した例。Emacs風にカスタマイズする拡張が多数見つかることから、「エディタとしてはVSCodeを使いたいが、操作感はEmacsでないと困る」タイプの人が、決して少なくないことが分かる

 どのサーバーにもインストールされているであろうviと、さまざまなアプリでも採用されているEmacsのキーバインド。どちらも覚えておくと便利なため、初心者はまず「たしなみ」として両方のエディタを経験しておくのも悪くない。

 少なくとも、起動方法、基本的な編集コマンド、ファイルの保存、終了方法くらいは覚えておくと、いつか役に立つ日が来るだろう(アプリの終了方法を覚える……? と思った方もいるかもしれない。これはジョークではなく、viもEmacsも、うっかり起動した初心者が終了させられず途方に暮れるのが定番となっているくらい、操作形態が独特である)。

 で、結局エディタ戦争はどっちが勝ったかって? やっぱりVSCodeかな……(個人の感想です)。

ファイルタイプごとに使うエディタを切替える

 使うエディタを1つに限定する必要はない。UbuntuでもWindowsでも同じだが、GUIのファイラーからファイルをダブルクリックすると、拡張子ごとに関連づけられたアプリが自動的に起動する。特定のファイルを閲覧/編集したいような場合に、いちいちアプリを起動してからファイルを読み込まなくてもよいため、非常に便利な機能だ。そして当然だが、この「拡張子とアプリの関連づけ」は、個別に指定することができる。

 Ubuntu 22.04 LTSの場合、ファイルを右クリックして「プロパティ」→「開き方」タブを開く。するとそのタイプのファイルを開くアプリを選択するリストが表示されるので、ここで任意のアプリを選択し、「デフォルトに設定」をクリックしよう。

拡張子が.pyのPythonスクリプトを、VSCodeで開くように設定する例。これ以後、Pythonスクリプトをダブルクリックすると、デフォルトのGeditにかわってVSCodeが起動するようになる

 最新のUbuntu 23.10では、設定方法が少々異なる。ファイルを右クリックして「Open With」をクリックしよう。するとアプリを選択するダイアログが表示されるので、アプリを選択してから「Always use for this file type」をオンにして「開く」をクリックすればいい。

拡張子が.pyのPythonスクリプトを、VSCodeで開くように設定する例の23.10版。「Always use for this file type」をオフにしておけば、今回だけ選択したアプリで開くということも可能

 これで「ちょっとしたテキストの内容の確認には軽量なGNOME Text Editorを使うが、プログラムのソースコードはVSCodeで開きたい」といった具合に、エディタを使い分けることも簡単だ。

では、システムの設定ファイルを編集するには?

 テキストエディタのようなツールは、個人の好みによる部分がとても大きく、それが作業効率も左右する。そのため自分が好きなものを自由に選択し、用途に応じて使い分けるべきだ。

 シンプルで高速なエディタがよければデフォルトのGNOME Text EditorやGeditを、がっつり開発を行ないたいならVSCodeを使ってみよう。またKubuntuにプリインストールされているKateや、同じくKDE向けのエディタであるKWrite、Web開発向けのBluefishといったエディタを使ってもいいだろう。これらはどれも、APTでインストールできる。またプロプライエタリなエディタでは、Sublime Textなども人気があるようだ。

 ……というここまでの話は、個人的なドキュメント作成やプログラミングに限った話だ。ここで冒頭でも述べた、「Linuxのシステム設定ファイルの編集」の話に戻ろう。結論から言うと、今回紹介したようなGUIのエディタで、システムの設定ファイルを編集してはいけない。もう少し厳密に言うと、推奨されない。というのも、一般ユーザーでは書き込みのできない設定ファイルを編集するには、root権限が必要になる。だが原則として、デスクトップセッションやGUIアプリをroot権限で起動するべきではないというのがその理由だ(そのため、ホームディレクトリ内の個人用設定ファイルであれば編集しても問題はない)。

 つまりLinuxのシステム管理には、root権限で動かせる、CLI用のエディタの知識が必要不可欠だ。そこでUbuntuにおけるsudoの原則と、CLIにおけるエディタの話が本題……というつもりだったのだが、ここまでで、思った以上に長い話になってしまった。そこでCLI向けのエディタについては、回を改めて紹介させてもらおうと思う。