WSL上のUbuntu18.04でのEmacs

はじめに_

テキストエディタ(エディタ)_

以上、いくつかの定義を紹介したがこれからわかる通り、エディタとワードプロセッサは違うものである。

エディタとはテキスト(普通の文字)を入力するためのソフトであり、乱暴な言い方をするとワードプロセッサから文書整形・修飾機能(太文字、斜体、拡大・縮小等)を取り去ったものともいえる。ワードプロセッサに比べて軽快に動き、かつ作成したファイルの互換性が高いため、ある程度長い文章でもエディタを愛用する人が多い。

たとえば、Windowsの代表的なエディタはメモ帳であり、ワードプロセッサはMicrosoft Wordである。

Emacs_

EmacsはUNIX/Linux上での代表的なエディタの一つである。

Emacs はUNIX上で有名かつ人気のあるエディタである。 Emacsは高度にカスタマイズ可能であり、Emacs Lispという言語で環境を記述すれば、メールやニュースのリーダーとして使用可能なのは勿論、ブラウザとしても使用可能である。タイピングソフトやプログラム作成時にデバッグする環境も構築できる。

Windows Subsystem for LinuxでLinux環境を整えた場合_

VcxSrv(XLaunch)の起動_

gnome-terminalを利用するので、まず、VcxSrv(XLaunch)を起動する。

デスクトップにあるアイコン「XLaunch」をクリックする。すると以下のウィンドウが開く。「Multiple windows」を選択し、「次へ」をクリックする。

「Start no client」を選択し、「次へ」をクリックする。

「次へ」をクリックする。

「完了」をクリックする。

デスクトップ右下のアイコンにXLaunchがあればちゃんと起動している。

gnome-terminalの起動_

gnome-terminalの利用で設定したgnome-terminalを起動する。

Ubuntuターミナルを起動し、ターミナル上で以下を起動する。

% gterm &

Emacsのインストール_

% sudo apt install emacs
% sudo apt install ibus-mozc emacs-mozc

事前に X Windowの起動(Windows側からLinuxソフトウェアを別画面表示する)の設定を終えた上で、emacsを起動する。

% emacs &

