Emacs 入門: Emacs の用語について知ろう

Emacs ついて初心者が ネットで調べると、独特な用語が多くて戸惑いますよね。ぼくも最初はそうでした。 基本的な用語を知っておくと、Emacsについて調べるのが楽しくなると思います。 この記事ではEmacsの最低限の基本用語について説明します。

Emacs の画面の名前

Emacsの画面の名前を説明します。 Emacs 独特なのがフレームとウインドウ、モードライン、エコーエリアでしょう。

図を参照しながら見ていきます。

フレーム

Windows OSのアプリケーションのいわゆるウィンドウをEmacsでは「フレーム」と言います。まぁ「枠」ですね。

Emacsはフレームを複数持つことが出来ます。新しいフレームを開くにはC-x 5 2を押します(コントロールキーを押しながらxを押し、指を離した後順番に 5 2 を押します)。

メニューバー

WindowsやMacのアプリケーションのメニューバーと同様です。フレームの上の方にあります。

下で述べるメジャーモードに応じてメニュー項目が変わります。

ツールバー

WindowsやMacのアプリケーションのツールバーと同様です。メニューバーの下にあります。

設定で非表示にできます。ぼくはあまり使わないので、非表示にしています。その方がwindowを大きくできますからね。

あまりボタンの数が多くないです。

ウィンドウ

図の緑色で囲った部分がEmacsの「window/ウィンドウ」です。

windowは下で述べるbuffer(バッファー)の中身を表示するものです。実際に編集する場所ですね。

windowは分割することができます。分割したり、一つにしたり、自由に往き来できます。

ニ分割した例を下に示します。二分割するにはC-x 2(コントロールキーを押しながらxを押し、離した後に2を押す)を押します。

モードライン

モードラインはウインドウの下にある横に細長い部分です。

モードラインはウィンドウに表示されているバッファーに関する情報が表示されます。

モードラインの情報は上の図の様に表示されます。たいてい6-7の情報があります。 「たいてい」というのは、表示する情報をカスタマイズできて、情報の数を増減できるからです。

上の図に沿って番号順に説明します。

(1) バッファーのキャラクターセット

一番左端はバッファーのキャラクターセット(コーディングシステム)が表示されます。

よく見る表示は下のようなものです:

表示意味
UバッファーコーディングシステムがUTF-8
SShift-JIS
JISO-2022-JP(いわゆるJIS)
EEUC-jp
1ISO Latin-1
特定のキャラクターセットの処理が行われていない

上の図の例ではバッファーのコーディングシステムはUTF-8だと分かります。

キャラクターセットの右に()で囲った表示がある場合は改行コードを示しています:

表示意味
(DOS)または(\)Windows系OSの改行(CR+LF)
(Mac)または(/)Mac系OSの改行 (CR)
表示なしUnix系の改行(LF)

上の図の例ではバッファーの改行コードはDOS形式(CR+LF)だと分かります。

(2) バッファーの変更(編集)の有無

バッファーが変更されたどうかを表示しています。

よく見る表示は下のようなものです:

表示意味
表示しているバッファーとディスク上のファイルの内容が同じ(変更なし)
**表示しているバッファーが変更されている
%%読み出し専用のバッファーで、バッファーの変更なし
%*読み出し専用のバッファーで、バッファーの変更あり

(3) バッファーのファイルがローカルのマシンか、リモートのものか

左から3番目はバッファーに表示しているファイルがローカルのマシンのディスクにあるものか、それともリモートのマシンのものか、を示しています。

リモートマシンの場合は、sshなどで直接つないで編集する時などがあります。

表示意味
表示しているバッファーがローカルマシンにある
@表示しているバッファーがリモートマシンにある

(4) バッファーの名前(ファイル名)

ウインドウに表示されているバッファーの名前です。通常は編集中のファイル名と同じです。

(5) バッファーのウインドウに表示されている部分の位置

表示意味
Allウインドウにバッファー全体が表示している(バッファーが小さい場合)
Topバッファーの一部が表示されていて、バッファーの先頭が表示されている
Botバッファーの一部が表示されていて、バッファーの最後が表示されている
nn%バッファーの一部が表示されていて、ウインドウの上部にバッファーの先頭からnn%の部分が表示されている

()の中は行数と列数です。上の図では列の表示モードをonしてあります。

