今だからこそ使いたい、若手エンジニア向けEmacs実践入門

エディタソフトウェアとして有名なEmacs。若手エンジニア向けに、今だからこそ「Emacs実践入門」をお送りする。

今だからこそ使いたい、若手エンジニア向けEmacs実践入門

はじめまして、大竹智也と申します。過去に『Emacs実践入門』(技術評論社)を上梓し、雑誌での執筆経験もありますが、Webでの執筆は初めてとなります。そのためお見苦しい点があるかもしれませんが、何卒ご容赦ください。

突然ですが、みなさんはGNU Emacs(以下、Emacs)というソフトウェアを知っていますか? 本日はまだEmacsをよく知らない方に向けて、このソフトウェアの魅力を紹介していきます。

Emacs概要

1

Emacsは1975年に誕生した歴史あるテキストエディタソフトウェア(以下、エディタ)です。今年は2016年になりますので、誕生から40年以上が経過したことになります。おそらくこの記事を読まれている大半の方よりも年上になるでしょう。

現在、数多くのソフトウェアが存在していますが、その数だけ激しい競争があります。そのため、これほど長い歴史があり、かつ開発が継続しているソフトウェアは稀有な存在。それはつまり、Emacsがいまでも多くの開発者に愛され、支持を集めている確かな証明なのです。

Emacsの簡単な歴史

まずはEmacsの歴史をさらってみます。

EmacsはOSS(オープンソースソフトウェア)です。いまでこそOSSは一般的となっていますが、EmacsはFSF(フリーソフトウェア財団)が中心となって開発されている元祖OSSともいえるソフトウェアです。そのため、これまでに数多くの開発者が貢献しており、中にはRubyの生みの親であるまつもとゆきひろ氏も含まれています

そんなEmacsですが、2016年9月17日に最新バージョンとなる25.1がリリースされ、現在でも精力的に開発が行われています。

2

Emacsの特徴

3

Emacsの最大の特徴は公式サイトのコピー「An extensible, customizable, free/libre text editor — and more.」からも伝わるように高い拡張性にあります。その理由は、Emacsの本質がEmacs Lisp(以下Elisp)と呼ばれるプログラミング言語の実行環境であり、この言語を通じてほとんどすべての機能が作られているためです。

Elispを書けばエディタの動作変更や上書きなどが、単純な設定の枠を越えて好きなようにカスタマイズ可能です。また、Elispによって書かれたカスタマイズは、OS、GUI、CLIなどを問わず、どんな環境でも同じ動作が約束されています。

アプリケーションフレームワークが用意されていて、その中で自分で好きなアプリケーションを開発できると考えれば分かりやすいでしょう。

Emacsの基本的な5つの機能

Emacsは必ずカスタマイズしなければならないのかと言えば、そうではありません。標準でも、とても便利な機能が用意されています。代表的な機能の一部を紹介してみましょう。

1. 検索と置換

Emacsはインクリメンタル検索機能を持っています。入力の都度リアルタイムに結果を確認でき、一度使うと手放せない機能のひとつです。また、正規表現検索にも対応しており、後方参照などを利用した強力な置換も行えます。

他にもgrepコマンドが使える環境であれば、grepを利用してプロジェクト全体を高速に検索することも可能です。

2. シンタックスハイライトと自動インデント

プログラム言語の構文を解析し、色分けして読みやすくするシンタックスハイライト機能を持っています。また、言語の種類に応じて自動的にインデントを揃えてくれる機能もあり、コーディング規約にのっとった美しいコードを書くことが可能です。

3. ウィンドウ分割

ひとつのウィンドウを上下左右に分割し、複数のファイルを同時に確認しながら作業ができます。サブモニタなどを利用する人にとってはなくてはならない機能だといえるでしょう。

4. 矩形(くけい)編集

テキストを前後だけでなく上下に渡って選択し、一括して編集を行う矩形編集機能を備えています。複数行にまたがってテキストを挿入したり削除したりなど、発想次第でとても効率的な編集が可能です。

5. バージョン管理

GitやSubversionなどのVCS(バージョン管理ソフトウェア)と連携してEmacsから直接バージョン管理を行う機能を持っています。エディタとシームレスに連動しているため、使い慣れると、コマンドやバージョン管理専用ソフトを用いるよりはるかに高速でミスのないコミットが可能です。

Emacsの持つ無限のパワー

ここまで一般的な機能を紹介してきましたが、残念ながらEmacsの持つ機能の1%も紹介できていません。それは、最初に述べたようにEmacsはElispによってどこまでも拡張可能だからです。

Elispは追加パッケージとも呼ばれ、世界中の開発者によって公開されています。このElispを自分のEmacsにインストールすることで、誰でも簡単に無限のパワーを手に入れることができるのです。

Emacsを使ってみよう(インストール~基本の扱い方)

ここからはEmacsの具体的な使い方を紹介していきます。標準的な機能を解説した後、パッケージによる拡張を紹介していきますので、ぜひ楽しみにしていてください。

Emacsの画面説明

具体的なEmacsの使い方の前に、Emacsの画面について簡単に説明します(環境:OS X 10.11.6、Emacs 25.1)。

ウィンドウとフレームとバッファ

