Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

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の機能は多岐にわたり,全てを一度に覚えることはない. 最初は基本的な操作から始め,徐々に高度な操作やカスタマイズに進むことを勧める. 必要なときに,必要な機能を調べて覚えていくことが大切である.

サイト内の関連ページ

関連する外部ページ

インストール手順

  1. emacs の公式のダウンロードページを開く

    https://www.gnu.org/software/emacs/download.html

  2. ダウンロードのため「nearby GNU mirror」をクリック
  3. windows」をクリック
  4. 最新の「emacs-28」をクリック
  5. 最新の installer.exe ファイルのクリックする.ダウンロードが始まる.
  6. ダウンロードした .exe ファイルを起動する.
  7. 最初の画面では「Next」をクリック.
  8. ライセンス条項を確認.

    同意する場合のみ続行する.

  9. Install」をクリック.

emacs の高DPIスケール設定

表示の改善のために次を行う.

  1. C:\Program Files\Emacs を開く
  2. emacs-28.2 のようなディレクトリがある.それを開く

  3. 「bin」を開く
  4. emacs を選び,右クリックメニューで「プロパティ」を選ぶ.
  5. 互換性」で「高DPI設定の変更」をクリック.
  6. 高いDPIスケールに実行を上書きします」をチェック.

~\.emacs.d\init.el の設定例

  1. emacs を開く
  2. ファイル名「~/.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))