|
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 の正規表現」を参照. 検索文字列の検索は以下のようにします.
置換文字列の置換には,「M-x replace-string」を使います.
範囲の指定を行う場合は,開始位置を C-[space] で指定し,矢印記号でカーソルを完了位置まで移動させ,上記のコマンドを実行させます.改行コードは,C-q C-j [RET] で表せます. 大文字/小文字の変換
画面操作
コマンドライン編集編集
カーソル移動Emacs の場合,キーボードの矢印記号を使わないで,カーソルの移動が可能です.以下のコマンドを使うと,素早くカーソスの移動が可能です.
文字コードEmacs は文字コードに応じてファイルを開き表示をしますが,たまに間違うことがあります.その場合には,文字コードを指定し,再読み込みを行います.
その他
ファイルマネージャー (dired)Emacs のファイルマネージャー「dired」は,とても便利です.Emacs を使う人はその使い方を覚えおくと,幸せになります.使い方の詳細は,「ディレクトリエディタdired」にあります.これを見ればわかるように,機能が豊富なファイルマネージャーです.全ての機能を使いこなすことは難しいでしょう.ここでは,通常使うために必要な機能のみを示します. 起動dired の起動方法は,Emacs を立ち上げた状態で,「C-x d」とするか「M-x dired」とします.ファイルの一覧が表示されます. キー (コマンド)dired が起動すると,カレントディレクトリーのファイル/サブディレクトリーが表示されます.そのファイル名/サブディレクトリ名の先頭にカーソル移動し,キー (コマンド) で操作を行います.よく使う代表的なキーを以下に示します.全てのキーの動作の詳細は,「ディレクトリエディタdired」に載っています.
Emacs の正規表現文字列のパターンを表すものを正規表現 (Regular Expressin) と言います.テキストエディターでこれが使えると,処理の幅が拡がります.もちろん,Emacs でも使えます.ここでは簡単な使い方を説明します. 使い方(検索と置換)Emacs で正規表現が最も多く使われるのは,検索と置換です.それを使うときのコマンドは,以下の通りです.
Emacs の正規表現以下の表に,しばしば使いそうな正規表現の式をまとめます.詳細は,「正規表現のシンタックス」や「RegularExpression」を参照下さい.
Emacs の正規表現を使う上での注意事項を示します.
グループ化正規表現のグループ化はとても便利な機能です.先に示した通り,「xx\(.\)yy\([a-z]\)zz\2\1」は,「xx9yyazza9」や「xxByykzzkB」にマッチします.最初のグループ「\(.\)」は「\1」で,二番目のグループ「\([a-z]\)」は「\2」で参照できます.このグループ化と参照はとても便利です.グループ化は「\(グループ化\)」で指定します.参照は「\参照番号」です. このグループ化と参照は,正規表現を使った置換に使えます.例えば,ファイル中の文字列「12:33:47.347text-hoge:34.54」のような記述が大量にある場合を考えます.「整数,整数,:, 整数,整数, :, 整数, 整数, .」の最後のピリオドをマイナス記号「-」に変換することを考えます.Emacs では以下のようにします.
以上で変換が可能です.要するに,正規表現を使った置換でも,置換する文字列の中にグループの参照が使えます.これはとても便利な機能です. リモートファイルの編集 (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 ではじめます. Windowsplink で接続するためには,Putty でサーバーに接続できるようにします.接続の確認ができたならば,Emacs でリモートファイルへの編集が可能になります. 接続は,/plink:セッション名:パス とします.具体的には,次のとおりです. Find file: /plink:セッション名:/リモートディレクトリ/ファイル名 セッション名は,PuTTY でリモートに接続する時の「Saved Sessions」に現れる名前です. LinuxLinux では,/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 --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」に記載します. LinuxLinux の 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 に記述します. WindowsWindows の 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」の保管場所は以下のとおりです.
ページ作成情報参考資料
更新履歴
|