Emacs25 on Ubuntu18 on Hyper-V on Windows 10 (MEMO-4 Emacs25のインストールと環境設定)

Emacs25のインストールと環境設定

Emacsのインストール自体は簡単ですがデフォルトだと日本語環境がちょっとおかしいのと、autoinstall.elの設定がちょっと古いので、それを直す必要がありました。Versionは25.2をインストールします。

Emacs25のインストール

下記のコマンドでインストールできます。

sudo apt install emacs25

設定ファイルは基本的にはこれまで使っていたものを引っ越してくれば良いのですが、元環境がWindows版の場合はパスを直接書いているところがあればその部分は修正する必要があります。古いバージョンに合わせた設定ファイルだといろいろobsoleteなところがあるかもしれません。私の場合はauto-installの一部のリポジトリのパスが変わっていて、まずauto-install.elに手を入れる必要がありました。

auto-install.elの修正

最近はhttpプロトコルでは接続できず、httpsプロトコルが必須になっているサイトがぼちぼちあります。auto-installのリポジトリの一つ、http://www.emacswiki .org/ サイトもその一つで 、今は https:/www.emacswiki.org/ になっています。httpのサイトからhttpsのサイトへリダイレクトされていれば問題ない筈ですが、残念ながらそうなってはいません。簡単な修正なので、自前でやってしまいます。Ctrl-h f で auto-install-from-emacswiki のヘルプを出して、そこに出ているauto-install.el をクリックすればauto-installのソースが開きますから、http://www.emacswiki を全部 https:/www.emacs.wiki に置換、書き込み、バイトコンパイルすれば終わりです。(他にも使っているリポジトリがhttpsになっていたら、同様に修正すればよいです)

日本語フォントの変更(修正)

どうもデフォルトのフォントがおかしいのです。句読点が行の真ん中に浮いています。中国語のフォントが設定されているとこうなるらしいですが、漢字自体は簡体字もしくは繁体字どちらにも見えないので何かが間違っているような気がします。Emacsは自前のフォントシステムを持っているのが仇となっているみたいですが、とりあえず、正しいフォントに変更すればよい筈です。変更は簡単です。

フォントの変更はもちろんEmacsの設定ファイルでやればいいのですが、こういうのは画面で見ながら選べた方が楽でしょう。Emacsのメニューバーにある「Option」→「Set Default Font…」を使うのがお勧めです。(M-x menu-set-font でも同じダイアログが開きます)

検索窓に cjk jp と入力すれば日本語フォントが絞り込めます。下の方にサンプルが出ますので、適当に選んで、サイズも適当に選んで「選択」すれば、現在のセッションのデフォルトフォントが直ちに変更されます。句読点の位置がおかしくないものの中から気に入ったフォントが見つかったら、「Options」→「Save Options」しておきましょう。これで初期設定ファイルにCustomize情報として保存されます。

一点気になったことですが、フォントのサイズは画面で指定したポイント数通りになるとは限らないようです。設定ファイルの方に出力された内容を見るとフォントサイズはポイント数ではない単位で、かつ近い値に丸められているようなので、これはそのせいでしょう。おおらかに行きましょう。

Coding-Systemの指定

フォントさえ間違いなく指定すれば特に設定しなくても画面には日本語は表示されますし、漢字を含むテキストファイルを読み込めば問題なく日本語は表示されますが、例えばDiredとかの表示では漢字のところが化けることがあります。これは、何故か、process-coding-systemが正しくutf-8-unixに設定されていないせいです(eucになってるようですね)。

これに関しては基本的には初期設定ファイルに
(prefer-coding-system ‘utf-8-unix)
と書いておけばよいはずなのですが、これも何故か、うまく効かない時があります。

例えば、私のところでは相変わらず Dired バッファは最初EUCの表示になってしまい、shellでLANG環境変数が ja_JP.UTF-8 になっているlsコマンドの出力では日付すら文字化けします。dired-mode-hookにprefer-coding-systemを入れても効きません。よくわからないので最初にDiredを実行した時に人手で  M-x prefer-coding-system して、gコマンドで再表示させています(s コマンドでも効きます)。これで以後は別のフォルダをDiredしても最初から日付や日本語ファイル名が正しく表示されるようになります。不思議ですねえ。

IME(MOZC)の起動キー

Emacsでは二種類のIMEが使えます。一つはターミナル等と同じIBusベースのもの、もう一つはEmacsに組み込まれている input-methodです。IBusベースのものは「半角/全角」キーで起動・終了トグル、Emacsのinput-methodは Ctrl-\ (\C-\\)で起動・終了します。

私のところでは IBusも mozc、input-methodでも japanese-mozc を使うように指定していて実際に動作するのはどちらも同じmozcのようなのですが、実際に使ってみるとIBusベースのものは入力中の文字の編集画面へのエコーが無いとかあって微妙に使い勝手が悪いです。なので Ctrl-\ で起動するEmacs組み込みの方を普段使いにしたいと思います。となれば、やはり「半角/全角」キーでもってIMEのOn/Offをしたくなります。

