多言語エディタ Emacs 20
since Aug. 2 2002
 

概要

Emacs は UNIX の世界で有名なテキストエディタである。 Windows にも移植され、Meadow の名でたくさんのユーザがいる。

日本の電総研の研究者が Emacs をカスタマイズしたすばらしい多言語エディタ Mule がある。Emacs はバージョン 20 になってこの多言語機能を逆輸入して、 Mule を統合した。

最近バージョン 21 が公開されているが、ここでは安定した 20 でロシア語その他多言語を扱う方法を示す。バージョンは Emacs 20.7 / Mule 4.0 (HANANOEN) 〔花宴〕である。

多言語表示のサンプルを図に示す。これは Emacs で "C(コントロール)-h h" と入力すると閲覧できる文書である。

 

Emacs 多言語表示

 

インストール

Emacs で日本語、ロシア語を含む多言語が混在した文書を作成するなら、 Leim(多言語インプットメソッド)、 Tamago(日本語インプットメソッド)、 Mule-UCS(UNICODE パッケージ)も同時に組み込んでおく。 Tamago はかな漢字変換サーバと接続して漢字変換を行うので FreeWnn (jserver) などを事前にセットアップしておく必要がある。

本稿では説明上かな漢字変換サーバは FreeWnn を用いる前提としている(詳細は割愛する)。

多言語編集のために intlfonts が必要である。 X11 フォントの項を参照のこと。

インストールはいずれも ports になっているので簡単だ。それぞれ

    /usr/ports/editor/emacs20
    /usr/ports/editor/liem20
    /usr/ports/editor/tamago-emacs20
    /usr/ports/converters/mule-ucs-emacs20

のディレクトリ下で make install とすればよい。しかしながら Emacs 20 本体は巨大なパッケージでありダウンロードに時間を要するので、 FreeBSD の CD-ROM に含まれるバイナリパッケージを pkg_add コマンドでインストールしてもよい。

 

設定

