Emacs 28.2 のインストール(winget を使用しないインストール)と設定(Windows 上)
【要約】
このページでは,Emacs 28をWindowsにインストールする.公式ダウンロードページから最新のemacs-28をダウンロードし,インストーラを実行する.次に,IMEの設定を行う.設定ファイル~/.emacs.d/init.elを開き,必要なパッケージとIMEの設定を記述する.このとき,IMEのフォントは"MS Gothic-10.5"に設定すると使いやすくなる.その他の個人設定として,キーボード操作,タブ,auto-fillの設定や,画面の大きさ,表示設定,履歴の設定も可能である.また,漢字コードの設定,フォントサイズの調整も可能である.
Emacs
Emacsの操作は,キーボードによるコマンドが中心で,そのコマンドを通じてテキスト編集,ファイル操作,文字列の置換,画面操作など,幅広い作業を行うことが可能である. 詳細な操作指示は通常,画面の最下部(ミニバッファ)で行う. Emacsにはメニューバーも存在し,メニューからも一部の機能を利用できる.メニューを使う場合,操作に応じてダイアログ画面が開くこともある.以下に,Emacsでよく使われる主要な操作とそのキーボードショートカットをまとめている.
- コピーと貼り付け:
- CTRL+k: 現在のカーソル位置から行末までをカット.
- CTRL+SPACE: マーク(選択の開始点)を現在位置にセット.
- CTRL+w: マークから現在位置までをカット.
- ESC+w: マークから現在位置までをコピー.
- CTRL+y: カットやコピーした内容を貼り付け.
- 文字列の置換:
- ESC+x からの replace-string: 文字列の置換.
- 画面操作:
- CTRL+x からの 2: 現在の画面を2つに分割.
- CTRL+x からの o: 別の画面へ移動.
- シェルの利用:
- ESC+x からの shell: Emacs内でシェルを起動.
- ファイル操作:
- CTRL+x CTRL+f: ファイルを開く,もしくは新規作成.
- CTRL+s: 現在のファイルを保存.
- CTRL+x CTRL+c: Emacsを終了.
- アンドゥ/リドゥ/キャンセル:
- CTRL+/: 最後の操作をアンドゥ(取り消し).
- CTRL+g: 途中の操作をキャンセル.
Emacsは,最初は少し難しいと感じるかもしれないが,強力な機能があり,カスタマイズ可能も可能であることから, マスターすれば,コーディングや文書作成の効率を向上させることが可能である. Emacsの機能は多岐にわたり,全てを一度に覚えることはない. 最初は基本的な操作から始め,徐々に高度な操作やカスタマイズに進むことを勧める. 必要なときに,必要な機能を調べて覚えていくことが大切である.
【サイト内の関連ページ】
【関連する外部ページ】
- emacs の公式のダウンロードページ: https://www.gnu.org/software/emacs/download.html
インストール手順
- emacs の公式のダウンロードページを開く
- ダウンロードのため「nearby GNU mirror」をクリック
- 「windows」をクリック
- 最新の「emacs-28」をクリック
- 最新の installer.exe ファイルのクリックする.ダウンロードが始まる.
- ダウンロードした .exe ファイルを起動する.
- 最初の画面では「Next」をクリック.
- ライセンス条項を確認.
同意する場合のみ続行する.
- 「Install」をクリック.
emacs の高DPIスケール設定
表示の改善のために次を行う.
- C:\Program Files\Emacs を開く
- emacs-28.2 のようなディレクトリがある.それを開く
- 「bin」を開く
- emacs を選び,右クリックメニューで「プロパティ」を選ぶ.
- 「互換性」で「高DPI設定の変更」をクリック.
- 「高いDPIスケールに実行を上書きします」をチェック.
~\.emacs.d\init.el の設定例
- 次のサイトで公開されている成果物を冒頭部分で使用している.
- 「(modify-all-frames-parameters '((ime-font . "MS Gothic-10.5")))」は 入れておくことを推奨
- 残りの部分は,私が使っている設定を参考のために掲載
- emacs を開く
- ファイル名「~/.emacs.d/init.el」のファイルを開く.
このファイルが存在していない場合は新規作成すること.
ファイルを開くために,CTRL+x (同時押し), CTRL+f (同時押し),ファイル名として「~/.emacs.d/init.el」を指定.
【設定ファイル】 Emacs の基本的な設定や,様々なパッケージの設定が含まれている.
- 基本設定: 言語環境とエンコーディングの設定(日本語対応),OS 固有の設定(Linux と Windows),IME や フォントの設定,表示設定(行番号表示、ツールバー非表示など)
- パッケージ管理: MELPA リポジトリの追加,use-package の使用
- 主要なパッケージ: company-mode(自動補完),which-key(キーバインドヘルプ),flycheck(シンタックスチェック),web-mode(HTML/CSS/JS 編集),emmet-mode(HTML 高速入力)
- シェル関連の設定: eshell, shell-mode, ansi-term の設定
- HTML 編集のための設定: web-mode でのインデント設定,emmet-mode の有効化
;; ==================================== ;; Emacs 初期設定ファイル ;; ==================================== ;; ==================================== ;; 基本設定 ;; ==================================== ;; Windows クリップボードとの連携を有効にする (setq select-enable-clipboard t) ;; 言語環境の設定 (set-language-environment "Japanese") (prefer-coding-system 'utf-8) (set-default-coding-systems 'utf-8) (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) ;; OS固有の設定 (cond ;; Linuxの場合 ((eq system-type 'gnu/linux) ;; mozc のロードと,日本語文字コード (require 'mozc) (load-library "mozc") (setq default-input-method "japanese-mozc") (fset 'yes-or-no-p 'y-or-n-p)) ; yes/no を y/n で回答できるようにする ;; Windowsの場合 ((eq system-type 'windows-nt) ;; native compilation を無効にする (setq native-compile-available nil) (setq native-comp-deferred-compilation nil) (setq native-comp-speed 0) (setq comp-deferred-compilation nil) (setq package-native-compile nil) ;; 警告を最小限に抑える (setq warning-minimum-level :emergency) ;; IMEパッケージのロードを試みる (require 'w32-ime nil t) ;; IMEが正常にロードされた場合のみ設定を適用 (when (featurep 'w32-ime) ;; IMEのモードライン表示設定 (setq-default w32-ime-mode-line-state-indicator "[--]") (setq w32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]")) ;; 日本語入力時にカーソルの色を変更する (add-hook 'w32-ime-on-hook '(lambda () (set-cursor-color "green"))) (add-hook 'w32-ime-off-hook '(lambda () (set-cursor-color "red"))) ;; IMEの変換中はアンダーライン、変換確定後はアンダーラインを消す (when (facep 'w32-ime-preedit-face) (set-face-attribute 'w32-ime-preedit-face nil :underline t :foreground nil :background nil)) (when (facep 'w32-ime-conversion-face) (set-face-attribute 'w32-ime-conversion-face nil :underline nil :foreground nil :background nil)) ;; 日本語変換時のフォントを設定 (when (facep 'w32-ime-preedit-face) (set-face-attribute 'w32-ime-preedit-face nil :family "メイリオ" :height 120)) (when (facep 'w32-ime-conversion-face) (set-face-attribute 'w32-ime-conversion-face nil :family "メイリオ" :height 120)) ;; IMEの初期化 (w32-ime-initialize) ;; デフォルトIMEを設定 (setq default-input-method "W32-IME")) ;; フォントの設定 (set-face-attribute 'default nil :family "Consolas" :height 120) (set-fontset-font nil 'japanese-jisx0208 (font-spec :family "メイリオ")) (setq face-font-rescale-alist '(("メイリオ" . 1.08))) ;; dired-modeでファイル名の日本語エンコーディングを正しく扱う (setq default-file-name-coding-system 'cp932) ;; Windowsのファイルパスを正しく扱う (setq file-name-coding-system 'cp932) ;; Windowsでファイル名を扱う際の設定 (setq locale-coding-system 'cp932) ;; プロセスの環境変数の文字コードを設定 (setq default-process-coding-system '(utf-8-unix . cp932)) ;; shell-modeで日本語の文字化けを回避 (setq shell-file-name "cmdproxy.exe") (setq shell-command-switch "-c") (setq w32-quote-process-args t) ;; Windowsのショートカットファイル(.lnk)を適切に扱う (add-to-list 'file-name-handler-alist '("\\.lnk\\'" . w32-browser)))) ;; 行末の空白を保存時に自動削除 (add-hook 'before-save-hook 'delete-trailing-whitespace) ;; キーボード操作の設定 (global-unset-key "\C-z") ; C-z を無効化(誤操作防止) (keyboard-translate ?\C-h ?\C-?) ; C-h を Backspace として使う (global-set-key [zenkaku-hankaku] 'toggle-input-method) ; 全角/半角キーで入力メソッドを切り替え ;; タブと自動インデントの設定 (electric-indent-mode -1) (setq-default indent-tabs-mode nil) ; インデントにタブを使わず、スペースを使う (setq-default tab-width 4) ; タブ幅を4に設定 ;; 表示の設定 (setq inhibit-startup-message t) ; 起動時のメッセージを非表示 (setq initial-scratch-message "") ; *scratch* バッファの初期メッセージを空に (tool-bar-mode -1) ; ツールバーを非表示 ; (menu-bar-mode -1) ; メニューバーを非表示 (scroll-bar-mode -1) ; スクロールバーを非表示 (setq ring-bell-function 'ignore) ; ビープ音を無効化 (global-display-line-numbers-mode t) ; 行番号を表示 (column-number-mode t) ; カラム番号を表示 (global-hl-line-mode t) ; 現在行をハイライト (show-paren-mode t) ; 対応する括弧をハイライト (setq show-paren-delay 0) ; 括弧のハイライトの遅延をなくす (setq show-paren-style 'parenthesis) ; 括弧のみをハイライト (setq-default show-trailing-whitespace t) ; 末尾の空白を可視化 (set-face-background 'trailing-whitespace "#b14770") ; 末尾の空白の色を設定 ;; スクロールの設定 (setq scroll-conservatively 101) ; スクロールを滑らかにする (setq scroll-margin 5) ; 5行余裕を持ってスクロール (setq comint-scroll-show-maximum-output t) ; コマンド出力時に最下部へスクロール ;; 履歴の設定 (recentf-mode t) ; 最近使ったファイルを保存 (setq recentf-max-menu-items 30) ; 最近使ったファイルの最大表示数 (setq recentf-max-saved-items 1000) ; 最近使ったファイルの最大保存数 ;; 画面の大きさ (setq initial-frame-alist (append (list '(top . 25) '(left . 10) '(width . 60) '(height . 25)) initial-frame-alist)) (setq default-frame-alist initial-frame-alist) ;; ==================================== ;; パッケージ管理の設定 ;; ==================================== ;; package.elの設定 (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) (package-initialize) ;; use-packageのインストールと設定 (unless (package-installed-p 'use-package) (package-refresh-contents) (package-install 'use-package)) (require 'use-package) (setq use-package-always-ensure t) ;; ==================================== ;; 各パッケージの設定 ;; ==================================== ;; company-modeの設定 ;; 自動補完機能を提供するパッケージ (use-package company :config (global-company-mode) ; 全てのバッファでcompany-modeを有効化 (setq company-idle-delay 0) ; 補完開始までの待ち時間 (setq company-minimum-prefix-length 2) ; 補完が開始されるまでに入力する最小文字数 (setq company-selection-wrap-around t)) ; 候補の最後の次は最初の候補に戻る ;; which-keyの設定 ;; キーバインドのヘルプを表示するパッケージ (use-package which-key :config (which-key-mode)) ; which-key-modeを有効化 ;; flycheck(シンタックスチェッカー) ;; コードの文法チェックを行うパッケージ (use-package flycheck :init (global-flycheck-mode)) ; 全てのバッファでflycheckを有効化 ;; ==================================== ;; HTML編集のための設定 ;; ==================================== ;; web-mode (use-package web-mode :mode (("\\.html?\\'" . web-mode) ("\\.css\\'" . web-mode) ("\\.jsx?\\'" . web-mode)) :config (setq web-mode-markup-indent-offset 0) ; HTMLタグのインデントを無効化 (setq web-mode-css-indent-offset 2) ; CSSのインデントは2スペース (setq web-mode-code-indent-offset 2) ; JS、PHPなどのインデントは2スペース (setq web-mode-enable-auto-pairing t) ; 自動ペアリングを有効化 (setq web-mode-enable-css-colorization t) ; CSS の色を表示 (setq web-mode-enable-auto-indentation nil) ; 自動インデントを無効化 (setq web-mode-enable-element-content-indentation nil) ; 要素内容のインデントを無効化 (setq web-mode-enable-element-tag-closing nil)) ; タグ閉じの自動挿入を無効化 ;; emmet-mode (HTMLの高速入力) (use-package emmet-mode :hook (web-mode . emmet-mode) :config (setq emmet-indentation 0)) ; emmet-modeのインデントも0に設定 ;; HTMLファイル用の追加設定 (add-hook 'web-mode-hook (lambda () (electric-indent-local-mode -1))) ; electric-indentをHTMLファイルで無効化 ;; ==================================== ;; SHELLモードの設定 ;; ==================================== ;; eshell(Emacsのシェル)の設定 (use-package eshell :bind (("C-c e" . eshell)) :config (setq eshell-prompt-function (lambda () (concat (abbreviate-file-name (eshell/pwd)) (if (= (user-uid) 0) " # " " $ ")))) (setq eshell-prompt-regexp "^[^#$\n]* [#$] ")) ;; shell-mode(外部シェル)の設定 (use-package shell :config (setq explicit-shell-file-name "bash") (setq shell-file-name "bash") (setq shell-command-switch "-c")) ;; ansi-term(フルターミナルエミュレーション)の設定 (use-package term :bind (("C-c t" . ansi-term)) :config (setq explicit-shell-file-name "bash")) ;; Windows環境でのPath設定(必要に応じて) (when (eq system-type 'windows-nt) (setq exec-path (append exec-path '("C:/Program Files/Git/bin")))) ;; ==================================== ;; 追加の便利な設定 ;; ==================================== ; ;; 括弧の自動挿入 ; (electric-pair-mode 1) ; ;; ファイルの自動再読み込み ; (global-auto-revert-mode 1) ; ;; バックアップファイルの作成場所を変更 ; (setq backup-directory-alist ; `((".*" . ,temporary-file-directory))) ; (setq auto-save-file-name-transforms ; `((".*" ,temporary-file-directory t))) ; ;; 最近使ったファイルを開く ; (global-set-key (kbd "C-x C-r") 'recentf-open-files) ; ;; タブ、全角スペース、行末の空白を可視化 ; (use-package whitespace ; :init ; (global-whitespace-mode 1) ; :config ; (setq whitespace-style '(face tabs spaces trailing space-mark tab-mark)) ; (setq whitespace-display-mappings ; '((space-mark ?\u3000 [?\u25a1]) ; (tab-mark ?\t [?\u00BB ?\t] [?\\ ?\t])))) ;; カスタム設定を別ファイルに保存 (setq custom-file (expand-file-name "custom.el" user-emacs-directory)) (when (file-exists-p custom-file) (load custom-file))