【お知らせ】


● 本サイトは NTEmacs の情報サイトなのですが、私が WSL版 Emacs に乗り換えたため、そちらに関連する情報が多くなってきています。WSL版 Emacs も Windows 上で動作する Emacs ですので、本サイトの目的とは合致していると思っています。
● WSL版 Emacs に行き着くまで、Linux版 Emacs、MinGW版 Emacs、Cygwin版 Emacs といろいろ使ってきましたが、今のところ Windows で Emacs を使うには WSL Emacs on VcXsrv がベストな選択だと思っています。WSL コマンド(https://github.com/smzht/wsl-utils)や Windows コマンド(https://github.com/smzht/win-utils)の作成、Google日本語入力 と連携可能な mozc_emacs_helper.exe のビルドの成功(https://github.com/smzht/mozc_emacs_helper)、さらには以降で紹介している Emacs の設定の整備により、WSL 上で Emacs を使う場合の不便な点は概ね解消されていると思います。

■ Windows 10 2004 がリリースされましたので、WSL から WSL2 に移行しました。多少の調整は必要でしたが、WSL の環境をほぼそのまま WSL2 で実現できました。調整が必要だった箇所は、「WSL で Emacs を使うための設定 」の 【お知らせ】 に記載しています。

■ X Window Server は VcXsrv から GWSL に乗り換えました。GWSL も 内部で VcXsrv を利用しており、VcXsrv と同等に利用可能です。Microsoft 謹製の WSLg も Windows 11 では利用可能となっていますが、Windows の操作方法が独自になるなどの理由から、GWSL の方を利用しています。

【トピック】


★ NTEmacs の設定とは関係ありませんが、Windows の操作を Emacs のキーバインドで行うための設定 を公開しています。OS まるごと Emacsキーバインドで操作することができ快適です。お試しください!

日本語キーボードを英語キーボード配列で使おうとした際に調べた情報 をまとめています。Keyhac + Fakeymacs で実現する設定のリンクも載せています。お試しください!

WSL で Emacs を使うための設定 をまとめました。WSL Emacs は Windows との相性がとても良く、Linux、Windows 双方にアクセスするためのユーザインタフェースとしての利用にとても便利です。お試しください!

WSL の emacsclient を Windows から利用するための設定 をまとめました。WSL Emacs を Windows で起動するためのコマンドも紹介しています。お試しください。

VSCode で開いているファイルを WSL の Emacs で開くための設定 をまとめました。Remote-WSL を設定した VSCode でも利用可能です。お試しください。

WSL の Emacs から VSCode でファイルを開くための設定 をまとめました。VSCode の Remote Development にも対応しています。お試しください。

helm で peco もどきのコマンドを使うための設定 をまとめした。peco が使えない shell-mode で利用できます。お試しください。

google-translate を使いやすくするための設定 をまとめました。翻訳する文章が日本語か英語かを判別し、他方に翻訳する機能をサポートしています。お試しください。

WSL から Windows の exe コマンドを管理者権限で実行するコマンド winsudo を公開しました。UAC が有効な場合、ポップアップによる確認後に管理者権限でコマンドが実行されます。お試しください。

WSL のシェルから Cygwin のコマンドを実行するためのコマンド cyg を公開しました。Cygwin から WSL へ移行する際の過渡期に利用するツールとして使えるかと思います。お試しください。

Emacs の日本語マニュアル を公開されている方がいらっしゃいます。大作です。紹介させていただきます。

Lisp と JavaScript は似ているのですね。興味深い。確かに、JavaScript の旧名は、LI ve S cri P t ですね。

【本題】


このウィキでは、Windows で GNU Emacs を 快適に利用するための設定についてまとめています。完全ではありませんが、以下の環境で動作確認しています。

  • Windows 11 + GWSL + WSL2 + Ubuntu-20.04 + Emacs-27 + emacs-mozc(Google日本語入力 と連携)(Linux版 Emacs)
  • Windows 11 + WSLg + WSL2 + Ubuntu-20.04 + Emacs-26 + emacs-mozc(Google日本語入力 と連携)(Linux版 Emacs)
  • Windows 10 ver 2004 + VcXsrv + WSL2 + Ubuntu-20.04 + Emacs-26 + emacs-mozc(Google日本語入力 と連携)(Linux版 Emacs)
  • Windows 10 ver 1909 + VcXsrv + WSL + Ubuntu-18.04 + Emacs-25 + emacs-mozc(Google日本語入力 と連携)(Linux版 Emacs)
  ※ 現在のメイン環境です。「WSL で Emacs を使うための設定」で設定方法を紹介しています。

  ※ この環境の特徴は、以下のとおりです。
   ・MinGW版 Emacs と異なり、設定でのいろいろな workaround(fakecygpty の設定や UTF-8 を使うための設定など)が不要です。
   ・Cygwin版 Emacs と異なり、MinGW版 Emacs 並に高速に動作します。
   ・Google日本語入力 との連携を可能とした mozc_emacs_helper.exe の導入で、日本語入力にも対応しています。
   ・Cygwin版 Emacs で度々発生する vfork 問題が一切起こりません。
   ・Linux の OS 環境をフルに利用可能です。(MinGW版 Emacs の様に別途 UNIX 環境を準備する必要がありません。)
   ・設定により、dired から Windows のドキュメントを直接開くことができます。(wslstart という cygstart と同機能のコマンドの作成により実現しています。)
   ・設定により、dired で Windows のショートカットをシンボリックリンクの様に扱えます。(w32-symlinks.el から最低限必要な設定を流用することで実現しています。)
   ・設定により、Windows パスや UNC パスを Linux のパスと同様に利用できます。(Emacs の Magic File Names の仕組みを利用して実現しています。)
   ・ViirtualBox で Linux を動作させた環境と異なり、Keyhac との連携(ウィンドウの切り替えなど)が可能です。
   ・一つデメリットを挙げれば、画面へのファイルのドラッグ&ドロップができないことです。これは、「dired を OS と連携して使うための設定」で代替になると思います。

  • Windows 10 + gnupack-13.06(Cygwin は最新に更新)+ emacs-mozc(Google日本語入力 と連携)(Cygwin版 Emacs)
  • Windows 10 + gnupack-13.06(Cygwin は最新に更新)+ Cygwin の emacs-w32 での差替え + emacs-mozc(Google日本語入力 と連携)(Cygwin版 Emacs)
  ※ WSL に移行する前まで使っていた環境です。
  ※ 比較的新しいバージョンが提供される Cygwin の Emacs を利用する方法は、「gnupack-13 の環境で Cygwin の Emacs を利用するための設定」を参考としてください。

  ※ この環境の特徴は、以下のとおりです。(以前までお勧めしていたので、まとめています。)
   ・MinGW版 よりちょっと(かなり?)遅めですが、設定でのいろいろな workaround が不要です。
   ・Cygwin 側で作成した Windows ショートカット(CYGWIN環境変数 が winsymlinks:lnk に設定された状態で ln -s コマンドで作成したリンク)が、シンボリックリンクとして認識されるのが便利です。
   ・Google日本語入力 との連携を可能とした mozc_emacs_helper.exe の導入で、日本語入力も安定して動作します。
   ・何らかのタイミングで vfork関連のエラーが発生することがあります。これを解決するのが厄介で、Cygwin版 Emacs を使う上での大きなデメリットとなっています。(この症状が発生した場合、Cygwin に対して rebaseall を行った後、OS の再起動をすると改善するような気がします。Cygwin の更新をすると rebase が掛かるので、その後 OS の再起動をすると良いと思います。)

  • Windows 10 + gnupack-11.00(Cygwin は最新に更新)+ NTEmacs64 での差替え (MinGW版 Emacs)
  • Windows 10 + gnupack-11.00(Cygwin は最新に更新)+ GNU配布版 Emacs での差替え + emacs-mozc(Google日本語入力 と連携)(MinGW版 Emacs)
  ※ 最新の MinGW版 Emacs を利用する方法は、「gnupack-11.00 の環境で NTEmacs64 を利用するための設定」を参考としてください。
  ※ Windows のパスがそのまま利用できるなど、Windows との親和性は高いです。但し、問題なく使うためのハードルも高い(本質的ではない、設定でのいろいろな workaround が必要)です。

  • VirtualBox + Ubuntu-18.04 + Emacs-25 or 26 + emacs-mozc(mozc-server と連携)(Linux版 Emacs)
  • Hyper-V + Ubuntu-18.04 + Emacs-25 or 26 + emacs-mozc(mozc-server と連携)(Linux版 Emacs)
  ※ 仮想環境で動かしているのに、非常に高速に動作します。Windows 環境との連携が重要でなければ、この環境が一番お勧めなのかもしれません。


※ 本ページで紹介する設定は、Emacs バージョン 24.4 以上で利用可能な設定となっています。
※ MinGW版 Emacs を利用する場合、Cygwin の導入、cygdriveプレフィクス の / 設定、cygwin-mount.el のインストールが前提となっている設定箇所があります。
※ Cygwin版 Emacs 、MinGW版 Emacs を利用する場合、以下の「【基本設定】」が行われていることが前提となっている設定箇所が多数あります。本ページの設定を利用する場合には、「【基本設定】」の利用を強くお勧めします。

※ フォントを滑らかに表示させるためには、次の方法をお試しください。

■ Cygwin版 Emacs 特有の設定




(関連)


■ MinGW版 Emacs 特有の設定





■ Windows版 Emacs 共通の設定 (上記の「【基本設定】」が前提となっている設定があります)







■ Linux の Emacs で利用できる設定



■ Windows Subsystem for Linux の Emacs で利用できる設定








(関連)

■ Emacs 全般で利用できる設定









■ 説明ページを作るまでもない設定の紹介


  • 沢山開いているバッファをできるだけ一度に閉じるための設定
(global-set-key (kbd "M-c") (lambda ()
                              (interactive)
                              (desktop-clear)
                              (tramp-cleanup-all-connections)))
  • カレントバッファを一発で閉じるための設定
(global-set-key (kbd "M-k") (lambda ()
                              (interactive)
                              (kill-buffer (buffer-name))))
  • ウィンドウの右端で改行をするかどうかを切り替えるための設定
(global-set-key (kbd "C-c C-<return>") 'toggle-truncate-lines)
  • 横スクロールするための設定(キー設定が逆の感覚の方もいるかも)
(global-set-key (kbd "C-,") 'scroll-left)  ; < のキー
(global-set-key (kbd "C-.") 'scroll-right) ; > のキー
  • other-window がなければ開き、その window に移動するための設定
(defun other-window-or-split ()
  (interactive)
  (when (one-window-p)
    (split-window-sensibly))
  (other-window 1))

(global-set-key (kbd "C-x o") 'other-window-or-split)
  • 2 分割しているバッファを入れ替えるための設定
(defun swap-screen-with-cursor()
  "Swap two screen,with cursor in same buffer."
  (interactive)
  (let ((thiswin (selected-window))
        (thisbuf (window-buffer)))
    (other-window 1)
    (set-window-buffer thiswin (window-buffer))
    (set-window-buffer (selected-window) thisbuf)))

(global-set-key (kbd "M-t") 'swap-screen-with-cursor)
  • バッファの分割方向を縦と横とで入れ替えるための設定
(require 'rotate)
(setq rotate-functions '(rotate:even-horizontal rotate:even-vertical))
(global-set-key (kbd "M-\\") 'rotate-layout)
  • tramp を使っていて、NTEmacs の起動が遅くなる場合に必要な設定
(require 'recentf)
(setq recentf-auto-cleanup 'never)
(recentf-mode 1)
  • その他参考

■ おまけ




■ その他



  • Subversion には dsvn を使っています。melpa からインストールできます。
  • Git には magit が便利です。

  • Vimacs というのもあるんですね。Evil と逆の発想のものだと思います。

  • spacemacsというのも見つけました。Windows版 Emacs でも動いているようです。

■ 参考サイト


  • Manual
  • Lisp と JavaScript
  • Common Lisp
  • functional-programming
  • nadvice
`:before'	(lambda (&rest r) (apply FUNCTION r) (apply OLDFUN r))
`:after'	(lambda (&rest r) (prog1 (apply OLDFUN r) (apply FUNCTION r)))
`:around'	(lambda (&rest r) (apply FUNCTION OLDFUN r))
`:override'	(lambda (&rest r) (apply FUNCTION r))
`:before-while'	(lambda (&rest r) (and (apply FUNCTION r) (apply OLDFUN r)))
`:before-until'	(lambda (&rest r) (or  (apply FUNCTION r) (apply OLDFUN r)))
`:after-while'	(lambda (&rest r) (and (apply OLDFUN r) (apply FUNCTION r)))
`:after-until'	(lambda (&rest r) (or  (apply OLDFUN r) (apply FUNCTION r)))
`:filter-args'	(lambda (&rest r) (apply OLDFUN (funcall FUNCTION r)))
`:filter-return'(lambda (&rest r) (funcall FUNCTION (apply OLDFUN r)))
  • generalized variables
  • lexical-binding
  • flet
  • noflet
  • function
  • custom-set-variables
  • buffer local variable
  • Emacs
  • init-loader.el
  • font
  • dabbrev
  • emacsclient
  • helm
  • mozc
  • Google日本語入力
  • eclim
  • OminiSharp
  • roslyn
  • lsp
  • TabNine
  • IDE
  • WSL


  • WSL2
  • binfmt_misc
  • D-Bus
  • bash
  • gsudo
  • stdbuf
  • cocot
  • ssh
  • ssh-agent-wsl
  • socat
  • SocksCap64
  • Named Pipe TCP Proxy Utility
  • trac
  • DOS
  • UAC
  • fsutil
  • Windows Shortcut File Format
  • Android
  • Keyhac
  • closure
  • AutoHotKey
  • Bat To Exe Converter
  • Emacs keybind
  • xkeysnail
  • q-text-as-data
  • qq
  • Open-usp-Tukubai

  • article

  • MacOS


最終更新:2023年01月17日 17:30