Yamamoto's Laboratory
Emacs

インストール

Linux の場合,Emacs のインストールは以下のコマンドです.

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install emacs

Windows の場合,GNU Emacs Download & Install の「nearby GNU mirror」あるいは「main GNU FTP server」をクリックし,最新のインストーラー「emacs-28.2-installer.exe」 (2023.04.07の最新) をダウンロードします.ダウンロード後に,ファイルをダブルクリックします.すると,ダイアログ「Widows によって PC が保護されました」と表示されます.詳細情報をクリックし,現れたボタン[実行]をクリックします.

キー入力

Emacs は,キー入力で操作します.キー入力は,Control キーあるいは Alt キー,Esc キーとと共にコマンドを入力します.そのキー入力は分かり難いので,初心者は戸惑うことがあります.そこで,以下の表に簡単にまとめておきます.

Emacs のキー入力の方法.赤色のキー入力は,コマンドにより変化します.
Emacs表現 キー操作方法
 C–x キーボードの Ctrl を押しながらxを押します.
 C–x C–y キーボードの Ctrl を押しながら x を押します.その後,キーボードの Ctrl を押しながら y を押します.
 C–x  y キーボードの Ctrl を押しながら x を押します.その後,Ctrl を離し,y を押します.
 M–x キーボードの Alt を押しながら x を押します.あるいは,esc を押し,そのキーを離した後に,x を押します.
 C–M–x キーボードの CtrlAlt を押しながら,x を押します.あるいは,esc を押し,そのキーを離した後に,Ctrl を押しながら,x を押します.

コマンド

ファイル操作

C-x C-f ファイル名(find-file)
コマンドに引き続きファイル名をタイプすると,ファイルが開かれます.
C-x C-rファイル名(find-file-read-only)
コマンドに引き続きファイル名をタイプすると,ファイルがリードオンリーモードで開かれます.
M-x hexl-find-fileRETファイル名
バイナリーファイルが16進数で表示され,編集可能です.
M-x revert-bufferRET yes RET
現在開いているファイルを再読み込みを行います.

バッファー操作

C-x k(kill-buffer)
バッファーを削除します.

マークとリージョン

リージョン指定により,操作の対象となるテキストを指定することができます.

C-SPC
カーソル位置にマーク指定.

マーク指定後,矢印キーなどでカーソルを移動させます.すると,マーク指定場所からカーソルが移動した場所までがリージョンになります.マウスをドラッグすることでも,リージョン指定は可能です.

検索と置換

正規表現を使った検索と置換については,「Emacs の正規表現」を参照.

検索

文字列の検索は以下のようにします.

C-s検索文字列 RET
順方向に文字列の検索をおこないます.C-s を繰り返すことで,次々に順方向検索ができます.
C-r検索文字列 RET
逆方向に文字列の検索をおこないます.C-r を繰り返すことで,次々に逆方向検索ができます.

置換

文字列の置換には,「M-x replace-string」を使います.

M-x replace-string RET 置換前文字列 RET 置換後文字列 RET
文字列の置換をおこないます.
M-x replace-regexp RET 置換前文字列(正規表現) RET 置換後文字列 RET
正規表現の文字列の置換をおこないます.

範囲の指定を行う場合は,開始位置を C-[space] で指定し,矢印記号でカーソルを完了位置まで移動させ,上記のコマンドを実行させます.改行コードは,C-q C-j [RET] で表せます.

大文字/小文字の変換

C-x C-l(downcase-region)
リージョン内を小文字に変換.
C-x C-u(upcase-region)
リージョン内を大文字に変換.

画面操作

C-x 1 C-x 2(split-window-vertically)C-x 3(split-window-horizontally)
ウィンドウを分割無し(C-x 1),縦に 2 分割(C-x 2),横に 2 分割(C-x 3)します.
C-x o(other-window)
分割されたウィンドウのもう一方を選択します.
C-M-v(scroll-other-window)
選択されていない方のウインドウをスクロールします.
M-v (scroll-down)C-v (scroll-up)
画面を1画面戻す(M-v),進めます(C-v).