~/.emacs に以下の内容を記述する。


  ;; ロードパスの追加
  (setq load-path
        (append '("/usr/local/share/emacs/site-lisp"
                  "/usr/local/share/emacs/20.7/site-lisp")
                load-path))

  ;; UNICODE Mule-UCS 設定
  (require 'un-define)
  (require 'un-tools)
  (require 'jisx0213)

  ;; 言語設定
  (set-language-environment "Japanese")

  ;; KOI8-R 環境のときのインプットメソッドは Yawerty
  ;; (Jcuken 配列ならば cyrillic-yawerty -> cyrillic-jcuken とする)
  (set-language-info-alist
   "Cyrillic-KOI8" `((input-method . "cyrillic-yawerty"))
   '("Cyrillic"))
	   

 

わたしの.emacs をリンクしておくので参考にしていただきたい。

 

使い方概要

ごく簡単に Emacs の利用方法を記す。

  1. 起動

    コマンドラインから以下を実行する。

    % emacs -fn fontset-standard &
    		  

    長いオペランドを入力するのが億劫な方は、以下のように .tcshrc にエイリアス指定を記述しておけば単に emacs とするだけでよい。

    alias  emacs /usr/local/bin/emacs -fn fontset-standard
    		  

     

  2. キーボード基本操作

    ロシア語テキストを扱うための基本的キー操作を以下にまとめる。メニューからマウスで選択することもできるが慣れるとキー入力のほうが早い。

    ここではあくまで生活に困らない程度の操作をあげているに過ぎず、Emacs は当然ながらその他に正規表現による編集やマクロ、elisp によるカスタマイズなど強力な機能を具備している。その仕様は膨大であり、詳細は附属の info ("C-h i")やインターネットリソースを参照されたい。

    C-x はコントロールキー押して x キーを押すことを示す。 同様に、M-xAlt キーと x キーを、 RET はリターンキーを押すことを示す。 長々しい文字列が出現するが Emacs には補完機能があり、少しタイプしてはスペースを押してコマンド補完しつつ入力すればよい。

    • ファイルの読み込み/新規ファイル
          C-x C-f ファイル名 RET

    • 編集中のファイルの書き込み
          C-x C-s

    • 編集中のファイルの書き込み(別名)
          C-x C-w ファイル名 RET

    • テキストリージョンのカット
          C-w
      リージョンとは "C-スペース" を入力したカーソル位置から現在のカーソル位置までのテキスト範囲をいう。

    • テキストリージョンのコピー
          M-w

    • カットまたはコピーしたテキストのペースト
          C-y

    • アンドゥー (やり直し)
          C-/

    • カーソルを行頭に移動
          C-a

    • カーソルを行末に移動
          C-e

    • カーソルをファイル先頭に移動
          Home キー

    • カーソルをファイル終端に移動
          End キー

    • 文字列検索
          C-s 文字列
      文字列は多言語テキストでもよい。文字列を指定しないで再度 C-s を入力すると最前に指定した文字列で検索する。 RET で終了する。

    • 文字列置換
          M-% 対象文字列 RET 置換文字列 RET
      問い合わせに対し、y かスペースで置換する。

    • 編集中のバッファ(ファイル)の切替え
          C-x b バッファ(ファイル)名 RET

    • とにかく処理を中断
          C-g
      わけのわからない状況にはまってしまったときなどに使う。

    • Emacs の終了
          C-x C-c

    • 編集中のテキストの文字コードの決定 (*1)
          M-x set-buffer-file-coding-system RET
          コーディングシステム名 RET

    • ロシア語言語環境の設定(KOI8-R)(*2)
          M-x set-language-environment RET
          cyrillic-koi8 RET

    • これから入力するファイルが KOI8-R (または ISO 8859-5) であることを指示(*3)
          M-x prefer-coding-system RET
          koi8-r(iso-8859-5-unix) RET
          C-x C-f ファイル名 RET

    • これから入力するファイルが UTF-8 であることを指示(*4)
          M-x universal-coding-system-argument RET
          utf-8-unix RET
          C-x C-f ファイル名 RET

     

      (*1) コーディングシステム名はロシア語では koi8-r、 iso-8859-5-unix など。日本語、ロシア語多言語混在では、 ctext-unix、utf-8-unix などを指定するとよい。
     
      (*2) 言語環境を設定しておくと入力ファイルの文字コードをあらかじめ Emacs に通知してきちんとロシア語で表示してくれるし、 "C-\" ですぐキリル文字入力が可能となる。
     
      (*3) language-environment がロシア語環境であれば、単純に "C-x C-f ファイル名" で文字化けせずロシア語テキストを読み込みできるが、そうでない場合は必要だ。日本語環境の Emacs では、日本語以外でエスケープシーケンスがない文字コードのテキストファイルを、正しく読み込むことができない(これは文字コードが不明の状態なので当然のことだ。エスケープシーケンスを有する多言語テキスト CTEXT は問題ない)。よってファイルを入力する前にエンコーディングを Emacs に知らせておく必要がある。 ここで koi8-riso-8859-5-unix などのオペランドにはコーディングシステム名を指定するので、ロシア語用というわけではなく、iso-8859-2-unix でチェコ語、ポーランド語テキストを読み込むことが可能である。
     
      (*4) Mule-UCS を組み込むことにより、UTF-8 (UTF-16) の多言語テキストの読み書きが可能になる。しかしながら UTF-8 (UTF-16) テキストとして読み込むためには、prefer-coding-system ではなく、こちらを指定する。

     

  3. キリル文字入力

    Xruskb ではなく、Leim (Quail) のキリルインプットメソッドを用いる。

    "C-x RET C-\" と入力すると "Select input method (default ...):" と聞いてくるので、cyrillic-yawerty もしくは cyrillic-jcuken と応答するとキリル文字入力モードになる。yawerty の場合はモード行に [--]-ЖЯ と、jcuken の場合は [--]-ЖЙ と表示される。 yawerty、jcuken の説明は Xruskb の項を参照。以降 "C-\" で英字モードとキリルモードを切替える。

    日本語入力モードに復帰したいときは再度 "C-x RET C-\" に対し japanese-egg-wnn(FreeWnn Tamago V4 の場合)と応答する。要は "C-x RET C-\" でインプットメソッドを選択し、 "C-\" でメソッドと英字入力を切替えるわけである。

    yawerty 及び jcuken のロシア語キーボード配列 (101 英語キーボード)を図1 及び図2 にそれぞれ図示する。

    その他、キリル言語入力用メソッドがいくつか用意されており、上記問い合わせに対し cyrillic- のところでスペースを入力すると補完候補として一覧が現れるので、眺めていただきたい。ウクライナ語用、マケドニア語用などがある。

    同様に cyrillic- を入力する前にスペースを叩くと全メソッドの一覧が表示されるので、どんなものが使えるか確認できる。ちなみにドイツ語、フランス語など西欧諸国語用は latin-1-postfix、ポーランド語、チェコ語など東欧諸国語用は latin-2-postfix などがある。

    日本語、キリル諸語(ロシア語、ウクライナ語、マケドニア語など)、西欧諸語(フランス語、ドイツ語、スペイン語、オランダ語など)、東欧諸語(チェコ語、ポーランド語、スロヴァキア語など)などを頻繁に切替えて文書を記述する必要があるなら、以下のような設定を .emacs にしておくことで、ファンクション・キーですぐにインプットメソッドを切替えられるようになる。

     


  ;;
  ;; Change input method
  ;; ファンクション・キーでインプットメソッドを切替
  ;; - F5: ロシア語 cyrillic-yawerty 
  ;; - F6: 日本語   japanese-egg-wnn
  ;; - F7: 西欧諸語 latin-1-postfix
  ;; - F8: 東欧諸語 latin-2-postfix
  ;;
  (defun set-cyrillic-input ()
   "cyrillic yawerty"
   (interactive)
   (set-input-method "cyrillic-yawerty")
   )

  (defun set-japanese-input ()
   "japanese egg wnn"
   (interactive)
   (set-input-method "japanese-egg-wnn")
   )

  (defun set-latin1-input ()
   "latin-1"
   (interactive)
   (set-input-method "latin-1-postfix")
   )

  (defun set-latin2-input ()
   "latin-2"
   (interactive)
   (set-input-method "latin-2-postfix")
   )

  (global-set-key [f5] 'set-cyrillic-input)
  (global-set-key [f6] 'set-japanese-input)
  (global-set-key [f7] 'set-latin1-input)
  (global-set-key [f8] 'set-latin2-input)
	   

 

yawerty キー配列
図1 Cyrillic-yawerty キー配列(101 英語キーボード)

 

jcuken キー配列
図2 Cyrillic-jcuken キー配列(101 英語キーボード)

 

[2004.12.19 付記] FreeBSD 5.3-RELEASE の Emacs 20 の ports でインストールすると、Anthy 日本語インプットメソッドが組み込まれる。Anthy が導入されると Leim Quail インプットメソッドの起動に失敗する.この原因は私にはわからない.上記多言語入力をしたい場合は,以下のとおり Anthy の Lisp ディレクトリを Emacs のロードパスから外す必要がある.

    # cd /usr/local/share/emacs/20.7/site-lisp
    # mv anthy /nonloadpath