4 Emacsを起動したときに表示されるアプリケーション画面はウィンドウと呼ばれます。ウィンドウは分割することが可能となっていて、分割されたウィンドウ内のウィンドウをフレームと呼びます。つまり、最初に起動したときは、1つのウィンドウの中に1つのフレームが表示されているということになります。

ウィンドウを分割すると分割回数に応じてフレームが増えていきます。ウィンドウの分割は上下左右ともに好きな回数だけ行うことが可能となっています。

フレームの中の実際にテキストが表示されている部分をEmacsではバッファと呼びます。バッファはメモリ上に作られたオブジェクトであり、Emacsからみればひとつの変数のようなものとして扱われています。しかし難しく考える必要はなく、人間からしてみれば実際にEmacs上で表示されているテキスト部分がバッファだと思ってもらえれば直感的に理解できるでしょう。

ミニバッファとモードライン

5

Emacsのウィンドウの下には、モードラインとミニバッファという2つの重要な要素が表示されています。モードラインは図中の赤くなっている部分で、選択中のバッファに関する様々なステータスを表示します。そのため、フレームを分割した場合はフレームの数だけモードラインが表示されます。

図中の青くなっている部分はミニバッファと呼びます。Emacsに対して、コマンドを実行入力して実行を行ったり、コマンドから返された結果が表示されます。こちらはモードラインと違ってウィンドウの中にひとつしか存在しません。

このあと、Emacsを操作するためにさまざまなコマンドを紹介していきますが、それらは、すべてこのミニバッファから実行できるようになっています。

Emacs基本編:まず覚えたい3つのキーバインド

それでは、ここからはEmacsの実際の使い方を解説していきます。

1. ファイルを開く( C-x C-f

Emacsでファイルを開くには、Control + xに続けてControl + fというショートカットを使います。すると、ミニバッファにFind file: ~/と表示され、ここで開きたいファイルのパスを入力してenterを押すとファイルを開くことができます。

このショートカットのことをEmacsではキーバインド(Keybindings)と呼び、一般的にControlCと表記します。つまり、先ほどのファイルを開くキーバインドは、C-x C-fと表記します。

6

ミニバッファではtabキーによる補完が使えます。そのため、ファイルパスをすべて手入力しなくてもtabを押せばファイル名が自動的に補完されます。補完対象が複数存在する場合、tabを2回押せば図のように現在のディレクトリにあるファイルやディレクトリの一覧が表示されます。この状態で、残りのファイル名の一部を入力して再びtabを押せば、他にマッチする候補がなくなった段階で残りの名前がすべて自動的に補完されます。

これまでFinderなどのファイラを利用してファイルを開いていた人にとって、最初は不慣れなため少し難しいかもしれませんが、慣れるとFinderよりも早くファイルを開けるようになるかと思います。

2. 検索する(C-s、C-r)

ファイル内のテキストを検索するにはC-sを使います。このキーバインドを実行すると、ミニバッファにI-search:と表示されます。ここに検索したい文字列を入力すると、図のように入力した文字列がハイライトされ、カーソルが最初にマッチした箇所へと移動します。

7

検索しているとき続けてC-sを押すと、次の図のように次にマッチする単語へとカーソルがジャンプします。このように検索した後、さらにC-sを押すと、次の検索結果へとカーソルが移動し続け、もし以降マッチする文字列が存在しない場合は最初にマッチした箇所へとカーソルが戻るようになっています。

8

C-sは下方向への検索ですが、上方向への検索も用意されています。上方向へ検索するにはC-rを押します。このC-rC-sで下方向に検索している最中でも利用できるので、もしジャンプし過ぎてしまった場合などは、C-sC-rを使い分けて移動しましょう。

3. 置換する(M-%)

置換を行うには、M-%というキーバインドを使います。Mが初めて登場しましたが、こちらはMetaキーのMとなっていて、MacではAlt(Option)が割り当てられています。M-%Alt-%を押すと実行できます。

9

M-%を実行すると、上図のように検索と同じようにミニバッファでQuery replace:と表示され、置換前の文字列を聞かれます。文字列を入力してenterを押すと、Query replace <置換前の文字列> with:と表示されるので、置換後の文字列を入力して再びenterを押します。

10

すると、ミニバッファにはQuery replacing <置換前の文字列> with <置換後の文字列>: (? for help)と表示され、検索と同じように置換前の文字列がハイライトされます。この状態で特定の操作キーを入力すると、置換が行われたりスキップされたりします。

11

操作キーはいつでも確認ができ?を押すとフレームが分割され、図のようなヘルプが表示されます。

12

このヘルプによれば、spaceyを押すとマッチしている箇所を置換し、deletenを押すとスキップして次のマッチへと移動します。ynを押してすべてのマッチしている文字列の置換を終えると、ミニバッファに図のようにReplaced <置換数> occurrencesと表示して知らせてくれます。途中で置換を終了したい場合はenterqを押しましょう。

13

Tips:検索からそのまま置換も可能

最後に、検索と組み合わせた便利な操作を紹介しておきます。

M-%では置換を実行するまで置換前の文字列の入力が正しいかどうか分かりませんでした。そのため、C-sの検索からそのまま置換できれば便利です。Emacsには、もちろんこの操作が用意されていて、C-sで検索を行って、そのままM-%を実行すれば、置換後もスムーズに文字入力へと操作が続くようになっています。便利なのでぜひ覚えておきましょう。

Emacs実践編:パッケージで機能強化する

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く