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 の場合は,plink.exe を使います.そのために,Putty をインストールします.インストールは,ローカスホスト (Windows) の設定が参考になります.そして,plink.exe を環境変数の Path に加えます.以上で設定は完了です. リモートの PC に SSH で接続できれば,Emacs でリモートファイルの編集が可能になります. 使い方使い方は簡単で,通常のファイルをオープンする間隔で C-x C-f ではじめます. WindowsWindows では,/plink:ユーザー名@ホスト名:パス とします.具体的には,次のとおりです. Find file: /plink:hoge@www.fuga.jp:/home/hoge 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 の設定ファイルは,以下のとおりです. ;================================================================ ; いろいろな設定 ;================================================================ (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 の設定ファイルは,以下のとおりです. ;; ================================================================ ;; いろいろな設定 ;; ================================================================ (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」の保管場所は以下のとおりです.
ページ作成情報参考資料
更新履歴
|