コマンドライン編集

編集

C-x h(mark-whole-buffer)
全てを選択.
M-x indent-region
選択領域を一括でインデントする.

カーソル移動

Emacs の場合,キーボードの矢印記号を使わないで,カーソルの移動が可能です.以下のコマンドを使うと,素早くカーソスの移動が可能です.

C-b (backward-char)C-f (forward-char)
カーソルを左(C-b),右(C-f)に移動させます.
M-b (backward-word)M-f (forward-word)
カーソルを1単語分,左(M-b)に,右(M-f)に移動させます.
C-p (previous-line)C-n (next-line)
カーソルを1行戻す(C-p),1行進めます(C-n).
C-a (move-beginning-of-line)C-e (move-end-of-line)
カーソルを行頭に戻す(C-a),行末に進めます(C-e).
M-a (backward-sentence)M-e (forward-sentence)
カーソルを文頭に戻す(M-a),文末に進めます(M-e).
C-v (scroll-up)M-v (scroll-down)
次のページ(C-v),前のページに進めます(M-e).
M-< (beginning-of-buffer)M-> (end-of-buffer)
カーソルをファイルの先頭(M-<),文末に進めます(M->).

文字コード

Emacs は文字コードに応じてファイルを開き表示をしますが,たまに間違うことがあります.その場合には,文字コードを指定し,再読み込みを行います.

C-x C-m c utf-8 RET C-x C-v RET
ファイルを utf-8 で再読み込みます.
C-x C-m c euc-jp RET C-x C-v RET
ファイルを euc-jp で再読み込みます.
C-x C-m c sjis RET C-x C-v RET
ファイルを sjis (shift Jis) で再読み込みます.

その他

M-x count-words-region RET
選択範囲の文字数を数えます.
M-x text-mode RET
テキストモードにします.SVG 画像を開いた時に,画像ではなく,テキストにしたい時に使います.

ファイルマネージャー (dired)

Emacs のファイルマネージャー「dired」は,とても便利です.Emacs を使う人はその使い方を覚えおくと,幸せになります.使い方の詳細は,「ディレクトリエディタdired」にあります.これを見ればわかるように,機能が豊富なファイルマネージャーです.全ての機能を使いこなすことは難しいでしょう.ここでは,通常使うために必要な機能のみを示します.

起動

dired の起動方法は,Emacs を立ち上げた状態で,「C-x d」とするか「M-x dired」とします.ファイルの一覧が表示されます.

キー (コマンド)

dired が起動すると,カレントディレクトリーのファイル/サブディレクトリーが表示されます.そのファイル名/サブディレクトリ名の先頭にカーソル移動し,キー (コマンド) で操作を行います.よく使う代表的なキーを以下に示します.全てのキーの動作の詳細は,「ディレクトリエディタdired」に載っています.

