今回は Windows 環境で Emacs を使っている人向けの記事です。
exec-path の設定を追加しました!
Windows で Linuxコマンド を使える! msys2!
Windows で Emacs といえば、 Cygwin がセットになっている Emacs gnupack というものがあります。これは最初から Cygwin が使えるように設定されているので、Linux を使える人には便利です。
ただ、Cygwin は POSIX 互換を目指しているため機能盛りだくさんで、「Cygwin はちょっと重い、でかすぎる・・・」という方もいるかと思います。そういう場合は msys2 を使うのが良いでしょう。MSYS2 は、プログラム開発に必要なだけの機能を取り入れた、いわば Cygwin のコンパクト版です。と言っても、普通にWindows 上で使う分には充分な機能を持っています。
msys2 のコマンドを使うための Emacs 初期化ファイル設定
Windows で msys2 を使っている人は、Emacs をインストールするときは gnupack でなく 単体の Windows 向け Emacs(通称 NTEmacs) をインストールしているかと思います。その場合、gnupack と違い、MSYS2 と Emacs は連動していません。ですので、Emacsから grepやfindなどの POSIX コマンドを使いたい時はEmacs に MSYS2 コマンドのありかを伝えなければいけません。
と言っても、設定自体は簡単です。初期化ファイル(.emacs や .emacs.d/init.el)に、下記の設定を追加するだけです。下記の例は C:\Programs\ の下に MSYS2 をインストールした場合です。このパスは、ご自身のインストールパスに合わせて変更してください。
;; MSYS2 のコマンドを使えるようにする.
(setenv "PATH"
(concat
;; 下記の行に MSYS2 のコマンドの実行可能ファイルがある場所を設定してください. スラッシュが2つ連続することに注意!
;; 区切り文字はセミコロン
"C:\\Programs\\msys64\\usr\\bin;"
(getenv "PATH")))
;; 区切り文字はなし
(setq exec-path (append exec-path '("C:\\Programs\\msys64\\usr\\bin")))
やっていることは2つです。
1つ目は単に環境変数 PATH に MSYS2 のコマンドパスを追加しているだけです。これで Emacs からシェルを動かしたりする場合に MSYS2 のコマンドが使えるようになります。
2つ目は、exec-path 変数にMSYS2 のコマンドパスを追加しています。これはEmacs自体が外部コマンドを使うときに参照されます。
これで、Windows & msys2 でも M-x grep-find などが動くようになります。普通に使うぶんにはかなりLinuxライクな環境になりますよ!
ちなみに、上記の2つの変数についてさらに詳しく知りたい方は、下記の Emacs wik ページを参照してみてください。
Emacs wiki – ExecPath
まとめ
今回はWindows で msys2 を使う時のパス設定方法について説明しました。これで Windows上でもLinuxっぽくEmacsを扱えるようになります!
ぜひご活用ください!
コメント
こんにちは。
阿部と申します。
いつもためになる情報を参考にさせていただいています。
昨日、本ページを参考にPATH設定をおこなったところ、Emacs起動時にエラーとなりました。
重箱の隅をつつく細かい指摘ですが、exec-pathの閉じ括弧が1つたりないように思います。
オリジナル)
(setq exec-path (append exec-path ‘(“C:\\Programs\\msys64\\usr\\bin”))
修正)
(setq exec-path (append exec-path ‘(“C:\\Programs\\msys64\\usr\\bin”)))
以上、よろしくお願い致します。
阿部さま
ながやすです。ブログご覧いただきありがとうございます。
申し訳ありません!ご指摘の通り閉じかっこが足りませんね。。。
すぐに修正いたします。ご指摘まことにありがとうございます、助かります。
返信が遅れすみません。
今後ともよろしくお願いいたします!