このEmacsのキーバインドの変更自体は簡単で、

(global-unset-key [zenkaku-hankaku])
(global-set-key [zenkaku-hankaku] ‘toggle-input-method)

としてやれば「半角/全角」キーでinput-methodの方が起動するようになる筈 … なのですが、残念ながらこれだけではダメでした。IBus側が「半角/全角」キーを握っていて、[zenkaku-hankaku]キーを押してもそもそもEmacsまで伝わってきません。これの横取りを回避するにはX-Window Systemの設定を変更する必要があります。

具体的には、~/.Xresources ファイルを編集して、

Emacs.useXIM=false

という行を追加してやる必要があります。これで Emacsに対してはXのInput Methodは使われなくなって、めでたくEmacs側で「半角/全角」キーを使うことができるようになります。

さて、これで終わりかと思ったのですが、思わぬ伏兵が隠れて居ました。

キーバインドの変更とは関係ない話なのですけれども、X-Window Systemの「半角/全角」キーに対する挙動が変というか、このキーは、何故か、押し続けてなくてもオートリピートが掛かるんですね。キーアサインを変更する前、IBusで使っている時も、押しても切り替わらなかったりすることがあって、動作不安定だなと思っていた原因がこれでした。ずいぶん前からある問題のようですが、簡単に対策できるからか、直してくれてないみたいです。

これを止めるにはターミナルから xset コマンドを使って、49番のキーのオートリピート設定を外します。

xset -r 49

とは言えこんなのを毎回打つのは流石に勘弁してほしいです。なので、X-Window Systemの初期設定ファイルに書いておくことにします。

/etc/X11/Xsessions.d/81key_autorepeat

というテキストファイルを作って、その中に一行「xset -r 49」と書いておきます。(ファイル名は81というのがフォルダ内のファイル相対的な実行順を示しており、その後ろはコメントのようなものです。ファイル名には英数字に加えてハイフンと下線を使えます。他の文字、例えばピリオドが使われているとそのファイルは無視されます)

ここまでやれば、あとは普通に快適にカナ漢字変換が使えるようになります。ふう。

カナ入力の音引き(ー)の問題

ローマ字変換だと気にならないと思いますが当方カナ入力なもので、EmacsのVersion upではいつも何かしら躓きます。

Windows版のNTEmacsにもVersion23辺りからちょっと困った不具合があって、カナ入力モードになっているとAltキーとの組み合わせが「Alt-チ」みたいになっちゃうのでいちいちIMEを切らないとコマンド入力できなかったりします。タダで使わせて頂いている身なので文句は言いませんが不便には違いありません。幸い、Ubuntu環境のEmacs25にはその不具合はなく、日本語入力モードのままでもAltキーを使うコマンドは普通に使えます。よかった、よかった。

でも、一点、これは何とかならないかな、という厄介な問題がありました。Backspaceの左のキーを使って音引き(ー)を入力するときに、Shiftしないと「ろ」になってしまうのです。

この現象はターミナルやvim等の他のアプリでは起きません。Emacsだけこうなります。ここでもEmacsが独自のカナ変換を持っていることが裏目に出ているみたいです。

直し方ですが、下記のようにmozcの106jpキーボード向けのキーマップでキーコード92番の文字を変更して “ー” (unicode 30fc) にすることで、音引き文字をシフトキー無しで入力できるようにできます、一応。

(mozc-keymap-remove-entry moac-keymap-kana-106jp 92)
(mozc-keymap-put-entry mozc-keymap-kana-106jp 92 “\u30fc”)

できるのですけれども、このやり方には残念ながら副作用があります。同じキーコード92番の右シフトキーの隣の「ろ」も同時に「-」になってしまうのです。なので、今度は「ろ」を入力したい時にシフトキーを押す必要が出てきてしまいました。こうなると後は好みの問題です。どちらのキーをシフト無しで押したいか、選択するしかありません。私は相対的によく使う音引きの方をシフト無しで入力するようにしています。

Alt+SPCが使えない

デフォルトで just-one-space コマンドにアサインされているAlt+SPCキー入力(\M-SPC)は Gnomeがウィンドウ操作用のショートカットキーとして握っているので、Emacsには渡ってきません。代わりに Shift+Alt+SPCキーの組み合わせで、Alt+SPCキーのコードが送られてくるようです(設定ファイルでは何もしていないので、Gnomeがやっているのか、Emacs自体に組み込まれているかだと思います)。何気に不自由ですが、Shft+Alt+SPCはこの問題に対するWorkaroundの事実上の標準みたいなんで、このキーアサインに慣れた方がいいと思います。

(Fin)

コメントを残す