dired の使い方
キー動作
^上のディレクトリへ
n / p次/前のファイル
RET / f / eファイルを開く
o他のウインドウで開く
+ディレクトリの作成
Cコピーの作成
R移動/名前の変更 (mv)
Dファイルの削除
d削除するファイルにマーク
xファイルの削除の実行
M権限の変更 (chmod)
Oオーナーの変更 (chown)
Gグループの変更 (chgrp)
(詳細内容の非表示/表示

Emacs の正規表現

文字列のパターンを表すものを正規表現 (Regular Expressin) と言います.テキストエディターでこれが使えると,処理の幅が拡がります.もちろん,Emacs でも使えます.ここでは簡単な使い方を説明します.

使い方(検索と置換)

Emacs で正規表現が最も多く使われるのは,検索と置換です.それを使うときのコマンドは,以下の通りです.

C-u C-s検索文字列 RET
順方向に文字列の検索をおこないます.検索文字列の指定に正規表現を使うことができます.C-s を繰り返すことで,次々に順方向検索ができます.
C-u C-r検索文字列 RET
逆方向に文字列の検索をおこないます.検索文字列の指定に正規表現を使うことができます.C-r を繰り返すことで,次々に逆方向検索ができます.
M-x replace-regexp RET 置換前文字列 RET 置換後文字列 RET
文字列の置換をおこないます.置換前文字列に正規表現を使うことができます.

Emacs の正規表現

以下の表に,しばしば使いそうな正規表現の式をまとめます.詳細は,「正規表現のシンタックス」や「RegularExpression」を参照下さい.

Emacs の正規表現
正規表現 文字列パターン
[abcXYZ] a,b,c,X,Y,Zのどれかひとつ
[a-z] a〜zのどれかひとつ
[C-W5-7] C〜W,あるいは5〜7のどれかひとつ
[^ab] 'a'と'b'以外にマッチ.ブラケット直後の ^ は否定
hoge\|fuga hoge あるいは fuga のいずれか
. 改行文字(\n)以外の任意の1文字
* 直前の文字/グループがゼロ個以上
+ 直前の文字/グループが1個以上
? 直前の文字/グループが0個または1個
\{3,8\} 直前の文字/グループが3個以上,8個以下
\{6\} 直前の文字/グループが6個
\{,3\} 直前の文字/グループが3個以下
\{7,\} 直前の文字/グループが7個以上
\(hoge \| fuga\) or (\|) 選択のグループ化.
\(パターン\) パターンをグループ化.たとえば,「ba\(na\)\{1:2\}」.
\(パターン\) パターンをグループ化.「\整数」で括弧内の文字列を参照できる*1
\`\' \` はバッファー(ファイル)の先頭,\' はバッファーの終わり.
^$ ^は行の先頭,$は行の末尾
\<\> \< は単語先頭,\> は単語の終わり.
\s-\S- \s- は空白文字*2にマッチ.\S-はその否定.
\w\W 英文字と英数字([a-zA-Z0-9])]にマッチ.\W はその否定.

Emacs の正規表現を使う上での注意事項を示します.

  • 表中の*1   「xx\(.\)yy\([a-z]\)zz\2\1」は,「xx9yyazza9」や「xxByykzzkB」にマッチします.\1 は最初の括弧内の . に対応した文字列(ここでは文字),\2は次の括弧内の文字列になります.これはグループ化です.
  • 表中の*2   空白文字とは,「半角スペース,CR, Tab, LF, 改ページ」のことです.
  • 制御に使われる文字を正規表現内で文字として使う場合には,エスケープ(文字の前に\をつける)しなくてはなりません.このような文字は,「*」や「+」,「.」,「?」,「[」と「]」,「^」,「\」です.
  • 改行は,「C-q C-j」です.
  • タブ(tab)は,「C-q C-i」です.

グループ化

正規表現のグループ化はとても便利な機能です.先に示した通り,「xx\(.\)yy\([a-z]\)zz\2\1」は,「xx9yyazza9」や「xxByykzzkB」にマッチします.最初のグループ「\(.\)」は「\1」で,二番目のグループ「\([a-z]\)」は「\2」で参照できます.このグループ化と参照はとても便利です.グループ化は「\(グループ化\)」で指定します.参照は「\参照番号」です.

このグループ化と参照は,正規表現を使った置換に使えます.例えば,ファイル中の文字列「12:33:47.347text-hoge:34.54」のような記述が大量にある場合を考えます.「整数整数:, 整数整数, :, 整数, 整数, .」の最後のピリオドをマイナス記号「-」に変換することを考えます.Emacs では以下のようにします.

  1. Emacs でファイルを開き,正規表現を使った置換のコマンド「M-x replace-regexp」をタイプします.
  2. 置換元の文字列の正規表現「\([0-9][0-9]:[0-9][0-9]:[0-9][0-9]\)\.」をタイプします.
  3. 置換する文字列の表現「\1-」をタイプします.

以上で変換が可能です.要するに,正規表現を使った置換でも,置換する文字列の中にグループの参照が使えます.これはとても便利な機能です.

リモートファイルの編集 (TRAMP)

TRAMPを使うと,ローカルの emacs でリモートのファイルの編集ができます.最近の emacs には,TRAMP が含まれているので,インストールは不要です.

設定

Linux の場合は,特に設定は不要です.

Windows の場合は,(1) Windows 10/11 標準搭載 Opn SSH,(2) Putty の plink.exe,(3) Git for Windows の SSH のいずれかをを使います.私は,Putty でサーバーで接続しますので,plink.exe を使うことにします.まずは,Putty をインストールします.インストールと設定は,ローカスホスト (Windows) の設定が参考になります.そして,plink.exe を環境変数の Path に加えます.以上で設定は完了です.

使い方

使い方は簡単で,通常のファイルをオープンする間隔で C-x C-f ではじめます.

Windows

plink で接続するためには,Putty でサーバーに接続できるようにします.接続の確認ができたならば,Emacs でリモートファイルへの編集が可能になります.

接続は,/plink:セッション名:パス とします.具体的には,次のとおりです.

Find file: /plink:セッション名:/リモートディレクトリ/ファイル名

セッション名は,PuTTY でリモートに接続する時の「Saved Sessions」に現れる名前です.

Linux

Linux では,/ssh:ユーザー名@ホスト名:パス とします.具体的には,次のとおりです.

Find file: /ssh:hoge@www.fuga.jp:/home/hoge

設定

Emacs lisp 保管先

初期設定ファイル

Emacs の初期設定ファイルは,「 ~/.emacs」あるいは「~/.emacs.el」,「~/.emacs.d/init.el」があります.ユーザーは,これらのうちのどれかひとつを使うことができます.複数の初期設定ファイルがあると優先度の高いものが使われます.その一方,複数の初期設定ファイルは事情を複雑にするだけで,メリットは殆どありません.避けるべきです.Emacs22 からは,ディレクトリー「~/.emacs.d」の中に Emacs 関係の設定ファイルを保管することが推奨されています.したがって,今どきのユーザーは「~/.emacs.d/init.el」を使うべきです.

様々な el ファイル

Emacs には,Emacs Lisp で書かれたさまざまな拡張機能が提供されています.そのファイルは,拡張子が「el」となっており,インターネット上に公開されています.これをダウンロードして使う場合,通常はディレクトリー site-lisp に保管します.Ubuntu の場合,そのパスは「/usr/share/emacs/site-lisp」,あるいは「/usr/local/share/emacs/site-lisp」です.

便利な Emacs lisp

Emacs lisp 動作の内容/使う場面
web-mode.el WEB ページのソースを Emacs で書く場合,とても便利.
edit-server.el emacs をサーバーとして使います.私は,Edit with Emacs で使っています.詳しくは,Google chrome

エラー

エラーの対処法を示します

確認

エラーは,以下のコマンドで確認できます.

$ emacs --debug-init

修正

load-path ~/.emacs.d エラー理由は分かりませんが,init.el の load-path に「~/.emacs.d」が書かれていると,以下のエラーが表示されることが有ります.絶対パス,例えば「/home/yamamoto/.emacs.d/lisp」を使えば,この Warnig を防ぐことができます.

Warning (initialization): Your ‘load-path’ seems to contain
your ‘.emacs.d’ directory: ~/.emacs.d
This is likely to cause problems...
Consider using a subdirectory instead, e.g.: /home/yamamoto/.emacs.d/lisp

私は,以下のように「/home/yamamoto/.emacs.d/site-lisp」を load-path に追加し,そこに lisp ファイルを保存します.

(setq load-path (append (list
      (expand-file-name "/home/yamamoto/.emacs.d/site-lisp")
                         )
                        load-path))

筆者の初期設定ファイル(init.el)

emacs の設定は,「init.el」に記載します.

Linux

Linux の emacs の設定ファイルは,以下のとおりです.

筆者の linux で使っている init.el ファイル(init.el)

;================================================================
; いろいろな設定
;================================================================
(global-set-key [delete] 'delete-char)
(global-set-key [kp-delete] 'delete-char)

(global-font-lock-mode t) ;文字装飾(カラー強調)
(setq-default transient-mark-mode t) ;リージョンのハイライト

(setq require-final-newline t)  ;最後に改行を追加

;; stop at the end of the file, not just add lines
(setq next-line-add-newlines nil)

(when window-system
  (mwheel-install)   ;enable wheelmouse support by default
;; use extended compound-text coding for X clipboard
  (set-selection-coding-system 'compound-text-with-extensions)
)


(global-set-key [(ctrl z)] 'undo)  ;undoの設定

;; 起動時の画面を非表示にする
(setq inhibit-startup-message t)

;; load pathの追加
(setq load-path (append (list
       (expand-file-name "/usr/local/share/emacs/site-lisp")
                         )
                        load-path))

(setq load-path (append (list
       (expand-file-name "/usr/share/emacs/25.2/site-lisp")
                         )
                        load-path))
(setq load-path (append (list
      (expand-file-name "/usr/share/emacs/site-lisp")
                         )
                        load-path))
(setq load-path (append (list
      (expand-file-name "/home/yamamoto/.emacs.d/site-lisp")
                         )
                        load-path))
(setq load-path (append (list
      (expand-file-name "/home/yamamoto/.emacs.d/site-lisp/yatex")
                         )
                        load-path))

;;http://www.naney.org/diki/d/2014-07-23-Emacs-global-auto-revert-mode.html
(global-auto-revert-mode t)

;================================================================
; 日本語環境の設定
;================================================================
;(require 'un-define)
(set-language-environment "japanese")  ;; 日本語環境の設定
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
(set-clipboard-coding-system 'utf-8)
;(setq x-select-enable-clipboard t)

;----------------------------------------------------------------
;; 全角スペース・タブを目立つように表示する
;;http://www2.hyo-med.ac.jp/~tanimura/Ubuntu/UbuntuTrusty.html#sec17
;-----------------------------------------------------------------
(require 'whitespace)
(cond (window-system
     (setq whitespace-style            ; 必要な物を登録する tabsは登録しない
           '(face                       ; faceで可視化
;             spaces                     ; 空白
;             newline                    ; 改行
             space-mark                 ; 表示のマッピング
             newline-mark               ; 改行のマッピング
             ))
     (setq whitespace-space-regexp "\\( +\\|\u3000+\\)")
     (setq whitespace-display-mappings
           '(
             (space-mark ?\u3000 [?\u25a1])  ; 全角空白を に
;             (newline-mark 10 [9166 10])      ; 改行マーク
             ))
     (global-whitespace-mode 1)
     (set-face-attribute 'whitespace-space nil
                         :background "white"
                         :foreground "gray80"
                         :underline t)
     ))

;================================================================
; Mozc 設定
;================================================================
; http://compress.hatenadiary.com/entry/2014/02/24/001932
(require 'mozc)
(set-language-environment "Japanese")
(setq default-input-method "japanese-mozc")
;
; set input method toggle key to 'Shift-Space'
(global-set-key (kbd "S-SPC") 'toggle-input-method)
(add-hook 'mozc-mode-hook
  (lambda()
    (define-key mozc-mode-map (kbd "S-SPC") 'toggle-input-method)))


;================================================================
; モードの設定
;================================================================
(setq auto-mode-alist
      (append
       '(
     ("\\.h$"    . c++-mode)
     ("\\.txt$"  . text-mode)
     ("\\.tex$"  . yatex-mode)
     ("\\.sty$"  . yatex-mode)
     ("\\.html$"  . web-mode)
     ("\\.htm$"  . web-mode)
     ("\\.php$"  . web-mode)
     ) auto-mode-alist
       )
)

;==========================================================
; web-modeの設定
;        参考: http://yanmoo.blogspot.jp/2013/06/html5web-mode.html
;;==========================================================
(require 'web-mode)
(defun web-mode-hook ()
  "Hooks for Web mode."
  ;; 変更日時の自動修正
  (setq time-stamp-line-limit -200)
  (if (not (memq 'time-stamp write-file-hooks))
      (setq write-file-hooks
            (cons 'time-stamp write-file-hooks)))
  (setq time-stamp-format " %3a %3b %02d %02H:%02M:%02S %:y %Z")
  (setq time-stamp-start "Last modified:")
  (setq time-stamp-end "$")
  ;; web-modeの設定
  (setq web-mode-pre-elements nil)       ;; content inside <code>,<pre>,<textarea> is not indented any more
  (setq web-mode-markup-indent-offset 2) ;; html indent
  (setq web-mode-css-indent-offset 2)    ;; css indent
  (setq web-mode-code-indent-offset 2)   ;; script indent(js,php,etc..)
  (setq web-mode-comment-style 2)
  )

(add-hook 'web-mode-hook  'web-mode-hook)
;; 色の設定
(custom-set-faces
 '(web-mode-doctype-face
   ((t (:foreground "#82AE46"))))                          ; doctype
 '(web-mode-html-tag-face
   ((t (:foreground "#E6B422" :weight bold))))             ; 要素名
 '(web-mode-html-attr-name-face
   ((t (:foreground "#CCFF00"))))                          ; 属性名など
 '(web-mode-html-attr-value-face
   ((t (:foreground "#87ceeb"))))                          ; 属性値
 '(web-mode-comment-face
   ((t (:foreground "#FF7F50"))))                          ; コメント
 '(web-mode-server-comment-face
   ((t (:foreground "#FF7F50"))))                          ; コメント
 '(web-mode-css-rule-face
   ((t (:foreground "#A0D8EF"))))                          ; cssのタグ
 '(web-mode-css-pseudo-class-face
   ((t (:foreground "#FF7F00"))))                          ; css 疑似クラス
 '(web-mode-css-at-rule-face
   ((t (:foreground "#FF7F00"))))                          ; cssのタグ
)


;================================================================
; color設定
;================================================================
(setq default-frame-alist 
      (append 
       (list 
    '(mouse-color . "red");
    '(foreground-color . "bisque1") ; 文字の色
    '(background-color . "dark slate gray") ; 背景の色
    '(width . 90)                 ; ウインドウの幅
    '(height . 65)                ; ウインドウの高さ
    '(top . 0)                    ; ウインドウ上端の位置
    '(left . 5)                   ; ウインドウ左端の位置
    '(vertical-scroll-bars . t)   ; スクロールバーを出す
       )
      default-frame-alist)
)


;=====================================================================
; フォント設定
;=====================================================================
(set-fontset-font t 'japanese-jisx0208 "TakaoPGothic")
;(add-to-list 'default-frame-alist '(font . "Noto Sans CJK JP DemiLight-11" ))

;=====================================================================
; カーソルの種類
;=====================================================================
(setq default-frame-alist
      (append '(
        (cursor-color . "GreenYellow")         ;; 色
        (cursor-type . (bar . 2))      ;; 形
               )
              default-frame-alist)
)

;=====================================================================
; modeline に行数と桁数を表示
;=====================================================================
(line-number-mode t) 
(column-number-mode t)


;=================================================================
; 全てのバックアップファイルを/tmp以下に保存する。
;http://satosan.jp/CustomizeEmacs.html
;=================================================================
(defun make-backup-file-name (filename)
  (expand-file-name
    (concat "/tmp/" (file-name-nondirectory filename) "~")
    (file-name-directory filename)))


;=====================================================================
; 辞書の設定
;=====================================================================
(setq ispell-dictionary "US-xlg")

;=====================================================================
;自動改行(auto-newline)を有効にする 改行後 M-q
;=====================================================================
(setq text-mode-hook 'turn-off-auto-fill)
(setq auto-fill-mode nil)


;=====================================================================
; #filename というバックアップファイルを作らない
;=====================================================================
(setq make-backup-files nil)

;=====================================================================
;   ツールバーの設定
;=====================================================================
(tool-bar-mode -1)   ;M-x tool-bar-mode で表示非表示を切り替え

;=====================================================================
;  yatex の設定
;    http://d.hatena.ne.jp/supermassiveblackhole/20090409/1239252776
;=====================================================================
(autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)
(setq auto-mode-alist
      (append '(("\\.tex$" . yatex-mode)
                ("\\.ltx$" . yatex-mode)
                ("\\.cls$" . yatex-mode)
                ("\\.sty$" . yatex-mode)
                ("\\.clo$" . yatex-mode)
                ("\\.bbl$" . yatex-mode)) auto-mode-alist))
(setq YaTeX-kanji-code nil)
(setq tex-command "platex")
(setq dvi2-command "xdvi")
(setq bibtex-command "pbibtex")
(setq dviprint-command-format "dvipdfmx")
(add-hook 'yatex-mode-hook '(lambda () (auto-fill-mode -1))) ;; 自動で改行しない
(put 'upcase-region 'disabled nil)

;=====================================================================
; edit-server の設定
;=====================================================================
(require 'edit-server)
(edit-server-start)

UNIX 系の OS では,Emacs の設定は ~/.emacs.d/init.el に記述します.

Windows

Windows の emacs の設定ファイルは,以下のとおりです.

筆者の Windows で使っている init.el ファイル(init.el)

;; ================================================================
;; いろいろな設定
;; ================================================================
(global-set-key [delete] 'delete-char)
(global-set-key [kp-delete] 'delete-char)

(global-font-lock-mode t)            ;; 文字装飾(カラー強調)
(setq-default transient-mark-mode t) ;; リージョンのハイライト

(setq require-final-newline t)       ;; 最後に改行を追加

;; stop at the end of the file, not just add lines
(setq next-line-add-newlines nil)

(when window-system
  (mwheel-install)   ;; enable wheelmouse support by default
;; use extended compound-text coding for X clipboard
  (set-selection-coding-system 'compound-text-with-extensions)
)

(global-set-key [(ctrl z)] 'undo)  ;; undo の設定

;; 起動時の画面を非表示にする
(setq inhibit-startup-message t)

;; load pathの追加
(setq load-path (append (list
       (expand-file-name "C:\Program Files\emacs-26.1-simple_ime-no_symbol\emacs\share\emacs\site-lisp")
                         )
                        load-path))

;; ----------------------------------------------------------------
;; 全角の空白を分かり易く
;; http://www2.hyo-med.ac.jp/~tanimura/Ubuntu/UbuntuTrusty.html#sec17
;; -----------------------------------------------------------------
(require 'whitespace)
(cond (window-system
     (setq whitespace-style      ;; キャラクターの登録
           '(face                ;; face で可視化
;;             spaces             ;; 空白
;;             newline            ;; 改行
             space-mark          ;; 表示のマッピング
             newline-mark        ;; 改行のマッピング
             ))
     (setq whitespace-space-regexp "\\( +\\|\u3000+\\)")
     (setq whitespace-display-mappings
           '(
             (space-mark ?\u3000 [?\u25a1])   ;; 全角空白 に
;;             (newline-mark 10 [9166 10])     ;; 改行マーク
             ))
     (global-whitespace-mode 1)
     (set-face-attribute 'whitespace-space nil
                         :background "white"
                         :foreground "gray80"
                         :underline t)
     ))



;; ================================================================
;;  モードの設定
;; ================================================================
(setq auto-mode-alist
      (append
       '(
     ("\\.h$"    . c++-mode)
     ("\\.txt$"  . text-mode)
     ("\\.htm" . html-helper-mode)
     ("\\.html$" . html-helper-mode)
     ("\\.php" . html-helper-mode)
     ) auto-mode-alist))

;; ================================================================
;; cssモード
;; ================================================================
(autoload 'css-mode "css-mode")
(setq auto-mode-alist
      (cons '("\\.css\\'" . css-mode) auto-mode-alist))
(setq cssm-indent-function #'cssm-c-style-indenter)
(add-hook 'css-mode-hook
      '(lambda ()
         (define-key cssm-mode-map (read-kbd-macro "M-j") 'cssm-complete-property)))
(setq cssm-indent-function #'cssm-c-style-indenter)


;; ================================================================
;; html helper-mode
;; ================================================================
(autoload 'html-helper-mode "html-helper-mode" "Yay HTML" t)
(setq auto-mode-alist (cons '("\\.html$" . html-helper-mode) auto-mode-alist))



;; ================================================================
;; htmlモードの設定
;; ================================================================
(autoload 'html-mode "html" "HTML major mode." t)
(or (assoc "\\.html$" auto-mode-alist)
    (setq auto-mode-alist (cons '("\\.html$" . html-mode) 
                                auto-mode-alist)))

;================================================================
; color設定
;================================================================
(setq default-frame-alist 
      (append 
       (list 
    '(mouse-color . "red");
    '(foreground-color . "bisque1") ;; 文字の色
    '(background-color . "dark slate gray") ; 背景の色
    '(width . 100)                  ;; ウインドウの幅
    '(height . 40)                  ;; ウインドウの高さ
    '(top . 0)                      ;; ウインドウ上端の位置
    '(left . 5)                     ;; ウインドウ左端の位置
    '(vertical-scroll-bars . t)     ;; スクロールバーを出す
       )
      default-frame-alist)
)


;; =====================================================================
;; カーソルの種類
;; =====================================================================
(setq default-frame-alist
      (append '(
        (cursor-color . "GreenYellow")         ;; 色
        (cursor-type . (bar . 2))              ;; 形
               )
              default-frame-alist)
)

;=====================================================================
; modeline に行数と桁数を表示
;=====================================================================
(line-number-mode t) 
(column-number-mode t)


;; =================================================================
;; 全てのバックアップファイルを/tmp以下に保存する。
;; http://satosan.jp/CustomizeEmacs.html
;; =================================================================
(defun make-backup-file-name (filename)
  (expand-file-name
    (concat "/tmp/" (file-name-nondirectory filename) "~")
    (file-name-directory filename)))


;; =====================================================================
;; 辞書の設定
;; =====================================================================
(setq ispell-dictionary "US-xlg")


;=====================================================================
; #filename というバックアップファイルを作らない
;=====================================================================
(setq make-backup-files nil)

;=====================================================================
;   ツールバーの設定
;=====================================================================
(tool-bar-mode -1)   ;M-x tool-bar-mode で表示非表示を切り替え

;; =====================================================================
;; カーソルの位置から行頭まで削除する
;; http://d.hatena.ne.jp/ama-ch/20090114/1231918903
;; =====================================================================
(defun backward-kill-line (arg)
  "Kill chars backward until encountering the end of a line."
  (interactive "p")
  (kill-line 0))
;; C-S-k に設定
(global-set-key (kbd "C-S-k") 'backward-kill-line)

Windows での「init.el」の保管場所は以下のとおりです.

バージョン init.el の保存場所
Windows XP C:\Documents and Settings\ユーザー名\Application Data\.emacs.d\init.el
Windows 7 C:\Documents and Settings\ユーザー名\AppData\Roaming\.emacs.d\init.el
Windows 10 C:\Users\ユーザー名\AppData\Roaming\.emacs.d\init.el

ページ作成情報

参考資料

  1. Emacs の正規表現については,「正規表現のシンタックス」が詳しいです.
  2. RegularExpression」は,更に詳しいページです.ただし,英語です.
  3. mozc の設定は,「Ubuntu の Emacs で Google の日本語入力を使う」を参考にしました.

更新履歴

2013年 ページの新規作成
2014年09月20日 「設定」の項目を追加
2020年07月18日 「リモートファイルの編集(TRAMP)」の項目を追加


no counter