仮想環境でEmacsを使っているけどWindowsでも使いたくなったときに見るブログ

EmacsはエディターですがWindowsでもEmacsを使いたくなってきたのでどうすればよいのかいろいろ調べてみました。

windows emacs

Emacsをダウンロードする

「Emacs Windows」と検索するとトップページに出てきたリンクから、zipファイルをダウンロードしました。
NTEmacs / Emacs for Windows

よくわかりませんでしたが最新版を選択しました。
emacs ダウンロード

ダウンロードのファイルは.zipファイルになっているのでこちらをその場に展開します。

emacs-26.1-simple_ime-no_symbol.zip

ダウンロードしてひととおり中身をみると.exeファイルがありすぎてどれを起動すればよくわからなかったので、powershellを使って検索してみました。

解凍したファイルの中身

powershellでlsコマンドを使って.exeファイルをあぶりだします。

PS C:\users\username\desktop\emacs-26.1-simple_ime-no_symbol> ls -recurse *.exe

結果は以下のようにたくさんでてきました。

ディレクトリ: C:\users\username\desktop\emacs-26.1-simple_ime-no_symbol\emacs\bin

Mode LastWriteTime Length Name
—- ————- —— —-
-a—- 2018/11/16 9:14 46080 addpm.exe
-a—- 2018/11/16 9:14 179712 ctags.exe
-a—- 2018/11/16 9:14 81408 ebrowse.exe
-a—- 2018/11/16 9:14 18695680 emacs-26.1.exe
-a—- 2018/11/16 9:14 18695680 emacs.exe
-a—- 2018/11/16 9:14 67584 emacsclient.exe
-a—- 2018/11/16 9:14 436224 emacsclientw.exe
-a—- 2018/11/16 9:14 177664 etags.exe
-a—- 2018/11/16 9:14 392704 runemacs.exe

とりあえずはemacs-26.1.exeを起動するとよいみたいですね。

emacsを起動してから設定まで

WindowsでEmacs。はじめての起動

emacs.26.1.exeを起動してみます。するとへんな黒いshellが一緒にたちあがってきます(ウインドウが2つ開いてしまう。)この問題はなおしたいところですね。

起動するのはemacs-26.1.exeではない

前置きが長くなりそうなので、結論からいいます。、WindowsでEmacsソフトをダウンロードし解凍したらどうするかは2つに分かれます。

  1. \emacs-26.1-simple_ime-no_symbol\emacs\bin\runemacs.exeのショートカットを作成してそこから起動する。
  2. C:\Users\username\Desktop\emacs-26.1-simple_ime-no_symbol\emacs\bin\addpm.exeを実行する

runmacs.exeを起動すると黒い画面はあらわれません。

この2つの方法どちらでもよいですが、runemacs.exeのショートカット作成だけしても起動することしかできません。現実適にはaddpm.exeを実行するのがよいでしょうaddpm.exeを実行するとWindowsのスタートメニューに自動で登録したり、.emacs.dフォルダが作成されたりします。

addpm.exeを実行した結果、スタートメニューにEmacsが表示されるようになります。addpm.exeを実行した結果作成されるのファイルについてですがC:\Users\username\AppData\Roamingで「emacs」と入力すれば確認することができるでしょう
emacs addpm.exe実行結果

Windows版emacsを使用してみる

ちょっと使ってみましたが、いつものC-xキーなどショートカットキーが動作します。ですが、windows版emacsでもキーバインドを自分好みに変えたりテーマの変更をしてみたいところです。フォルダの状況をみるに設定を記述する初期化ファイルはみあたらないようなので自分で作ります。

初期化ファイルの作成

初期化ファイルはemacsにとって重要な役割をはたします。構文を記述することでキーバインドを設定したり関数を定義したり、外観を変えたりすることができます。windowsのemacsの場合は.emacs.dというフォルダに init.el というファイルを作成します。

.emacs.dフォルダはさきほどのaddpm.exeを実行することで作成されているはずです。.emacs.dのフォルダは以下にありました。

C:\Users\username\AppData\Roaming\.emacs.d

実際に.emacs.dフォルダにinit.elファイルを作ってみました
emacs initelファイル

この init.el にいろいろ構文を書いていけばいいですね。

init.elへ設定を書き込む

まずはじめにemacs起動時のスタートアップ画面がいらないというのがあります。これを消しましょう。↓こうなっているので
emacs初期画面

(setq inhibit-startup-message t) #スタートアップ画面を表示しない

これでスタートアップ画面が表示されなくなりました↓。でもまだ変なメッセージが表示されていますね。これも消しましょう
emacs 画面

(setq initial-scratch-message "") #バッファにメッセージを表示させない

emacsを再起動してみてください。メッセージが表示されなくなりました。
emacsメッセージ 非表示

これでだいぶ使いやすくなったのではないでしょうか。ですが最終的にはlinuxライクに使いたい人もいるかもしれません。少々設定はめんどうですが挑戦してみましょう↓につづきます。

PowerShellで emacs とコマンドをうって起動させる

windowsでもlinuxのようにemacsとうつだけで起動できたら大変便利です。色々やり方はあるかもしれませんが、今回はpowershellにコマンドを登録する方法を紹介します。

やることはいくつかありますが、まとめると次のようになります。

  • powershell起動時に自動で読みこむファイルを作成する
  • powershellのモジュールを記述したファイルを作成しておく
  • powershellの実行権限を変更しておく

やることは多いですが、しっかりみていきましょう。

まずスクリプト自動読み込みのファイルを作成しましょう。powershellで以下のコマンドを実行します。するとC:\Users\username\Documents\WindowsPowerShellというフォルダが自動で作成され、Microsoft.PowerShell_profile.ps1というファイルが出来上がります。

New-item –type file –force $profile

次に出来上がったらファイルを編集します。以下で自動でメモ帳がたちあがります。

notepad $profile

このファイルにモジュールを読みこむための構文を書きます。この時点でまだモジュールファイルは作成していません。

import-module "C:\Users\username\Documents\WindowsPowerShell\emacs.psm1"

次にモジュールファイルを作成します。モジュールはpowershellの関数の形で書き、ファイルの拡張子は.psm1にします。モジュールを読みこむとによってpowershellのコマンドとして利用できるようになります。

#この関数を書いて.psm1形式で保存する。保存場所はimport-moduleで読み込ませる場所にする
function emacs{start-process "C:\program files\emacs-26.1-simple_ime-no_symbol\emacs\bin\runemacs.exe"} 

最後にpowershellのスクリプト自動読み込みで実行ポリシーが高いとちゃんと読みこまないのでpowershellの実行ポリシーを変更します。つぎのコマンドを実行します。

Set-ExecutionPolicy RemoteSigned

これで powershell で emacs とうつとemacsが立ち上がるようになります。大変ですが挑戦してみてください。

要約しておきます。

moduleファイル関数の形で記述し拡張子を.psm1で作成する。
moduleの自動読み込みスクリプトをコマンドで作成する。
powershellの実行権限を変更しておく

まとめ

ぶっちゃけると Emacs はなくてもよいです。

ですがAtomとかは起動が重たかったりするのでちょっと不満があったりします。極論メモ帳でもいいのですが、Emacsはマウスがいらないのがよいです。といってもEmacsは肉体や精神を無駄に消耗するので、なんだかなと思ったりもします。

powershellでemacsとうって起動するやり方はlinuxライクな起動方法です。ちょっと小難しいので、もしかしたら環境変数を使ったりする他のやり方があるかもしれません。なんにしてもEmacsがWindowsで使えるのはうれしいです