(6) バッファーのメジャーモード名

バッファーのメジャーモード名が表示されます。メジャーモードについては下で説明します。

マイナーモードがonに鳴っている場合はマイナーモードの名前が表示されます。

(7) 時計

これはデフォルトでは表示されませんが、この例では表示させるようにカスタマイズしています。

エコーエリア

フレームの一番下にあるのがエコーエリアです。ミニバッファーという説明もありますが、正確にはエコーエリアです。 もちろんミニバッファーにもなりますが、そのほかにもメッセージが表示されます。

エコーエリアは2つの役割があります

  1. メッセージの表示

    エラーメッセージや各種のメッセージが表示されます。

  2. ミニバッファ

    コマンドを入力したり、ダイアログボックスのような役割を果たします。

    コマンドを入れるにはM-xを押します(Altキーを押しながらxキーを押します)。

    下の図はコマンドを入れている様子です。save-buffers-kill-emacs というコマンドを入れています。

バッファー

バッファーは読み込んだファイルの内容を格納している入れ物です。編集はこのバッファー上で行われます。

Emacsの一連の編集作業は、ファイルを読み込む→バッファーにファイルの中身を格納する→編集する→バッファーの中身をファイルに書き込む、という流れで行われます。

モード

Emacsのモードはメジャーモードとマイナーモードの二つがあります。

メジャーモード

Emacsを使う大きな理由の一つは、このメジャーモードの存在でしょう。

メジャーモードは、様々な入力支援・ハイライトで、ファイルを見やすく、編集を楽にしてくれます。 主な機能は

  • キーワードのハイライト
  • 入力支援(インデント自動挿入、自動補完など)
  • 各種コマンド
    • タグの挿入(htmlタグ、LaTeXの命令)
    • 外部プログラム呼び出しコマンド

などです。

各バッファーに対してメジャーモードは一つ。(マイナーモードは複数をon出来ます。)

メジャーモードはプログラムを書くためのモード、文章を書くためのモードなどがあります:

プログラムを書くためのメジャーモードの例

  • cc-mode
  • perl-mode
  • python-mode
  • ruby-mode
  • gnuplot-mode

文章を書くためののモードの例

  • web-mode (htmlファイルを編集する)
  • org-mode (メモ書き・TODOリスト管理・プロジェクト管理のモード)
  • YaTeX-mode(LaTeXファイルを編集する)

ほかにも多くのメジャーモードがあります。

マイナーモード

バッファー編集の補助的なモードが多いです。メジャーモードと組み合わせて、複数をonできます。

例:

  • 自動で行を折り返す(auto-fill-mode)
  • 自動的にバッファーを保存する(auto-save)
  • アウトライン表示を可能にする(outline-minor-mode)

など。

パッケージ

ChromeやFirefoxのアドオンみたいなものです。Emacsの機能を拡張するためのプログラムを簡単にインストール・アンインストールできるようにしたものです。パッケージは拡張機能のプログラム一式と、インストール管理のコードをまとめた形になっています。

Emacs Lisp

Lisp というプログラミング言語の実装の一つです。(方言とも言われています)

Emacsのメジャーモード、マイナーモード、パッケージなどの拡張機能を書いたり、ユーザーがカスタマイズしたりするための言語です。

バイトコンパイル

Emacs Lispを効率よく実行するための形式にコンパイルすることをバイトコンパイルと呼んでいます。

scratch バッファー

このバッファーは普通のバッファーとは違い、特別です。

このバッファーはLisp Interactionモードになっていて、emacs lispの式をこのバッファー上で評価できます。 つまり、このバッファーはemacs lispを実行できるインタープリターになっています。

このバッファーは普通はファイルに保存されません。

emacs lispで遊ぶバッファーだと思っておけばよいでしょう。ぼくは電卓代わりに使っています。

おまけ Emacsは何の略?

「Emacs」という名前の由来は Editing MACroSやE with MACroS から来ているそうです(EはEditorの意味)。

ja.wikipedia.org/wiki/Emacs

www.codeartnow.com/hacker-art-1/macsimizing-teco

おわりに

これくらいを知っておくとEmacsについての基礎知識は充分ではないでしょうか。

Emacsの奥深い世界を探索する準備が出来ましたよ。Emacsは知れば知るほど面白いですよ!!