(追記:5/28 16:50) emacsがX Windowで起動できない場合は以下のコマンドでemacsがインストールできているか確認する。以下のコマンドの場合、emacsがターミナル内で起動する。終了する場合は(C-x C-c、Controolキーを押しながらx、Controlキーを押しながらcを押す)。ターミナル上でemacsを使う場合は別ウィンドウで立ち上げたときと異なりメニューが使えない。キーバインド(ショートカットキー)を用いてemacsを操作する必要がある(Emacsのキーバインド覚書

% emacs -nw

以下のようなウィンドウが立ち上がる(背景と文字の色は以下の例と異なる場合もある)。真ん中の広い入力スペースを「バッファ」、一番下の小さな入力スペースを「ミニバッファ」という。

emacsは設定ファイルによってさまざまにカスタマイズ可能なエディタである。emacsの設定ファイルはホームディレクトリ下の.emacs.d/init.el としておくこととなっている。emacsを起動したとき、ホームディレクトリに.emacs.dというディレクトリが作成される。ターミナルで確認してみる。ここに設定ファイルを設置する。

% ls -ld ~/.emacs.d
drwx------ 1 gotoh gotoh 512  6月 26 21:56 /home/gotoh/.emacs.d

基本設定_

設定ファイルの設置_

以下に述べる設定ファイルは GitHub:yuichigoto yg-emacs-initsからダウンロードできる。設置方法は以下の通り。

% cd ~/.emacs.d
% git clone https://github.com/yuichigoto/yg-emacs-inits.git
% mkdir inits

ディレクトリを確認する。

% ls
inits  yg-emacs-inits

init-loader.elの設置_

init-loader.elという仕組みを使って、設定ファイルを分割して管理する。

続いて、GitHub:init-loaderより、init-loader.elを取得する。

% cd ~/.emacs.d/
% git clone https://github.com/emacs-jp/init-loader.git
% ls 
init-loader    inits          yg-emacs-inits

主たる設定ファイルは ~/.emacs.d/init.elである。init.elを設置する。

% cp yg-emacs-inits/init.el .

~/.emacs.d/init.elをemacsで開く。なお、X Windowの起動(Windows側からLinuxソフトウェアを別画面表示する)の設定を行っている必要がある。emacsを起動していない場合は以下のコマンドで起動する。

% emacs &

~/.emacs.d/init.elのファイルを開く。開き方は二つ。一つ目はメニューバーの「File」→「Open File」から .emacs.d ディレクトリの下にある init.elを選択する。

もし、上の方法で .emacs.d ディレクトリが表示されない場合は、マウスのカーソルをemacsのウィンドウ上に合わせて、Ctrlキーを押しながらxキーを押す(以後、Ctrlキーを押しながら何かのキーを押すのを 「C-何かのキー」と表記)、続いて C-f を押す。すると、emacsのミニバッファが以下の図のように「Find file: ~/ 」と入力待ちになる。そこで、「~/.emacs.d/init.el」となるように文字を打ち込み、Enterキーを押す。

emacs上でM-x eval-buffer を実行する。emacsのウィンドウ上に合わせて、Altキーを押しながらxキーを押す(以後、Altキーを押しながら何かのキーを押すのを 「M-何かのキー」と表記)。すると、emacsのミニバッファが以下の図のように「M-x 」と入力待ちになる。そこで、「eval-buffer」となるように文字を打ち込み、Enterキーを押す。これで、設定ファイル群を読み込まれる。

emacsの起動時のウィンドウサイズを設定(追記:2020年6月2日)_

Qiita: @melito Emacs フレーム(Frame) のサイズ設定関連の整理を参考に設定する。

~/.emacs.d/inits/12-frame.elを用意する。

% cp yg-emacs-inits/12-frame.el inits/

~/.emacs.d/init.elをemacsで開く。emacs上でM-x eval-buffer を実行し、設定ファイル群を読み込む。適当なファイルで漢字変換を行ってみる。一度、emacsを終了し、起動しなおしてみる。

% emacs &

設定が反映されていると起動時にそれなりのウィンドウサイズでemacsが起動する。

日本語関連設定 10-mozc.el の設置_

~/.emacs.d/inits/10-mozc.el を用意する。

% cp yg-emacs-inits/10-mozc.el inits/

~/.emacs.d/init.elをemacsで開く。emacs上でM-x eval-buffer を実行し、設定ファイル群を読み込む。適当なファイルで漢字変換を行ってみる。適当なファイルとして ~/tmp.txt を作成する。

% touch ~/tmp.txt

次にemacs上で ~/tmp.txt を開く。C-\ (Ctrlキーを押しながら、バックスラッシュキー)を押す。すると以下のように日本語入力ができるようになる。「あした」と入力すると以下のように変換候補がでる。スペースキーを押すと変換できる。もう一度 C-\ を押すと通常入力モードになる。

次に変換時の挙動をカスタマイズする。ターミナルで以下のコマンドをうち、mozcの設定ウィンドウを起動する。

% /usr/lib/mozc/mozc_tool -mode=config_dialog

「キー選択の設定」項目で挙動を変更できる。特にこだわりがなければ「ことえり」にして、「OK」を押す。これで日本語変換は終了。

基本設定 01-default.el_

~/.emacs.d/inits/01-default.elを置く。

% cp yg-emacs-inits/01-default.el inits/

~/.emacs.d/init.elをemacs開き、M-x eval-buffer を実行し、設定ファイル群を読み込む。本設定が反映されると、emacsの背景が黒に、文字が白になる。

30-whitespace.elを設置する。_

タブや全角スペースを表示する設定を~/.emacs.d/inits/30-whitespace.elとして置く。プログラムを書くようになると、プログラム中に全角スペースが含まれることでエラーになることがある。

% cp yg-emacs-inits/30-whitespace.el inits/30-whitespace.el

設置したら、~/.emacs.d/init.elをemacsで開き、M-x eval-bufferというようにemacs上でコマンドを打ち、設定を反映させる。

どのようになるのか試してみる。

  • サンプルファイルをダウンロードしてみる。
    % cd
    % wget http://www.aise.ics.saitama-u.ac.jp/~gotoh/Download/Samples/Example.whitespace.txt
    
    % ls Example.whitespace.txt (ダウンロードできていることを確かめる)
    
  • emacsでExample.whitespace.txtを開く(emacs上で C-x C-f ~/Example.whitespace.txtを開く)
  • 下の画像のようにタブや全角スペースが色付き表示される。

発展設定(難易度高)_

2020年4月現在のUbuntu 18.04ではinit-loaderを利用したパッケージダウンロード時にいくつか追加設定が必要となっている。インクリメンタルサーチ(Ctrl-s)で日本語検索ができなくてもよければ、以下の設定はしなくてもかまわない。

パッケージダウンロード(20-package.el)_

init-loader.el用の設定ファイルは~/.emacs.d/inits/20-packages.el となっている。(追記 5/28 17:30)用意した設定に不備があるので以下の追記コマンドを実行すること。

(追記 5/28 17:30 設定ファイルの中身を更新する処理)
% cd yg-emacs-inits
% git pull
% cd ..
(追記 ここまで)
% cp yg-emacs-inits/20-packages.el inits/

~/.emacs.d/init.elをemacsで開く。なお、X Windowの起動(Windows側からLinuxソフトウェアを別画面表示する)の設定を行っている必要がある。emacsを起動していない場合は以下のコマンドで起動する。

% emacs &

2020年4月現在、Ubuntu 18.04 LTSのemacsバージョンは25.2.2であり、次の作業のパッケージインストールでエラーメッセージがでる。Emacs 26では問題がないとのこと。問題と解決法は以下のページ参照。

(追記 5/28 17:30)emacsのバージョンを確認する。ターミナルで以下のコマンドを実行する。

% emacs --version
GNU Emacs 25.2.2
Copyright (C) 2017 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GNU Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

emacsのバージョンが25.2.2の場合は以下のコマンドを実行する。Windows側で警告ウィンドウがでるが「許可」をクリックし実行する。ターミナルでもエラーメッセージがでるが気にしない。

% gpg --homedir ~/.emacs.d/elpa/gnupg --receive-keys 066DAFCB81E42C40
gpg: 鍵066DAFCB81E42C40: 公開鍵"GNU ELPA Signing Agent (2019) <elpasign@elpa.gnu.org>"をインポートしました
gpg: 究極的に信用する鍵が見つかりません
gpg: 処理数の合計: 1
gpg:               インポート: 1

最後にM-x package-list-packages を実行する。M-xを押し、ミニバッファに「package-list-packages」を入力する。なお、Tabキーによる補完機能があるので適宜利用すると便利(「pac」まで入力し、Tabキーを押すと「package」と補完してくれる)パッケージリストが以下のように表示されれば、init-loader.el と pakeages.elの設定の成功。

パッケージリストはアルファベットの「q」キーを押すと終了する。

このように init-loader.elは、~/.emacs.d/inits/ 以下においてある設定ファイルを番号順に読み込む。なので、新しく設定を付け加える場合は「XX-識別名.el」という名前のファイルを設置していく。

オプション:aspellのインストール_

英単語のスペルチェッカーのaspellを使用できるようにする。

% sudo apt install aspell

~/.emacs.d/inits/31-aspell.el を設置する。

% cp yg-emacs-inits/31-aspell.el inits/

設置したら、~/.emacs.d/init.elをemacsで開き、M-x eval-bufferを実施する。

また、このままだとemacsから使用するときに「Error: No word lists can be found for the language "ja_JP"」というエラーメッセージが出てしまうので、ホームディレクトリに.aspell.confというファイルを用意する。

% touch ~/.aspell.conf

emacsで ~/.aspell.confを開き、中身を以下のようにする(Diary? 日記のような日記でない日記:aspell.confに従った)。

lang en_US

ためしにemacsで、新しいファイルをつくり、スペルチェックしてみる。

  • emacs上でC-x C-f (Controlキーを押しながらxキーを押す、その後Controlキーを押しながらfキーを押す)で~/new.txtを作成
  • 「I wish I were a birb.」と打つ
  • M-x ispell とコマンドを実行
  • 「birb」に対して変換候補がでたならばaspellはちゃんと動いている。
  • C-x C-sで保存する。

オプション:日本語インクリメンタル検索 cmigemoのインストール&設定_

emacs上で文字列検索する際にはC-sというコマンドで検索するが、通常だとアルファベットはアルファベット、ひらがな+漢字はひらがな+漢字でしか検索できない。しかし、migemoというスクリプトをインストールすると、ひらがな+漢字をアルファベット(ローマ字)で検索できるようになり、とても便利。

migemoのインストール

% sudo apt install cmigemo

migemoパッケージをインストールする。emacs上で M-x package-list-pakcages 表示されたパッケージ一覧の中からC-sでmigemoパッケージを探す。migemoパッケージが見つかったらそのリンクの上でEnterキーを押す。

emacsが2画面表示になり、下画面に「Install」というリンクができるので、カーソルをそこに合わせてEnterキーを押す。するとパッケージがインストールされる。

~/.emacs.d/inits/32-migemo.el を設置する。

% cp yg-emacs-inits/32-migemo.el inits/32-migemo.el

設置したら、~/.emacs.d/init.elをemacsで開き、M-x eval-bufferというようにemacs上でコマンドを打ち、設定を反映させる。

検索できるかどうか試してみる。

  • サンプルファイルをダウンロードしてみる。
    % cd
    % wget http://www.aise.ics.saitama-u.ac.jp/~gotoh/Download/Samples/Example.utf8.txt
    
    % ls Example.utf8.txt (ダウンロードできていることを確かめる)
    
  • emacsでExample.utf8.txtを開く(emacs上で C-x C-f ~/Example.utf8.txtを開く)
  • 検索してみる。C-s pasokon
  • 下の画像のように「パソコン」が検索候補としてヒットする。C-sを押すたびに次候補へ進む
  • 検索終了する場合はEnterキーを押す

オプション:フォントの設定 11-font.el_

フォントも自由に設定できる。せっかくWindows上でemacsを使うのでWindowsのフォントを使用してみる(参考:Windows Subsystem for Linux + X Windowを1.024倍くらい使いこなすための方法)。

まず、WindowsのフォントをUbuntuから使えるようにする。

% sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/windows
% sudo fc-cache -fv

使用できるフォントは以下のコマンドで調べられる。

% fc-list

絞り込む場合はgrepコマンドを使う。

% fc-list | grep MS (MSゴシックなどのみを抜き出す)
% fc-list | grep Yu (游ゴシックなどのみを抜き出す)
% fc-list | grep Meiryo (メイリオ、メイリオUIなどのみを抜き出す)

メイリオフォントを使ってみる。~/.emacs.d/inits/11-font.el を設置する。

% cp yg-emacs-inits/11-font.el inits/

emacsを一旦終了し、再起動する。

GUIからフォントを変更する方法もある。

戻る_