約 2,604,127 件
https://w.atwiki.jp/anemonefishlab/pages/17.html
C -x -w 名前をつけて保存 C -x -s 上書き保存 C -x -c emacs の終了
https://w.atwiki.jp/programming_note/pages/29.html
文字コードの編集 .emacs の編集 c+x Ret + f で文字コード指定
https://w.atwiki.jp/nkym_memo/pages/150.html
;; .emacs ;; Last Updated 2011/07/08 Fri 08 10 25 (if window-system (progn ;; 文字の色を設定 (add-to-list 'default-frame-alist '(foreground-color . "white")) ;; 背景色を設定 (add-to-list 'default-frame-alist '(background-color . "gray7")) ;; カーソルの色を設定 (add-to-list 'default-frame-alist '(cursor-color . "SlateBlue2")) ;; ;; マウスポインタの色を設定 ;; (add-to-list 'default-frame-alist '(mouse-color . "SlateBlue2")) ;; ;; モードラインの文字の色を設定 ;; (set-face-foreground 'modeline "white") ;; ;; モードラインの背景色を設定 ;; (set-face-background 'modeline "MediumPurple2") ;; ;; 選択中のリージョンの色を設定 (set-face-background 'region "Dark Slate Grey") ;; ;; モードライン(アクティブでないバッファ)の文字色を設定 ;; (set-face-foreground 'mode-line-inactive "gray30") ;; ;; モードライン(アクティブでないバッファ)の背景色を設定 ;; (set-face-background 'mode-line-inactive "gray85") )) ;;auto-install.elのインストール手順 ;; $mkdir -p ~/.emacs.d/auto-install ;; cd ~/.emacs.d/auto-install ;; wget http //www.emacswiki.org/emacs/download/auto-install.el ;; emacs --batch -Q -f batch-byte-compile auto-install.el ;;;Emacs Lispインストーラを利用 (add-to-list 'load-path "~/.emacs.d/auto-install") (add-to-list 'load-path "~/.emacs.d/plugins/yasnippet-0.6.1c/") ;;; install-elisp-from-emacswiki "auto-install.el" (require 'auto-install) ;;起動時にEmacswikiのページを補完候補に加える ;(auto-install-update-emacswiki-package-name t) ;;install-elisp.el互換モード (auto-install-compatibility-setup) ;;ediff関連のバッファを一つのフレームにまとめる (setq ediff-window-setup-function 'ediff-setup-windows-plain) ;================================================================================ ; 基本設定 ;================================================================================ ;; スタートアップを非表示 (setq inhibit-startup-screen -1) ;; ビープ音を消す (setq ring-bell-function 'ignore) ;; 現在行に色をつける (global-hl-line-mode 1) ;; その行の色 (set-face-background 'hl-line "black") ;; 履歴を次回Emacs起動時にも保存する (savehist-mode 1) ;; 対応する括弧を光らせる (show-paren-mode 1) ;; カーソルの位置が何文字目かを表示する (column-number-mode t) ;; バックアップファイルを作らない (setq backup-inhibited t) ;; Xでのクリップボードを共有 (setq x-select-enable-clipboard t) ;; yes-or-noをy-or-nに省略 (defalias 'yes-or-no-p 'y-or-n-p) ;; 行の先頭でC-kを一回押すだけで行全体を消去する (setq kill-whole-line t) ;; ツールバーを非表示 (tool-bar-mode -1) ;; メニューバーを非表示 (menu-bar-mode -1) ;; 圧縮されたファイルも編集できるようにする (auto-compression-mode t) ;; スクロールを一行ずつにする (setq scroll-step 1) ;;; 現在の関数名をモードラインに表示 (which-function-mode 1) ;;; emacsclient ;; ファイルを現在のemacsで開く (server-start) ;;------------------------ キーバインドの変更 ---------------------------------- ;; 指定の行に移る (global-set-key "\M-g" 'goto-line) ;; undo (global-set-key "\C-z" 'undo) ;; ウィンドウの移動をM-tに (global-set-key "\M-t" 'other-window) ;; C-hをBackSpaceに (global-set-key "\C-h" 'delete-backward-char) ;; M-x compile を f5 に (global-set-key [f5] 'compile) ;;;------------------- 初期フレームの設定 ------------------------------------ (setq initial-frame-alist (append '( (width . 45) ; フレーム幅(文字数) (height . 66)) ; フレーム高(文字数) initial-frame-alist)) ;;; 新規フレームのデフォルト設定 (setq default-frame-alist (append '((width . 45); フレーム幅(文字数) (height . 66)); フレーム高(文字数) default-frame-alist)) ;;; ファイル更新日を自動的に書き換える。 ;; ファイルの頭に "last updated "をつけくわえればよい (require 'time-stamp) ;; 日本語で日付を入れたくないのでlocaleをCにする (defun time-stamp-with-locale-c () (let ((system-time-locale "C")) (time-stamp) nil)) (if (not (memq 'time-stamp-with-locale-c write-file-hooks)) (add-hook 'write-file-hooks 'time-stamp-with-locale-c)) (setq time-stamp-active t) (setq time-stamp-start "Last Updated ") (setq time-stamp-format "%04y/%02m/%02d %3a %02H %02M %02S") (setq time-stamp-end " ") ;;;Last Updated の後に空白2つ以上いれると置換 ;;; タイトルバーにファイル名を表示する (setq frame-title-format (format "emacs@%s %%f" (system-name))) ;;; ファイルの自動挿入 (auto-insert-mode) ;; 自動挿入するファイルのあるディレクトリ ;; 最後の/は必須 (setq auto-insert-directory "~/.emacs.d/insert/") ;; 自動挿入するファイル (define-auto-insert "\\.c" "c-template.c") ;================================================================================ ;;; viewer.el view-modeの設定 ;; M-x install-elisp-from-emacswiki viewer.el ;; ;; C-x C-rでview-modeでファイルを開く (setq view-read-only t) ;; 書き込み不能な場合はview-modeを抜けないように (require 'viewer) (viewer-stay-in-setup) ;; .log .out .datファイルをview-modeで開く (setq view-mode-by-default-regexp "\\.log") (setq view-mode-by-default-regexp "\\.out") (setq view-mode-by-default-regexp "\\.dat") ;;; view-mode時にモードラインに色をつける ;; 色名を指定 (setq viewer-modeline-color-unwritable "tomato") (setq viewer-modeline-color-view "orange") (viewer-change-modeline-color-setup) ;; view-mode時のキーバインド (define-key view-mode-map "h" 'backward-char) (define-key view-mode-map "j" 'next-line) (define-key view-mode-map "k" 'previous-line) (define-key view-mode-map "l" 'forward-char) (define-key view-mode-map "J" 'View-scroll-line-forward) (define-key view-mode-map "K" 'View-scroll-line-backward) (define-key view-mode-map "b" 'scroll-down) (define-key view-mode-map " " 'scroll-up) ;; ;; bm.el (define-key view-mode-map "m" 'bm-toggle) (define-key view-mode-map "[" 'bm-previous) (define-key view-mode-map "]" 'bm-next) ;; view-modeを有効・無効にする ;; 0.04秒以内に jk を同時押しでview-modeに移行 (require 'key-chord) (setq key-chord-two-keys-delay 0.04) (key-chord-mode 1) (key-chord-define-global "jk" 'view-mode) ;================================================================================ ;;; redo+.el (require 'redo+) ;; M-zに設定 (global-set-key "\M-z" 'redo) (setq undo-no-redo t); 過去のundoがredoされないようにする ;; 大量のundoに耐えられるようにする (setq undo-limit 600000) (setq undo-strong-limit 900000) ;;;fullscreen.el (require 'fullscreen) ;;;-------------------- recentf-ext.el -------------------------- ;; install-elisp-from-emacswiki recentf-ext.el ;; 保存しておく数 (setq recentf-max-saved-items 3000) ;; 最近使ったファイルに加えないファイルを正規表現で指定する (setq recentf-exclude '("/TAGS$" "/var/tmp/")) (require 'recentf-ext) ;; f8をショートカットキーに (global-set-key [f8] 'recentf-open-files) ;;; auto-complete.el ;; install-elisp-from-emacswiki auto-complete.el ;(require 'auto-complete) ;(global-auto-complete-mode 1) ;;;col-highlight.el ;; auto-install-batch col-highlight.el ;(require 'col-highlight) ;(column-highlight-mode 1) ;;何もしないでいるとハイライトを始めるようにする場合 ;(toggle-highlight-column-when-idle 1) ;(col-highlight-set-interval 3) ;;;============================= hippie-expand ==================================== ;;; 略語展開の順を設定 (setq hippie-expand-try-functions-list '(try-expand-dabbrev try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill try-complete-file-name-partially try-complete-file-name try-expand-all-abbrevs try-expand-list try-expand-line try-complete-lisp-symbol-partially try-complete-lisp-symbol)) ;; キーバインドの変更 C-; (global-set-key [?\C-;] 'hippie-expand) ;;; ipa.el (require 'ipa) ;;; 背景色 (set-face-background 'highlight "Corn Flower Blue") ;;;---------------------- sequential-command.el--------------------------------- ;;; M-x auto-install-batch sequential-command (require 'sequential-command-config) (sequential-command-setup-keys) ;================================================================================ ;;; smartchr.el ;; M-x install-elisp ;; https //github.com/imakado/emacs-smartchr/raw/master/smartchr.el (require 'smartchr) ;; once "", twice " (global-set-key (kbd "\"") (smartchr '("\"`!!'\"" "\""))) (add-hook 'c-mode-hook '(lambda () (local-set-key ( kbd "(") (smartchr '("( `!!' )" "()" "("))) (local-set-key ( kbd "\'") (smartchr '("\'`!!'\'" "\'"))) (local-set-key ( kbd "\,") (smartchr '("\, " "\,"))) (local-set-key (kbd "[") (smartchr '("[ `!!' ]" "["))) (local-set-key (kbd "=") (smartchr '("= " "==" "="))) )) (add-hook 'c++-mode-hook '(lambda () (local-set-key ( kbd "(") (smartchr '("( `!!' )" "()" "("))) (local-set-key ( kbd "\'") (smartchr '("\'`!!'\'" "\'"))) (local-set-key ( kbd "\,") (smartchr '("\, " "\,"))) (local-set-key (kbd "[") (smartchr '("[ `!!' ]" "["))) (local-set-key (kbd "=") (smartchr '("= " "== " "="))) )) (add-hook 'org-mode-hook '(lambda () (local-set-key ( kbd "$" ) ( smartchr '("" "$" ))) (local-set-key ( kbd "\{" ) ( smartchr '("\{`!!'\}" "\{" ))) )) ;;;----------------------- auto-save-buffers.el --------------------------------- ;; M-x install-elisp ;; http //homepage3.nifty.com/oatu/emacs/archives/auto-save-buffers.el (require 'auto-save-buffers) ;; アイドル0.5秒で保存 (run-with-idle-timer 0.5 t 'auto-save-buffers) (run-with-idle-timer 0.5 t 'auto-save-buffers "" ".ipa$") ;;; open-junk-file.el ;; M-x install-elisp-from-emacswiki open-junk-file.el ;; Usage M-x open-junk-file (require 'open-junk-file) (setq open-junk-file-format "~/junk/%Y-%m-%d-%H%M%S.") (global-set-key "\C-x\C-j" 'open-junk-file) ;;; bm.el ;; M-x install-elisp ;; http //cvs.savannah.gnu.org/viewvc/*checkout*/bm/bm/bm.el (setq-default bm-buffer-persistence nil) (setq bm-restore-repository-on-load t) (require 'bm) (add-hook 'find-file-hooks 'bm-buffer-restore) (add-hook 'kill-buffer-hook 'bm-buffer-save) (add-hook 'after-save-hook 'bm-buffer-save) (add-hook 'after-revert-hook 'bm-buffer-restore) (add-hook 'vc-before-checkin-hook 'bm-buffer-save) (global-set-key [f7] 'bm-toggle) (global-set-key "\C-xp" 'bm-previous) (global-set-key "\C-xn" 'bm-next) ;;; twittering-mode (add-to-list 'load-path "~/.emacs.d/twittering-mode-1.0.0/") (require 'twittering-mode) ;; Show icons (setq twittering-icon-mode t) ;; Update your timeline each 300 seconds (5 minutes) (setq twittering-timer-interval 30) (add-hook 'twittering-mode-hook (lambda () (mapc (lambda (pair) (let ((key (car pair)) (func (cdr pair))) (define-key twittering-mode-map (read-kbd-macro key) func))) '(("F" . twittering-friends-timeline) ("R" . twittering-replies-timeline) ("U" . twittering-user-timeline) ("W" . twittering-update-status-interactive))))) ;;;================== Latex ======================================== ;; 日本語コードをeuc-japanに (set-language-environment "Japanese") (set-default-coding-systems 'euc-japan) (set-terminal-coding-system 'euc-japan) ;;; Yatex (setq YaTeX-inhibit-prefix-letter nil) (setq dvi2-command "xdvi -geo +0+0 -s 7") ;;;reftex (add-hook 'latex-mode-hook 'turn-on-reftex) ; with Emacs latex mode (add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode (add-hook 'yatex-mode-hook 'turn-on-reftex) ; with YaTeX mode ;;------------------- 行番号の表示 --------------------------------- (autoload 'setnu-mode "setnu" nil t) (global-set-key [f12] 'setnu-mode) ;;========================== kmacro-save =============================== (defvar kmacro-save-file "~/.emacs" "キーボードマクロを保存するファイル") (defun kmacro-save (symbol) (interactive "name for last kbd macro ") (name-last-kbd-macro symbol) (with-current-buffer (find-file-noselect kmacro-save-file) (goto-char (point-max)) (insert-kbd-macro symbol) (basic-save-buffer))) ; 現在行をコピー (fset 'select-this-line "\C-e\C-@\C-a\M-w") (global-set-key [?\C-\,] 'select-this-line) ; 文末に;を入力 (fset 'insert-statement-end "\C-e;\C-j") (global-set-key [?\C-\.] 'insert-statement-end) ; {}を改行してインデント (fset 'parentheses-and-indent "\C-e{\C-j\C-j}\C-p") (global-set-key [?\M-\[] 'parentheses-and-indent) ; インデントして次の行へ (fset 'indent-and-next "\C-i\C-n") (global-set-key [?\M-i] 'indent-and-next) ;;------------- yasnippet.el ------------------------------- (require 'yasnippet-config) (yas/setup "~/.emacs.d/plugins/yasnippet-0.6.1c") ;;------------- iswitchb.el ------------------------------- ;; バッファ切り替えを部分文字列で可能に (iswitchb-mode 1) (setq read-buffer-function 'iswitchb-read-buffer) (setq iswitchb-regexp nil) ;; 新しいバッファ作成するときは聞かない (setq iswitchb-prompt-newbuffer nil) ;; uniquify.el (require 'uniquify) ;; filename dir の形式 (setq uniquify-buffer-name-style 'post-forward-angle-brackets) ;; *で囲まれたバッファ名は対象外にする (setq uniquify-ignore-buffers-re "*[^*]+*") ;;---------------html-helper-mode------------------------------ (require 'html-helper-mode) (require 'html-mode) (require 'tempo)
https://w.atwiki.jp/pcmemo/pages/21.html
Emacs キーバインド c-f 次の文字 c-b 前の文字 c-n 次の行 c-p 前の行 c-a 行頭 c-e 行末 M-f 次の単語 M-b 前の単語 M-a 文頭 M-e 文末 c-v 1画面進む M-v 1画面戻る c-l カーソルが中央になるよう画面を描きなおす c-x c-u undo c-_ undo c-y キルリングから貼り付け M-y 貼り付ける文字列の切り替え(キルリングを遡る) M-g g 指定行へジャンプ c-x c-f ファイルを開く c-x c-s ファイルをセーブ 文字コード指定再読み込み C-x RET r fundamental-mode fundamental-modeは最も基本的なモードであり、hookを実行しないので、カスタマイズできない 画面端で折り返さない M-x set-variable truncate-lines 1(nil以外の値) 戻すとき M-x set-variable truncate-lines nil 水平スクロール C-x C-x
https://w.atwiki.jp/ntemacs/pages/82.html
なぜ、Emacs を使っているか? 逆説的かもしれませんが、Emacsキーバインドが使えるカスタマイズブルなエディタだから です。 私は Windows を使っています。Windows は次の設定により、OS のあらゆる操作を Emacsキーバインドにすることができます。 Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版) また、cygstart on Cygwin や wslstart on WSL と次の設定を組み合わせることにより、Emacs の Dired を Windows ドキュメントを開くファイラーとして利用することができます。 dired を OS と連携して使うための設定 Dired から 開いた Windows ドキュメントは、先の設定により Emacsキーバインドで操作できますので、Windows アプリケーションソフトがあたかも Emacs のプラグインソフトウェアであるかのような感覚で利用できます。 この操作感は、一度慣れてしまうと離れられないものです。そしてこの操作感を実現できているのは、モーダレスな Emacsキーバインドの存在 によるものだと思っています。 Emacs を Atom や VSCode などの他のエディタと比較する記事も見かけますが、Emacsキーバインドで使えるエディタであれば状況に応じて使い分ければ良いと思っています。次の設定をすれば、VSCode との相互利用も容易となります。 WSL の Emacs から VSCode でファイルを開くための設定 VSCode で開いているファイルを WSL の Emacs で開くための設定 いずれにせよ、私にとっては Emacsキーバインドで PC の操作を統一できることがとても重要で、その操作の基軸となるソフトウェアとして Emacs を選択して使っている。これが Emacs を使っている理由となっています。 ちなみに、私は vim も時々使います。顧客環境にあるサーバの設定変更などで必要になるときがあるためです。当然、カスタマイズしていない状態の vim を使うことになりますし、vim はそのような状態で使えれば良いと思っています。 一方、自分の PC で vim 使うことはほとんどありません。先に記載したようにすべてのアプリケーションソフトの操作性を統一したいからです。自分の PC からサーバの作業を行う場合でも、大抵は ssh の接続性があるので、Emacs の tramp を使って行っています。 vim の前身の vi は 5年間くらい使っていましたので、vim の優れた操作性はある程度は理解しているつもりです。しかし、Word や Excel など Windows アプリケーションソフトでも同じ操作性を!となると、Emacsキーバインドのようなモーダレスなキーバインドに統一する必要があります。そこで、そのようなキーバインドを持つエディタとして Emacs を選択し、OS のキーバインドを Keyhac の設定で Emacs-like にして使っている。これが現在の PC の利用環境となっています。
https://w.atwiki.jp/a0061882/pages/16.html
Emacsコマンド備忘録 取り消し等 Ctrl-g 現在のコマンド取り消し 保存関係 Ctrl-x, Ctrl-f ファイル読み込み Ctrl-x, Ctrl-s ファイル上書き保存 Ctrl-x, Ctrl-w 名前を付けて保存 終了 Ctrl-x, Ctrl-z ファイルを閉じる(BGでは走っている) Ctrl-x, Ctrl-c ファイルを閉じる
https://w.atwiki.jp/opentfc/pages/89.html
最後の変更箇所にジャンプする(goto-chg.el) Emacs Lisp インストーラ(auto-install.el) コピペで文字列検索 コメント,アンコメント 指定した行に移動 別名保存 行でソート キーバインドを確認 バッファをpsファイルに出力 フォント変更 置換や検索などで改行コードを使用する slimeで関数全体のインデントを自動で直す タイトルバーにファイル名を表示する メニューバーを消す ツールバーを消す 外部のアプリケーションにもコピペできるようにする 現在のキーバインドを確認する スクロールバーを右に表示する Time-stampの自動挿入 org-mode .emacsを再読み込みする 指定した行に移動 ファイルのエンコードの設定 同じ文字を連続して書く バッファ 最後の変更箇所にジャンプする(goto-chg.el) インストール M-x install-elisp-from-emacswiki goto-chg.el .emacs (require goto-chg) (define-key global-map (kbd " f8 ") goto-last-change) (define-key global-map (kbd "S- f8 ") goto-last-change-reverse) Emacs Lisp インストーラ(auto-install.el) EmacsWikiからダウンロードして ~/.emacs.d/auto-install 以下に保存する ~/.emacs.d/auto-install.el をバイトコンパイルする .emacs に加える設定 ;;; auto-install.el ;; (install-elisp-from-emacswiki "auto-install.el") (require auto-install) ;; auto-installによってインストールされるEmacs Lispをロードパスに加える ;; デフォルトは ~/.emacs.d/auto-install/ (add-to-list load-path auto-install-directory) ;; 起動時にEmacsWikiのページ名を補完候補に加える (auto-install-update-emacswiki-package-name t) ;; install-elisp.el互換モードにする (auto-install-compatibility-setup) ;; ediff関連のバッファを1つのフレームにまとめる (setq ediff-window-setup-function ediff-setup-windows-plain) auto-install.el 手動インストール $ mkdir -p ~/.emacs.d/auto-install $ cd ~/.emacs.d/auto-install $ wget http //www.emacswiki.org/emacs/download/auto-install.el $ emacs --batch -Q -f batch-byte-compile auto-install.el これらを実行するとバイトコンパイルされたファイル ~/.emacs.d/auto-install/auto-install.elc が生成される。 そしたら .emacs に上記の設定を加えEmacsを再起動する。 インストールのプロセス Lispファイルが置かれているURLが分かる場合は, M-x install-elisp を実行し,URLを入力する。 インストールする場合は, C-c C-c をすると,保存→バイトコンパイル→ロードが自動で行われる。 インストールしない場合は, C-c C-q EmacsWikiからインストール M-x install-elisp-from-emacswiki gistからインストール M-x install-elisp-from -gist コピペで文字列検索 検索したい文字列の先頭にカーソルを合わせ, C-s Enter(I-searchがSearchになる) C-fなどで文字列を選択 Enter コメント,アンコメント リージョンを決めて, M-; 指定した行に移動 M-g g 別名保存 C-x C-w 行でソート 昇順 M-x sort-lines 降順 C-u M-x sort-lines キーバインドを確認 キーバインド全てを表示 M-x describe-bindings 特定のキーバインドを調べるには M-x describe-key のあとに調べたいキーバインドを入力する。 バッファをpsファイルに出力 日本語が含まれるファイルの場合は .emacs かなんかで, (setq ps-multibyte-buffer non-latin-printer) と設定する。 カラー C-u M-x ps-print-buffer-with-faces モノクロ C-u M-x ps-print-buffer フォント変更 (frame-parameter nil font) ~/.Xresourcesの emacs*font ここに表示された文字列をコピペ 置換や検索などで改行コードを使用する 改行コード C-q C-j 改行+復帰 C-q C-j C-q C-m タブ C-q C-i slimeで関数全体のインデントを自動で直す 関数の中にカーソルをおいて(どこでもいい) C-c M-q タイトルバーにファイル名を表示する (setq frame-title-format (format "emacs@%s %%f" (system-name))) メニューバーを消す (menu-bar-mode nil) ツールバーを消す (tool-bar-mode nil) 外部のアプリケーションにもコピペできるようにする 標準のコピーをクリップボードにコピーするようにする。 .emacsに以下を追加する。 (global-set-key "\M-w" clipboard-kill-ring-save) 現在のキーバインドを確認する キーバインドの一覧を表示する。 M-x describe-bindings 特定のキーのバインドを探す。 M-x describe-key の後にキーを入力。 スクロールバーを右に表示する (set-scroll-bar-mode right) Time-stampの自動挿入 .emacsに以下を挿入 ;;; time-stamp ;;; 最終更新日の自動挿入 ;;; ファイルの先頭から 8 行以内に Time-stamp または ;;; Time-stamp " " と書いてあれば、セーブ時に自動的に日付が挿入される (require time-stamp) ;; 日本語で日付を入れたくないのでlocaleをCにする (defun time-stamp-with-locale-c () (let ((system-time-locale "C")) (time-stamp) nil)) (if (not (memq time-stamp-with-locale-c write-file-hooks)) (add-hook write-file-hooks time-stamp-with-locale-c)) (setq time-stamp-format "% y-%02m-%02d %3a %02H %02M %02S %Z") .emacsを再読み込みする M-x load-file [RET] ~/.emacs [RET] 指定した行に移動 M-x goto-line M-g g ファイルの文字コードの設定 C-x RETURN f と入力後、所望のコードを示す文字列を入力する。 設定用文字列とその意味 euc-jp 日本語 EUC (改行コードが現在のものを保持) junet 日本語 JIS (改行コードが現在のものを保持) sjis 日本語 Shift-JIS (改行コードが現在のものを保持) utf-8 iso-2022-jp 同じ文字を連続して書く 例)「a」を100個書く ESC 1 0 0 a バッファ 複数のバッファの取り扱い C-x b のあとに入力するもの Emacsの動作 新しいバッファの名前 ファイルと結びついていない新しいバッファを作り,そこに移動 既存なバッファの名前 そのバッファに移動(バッファがファイルと結びついているかどうかにかかわらず) 複数の複数のバッファの保存 C-x s (save-some-buffers)をタイプすれば,バッファ全部を一度に保存できる。 それぞれのバッファについて,yと答えれば保存するし, nと答えれば保存しない。 回答を省略しすべて保存する場合は!。 このバッファは保存するが,残りのバッファは保存したくないときはピリオド.をタイプする。 バッファを閉じる C-x k バッファ名 バッファの削除 バッファがファイルと結びついていれば, バッファを削除する前に変更結果を保存するかEmacsがきいてくる。
https://w.atwiki.jp/shirayuu/pages/18.html
Unix 系の中で、2大エディタの1つである Emacs に関する設定の記述。 .emacs.el の設定 Emacs で、anthy-el を使うanthy-el のインストール .emacs.el の記述。 Emacs で、M+ Font (Bitmap Font) を使う。M+ Font がインストールされているか 記述場所 動作確認 Emacs server を使う。同じウインドウで開きつづける 設定手順 環境変数の設定 確認 .emacs.el の設定 主な参考元は以下のとおりです。本当に、ありがとうございます。このような方々がおられるからこそ、快適になります。 http //d.hatena.ne.jp/bluerepliroid/20071227/1197882707 http //www.cozmixng.org/~kou/emacs/dot_emacs http //coderepos.org/share/browser/dotfiles/emacs/shyouhei/.emacs.d/elisp/configs.el ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 他の elisp の設定を読み込む ;;;;;;;;;;;;;;;;;;;;;;;;;; (setq load-path (cons "~/.emacs.d/" load-path)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Emacs の 表示関係を変更 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; title bar にファイル名を表示 ;;(setq frame-title-format "%f") (setq frame-title-format (format "emacs@%s %%f" (system-name))) ;; tool bar を表示させない (tool-bar-mode 0) ;; menu bar を表示させない (menu-bar-mode -1) ;; スプラッシュを非表示にする (setq inhibit-startup-message t) ;; 行番号・桁番号を modeline に表示する (line-number-mode t) ; 行番号 (column-number-mode t) ; 桁番号 ;;; 対応する括弧を光らせる。 (show-paren-mode 1) ;;; 終了時にオートセーブファイルを消す (setq delete-auto-save-files t) ;;; カーソルの点滅を止める (blink-cursor-mode 0) ;;; カーソルの位置が何文字目かを表示する (column-number-mode t) ;;; カーソルの位置が何行目かを表示する (line-number-mode t) ;;; スクロールを一行ずつにする (setq scroll-step 1) ;;; スクロールバーを右側に表示する (set-scroll-bar-mode 'right) ;;; 最終行に必ず一行挿入する (setq require-final-newline t) ;;; 一行が 80 字以上になった時には自動改行する (setq fill-column 80) (setq-default auto-fill-mode t) ;;; モードラインに時間を表示する (display-time) ;;; 現在の関数名をモードラインに表示 (which-function-mode 1) ;;行間 (setq-default line-spacing 3) ;; 無駄な空行に気付きやすくする (setq-default indicate-empty-lines t) ;;文字の色つけ (global-font-lock-mode t) ;;Ctrl-Hでバックスペース (global-set-key "\C-h" 'backward-delete-char) ;;警告音を消す (setq visible-bell t) ;; リージョンに色をつける (暫定マークモード) (transient-mark-mode 1) ;; bs-showを使用する (global-set-key "\C-x\C-b" 'bs-show) ;; テキストの折り返し無効 (setq-default truncate-partial-width-windows t) (setq-default truncate-lines t) ;;フレームのタイトル指定 (setq frame-title-format (concat "%b - emacs@" system-name)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 補完関係 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; 補完時に大文字小文字を区別しない (setq completion-ignore-case t) ;;; 強力な補完機能を使う ;;; p-bでprint-bufferとか ;;(load "complete") (partial-completion-mode 1) ;;; 補完可能なものを随時表示 ;;; 少しうるさい (icomplete-mode 1) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 文字表示位置関係 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;整数で指定するとピクセル数で、少数で指定すると ;;行の高さに対して相対値で設定されます。 (setq-default line-spacing 4) ;;; 最終行に必ず一行挿入する (setq require-final-newline t) ;;; 一行が 80 字以上になった時には自動改行する (setq fill-column 80) (setq-default auto-fill-mode t) ;;;;;;;;;;;;;;;;;;;;;; ;; カーソル移動設定 ;;;;;;;;;;;;;;;;;;;;;; ;;カーソル移動を論理行ではなく、物理行(見たまま)単位で移動する。 (require 'physical-line) (setq-default physical-line-mode t) ;; dired-mode は論理行移動のままにする. (setq physical-line-ignoring-mode-list '(dired-mode)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 日本語設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (set-language-environment "Japanese") ;; 文字コード関連 (set-terminal-coding-system 'utf-8-unix) (set-keyboard-coding-system 'utf-8-unix) (set-buffer-file-coding-system 'utf-8-unix) (setq default-buffer-file-coding-system 'utf-8-unix) (prefer-coding-system 'utf-8-unix) (set-default-coding-systems 'utf-8-unix) (setq file-name-coding-system 'utf-8-unix) (set-locale-environment "ja_JP.UTF-8") ;Ctrol + \ 無効 (mozc 使う関係で無効化する) (global-set-key "\C-\\" nil) Emacs で、anthy-el を使う emacs での日本語入力は、インプットメソッドからの入力と Emacs 自体の漢字エンジンを使う方法があります。 今回は、emacs の漢字エンジンに anthy を使おうというものです。 anthy-el のインストール ubuntu では apt で、、 $ sudo apt-get install anthy-el とインストールできます。 .emacs.el の記述。 Anthy Wiki を参考にして。 ~/.emacs.el に、以下の内容を追記すれば日本語入力ができます。 ; 日本語をデフォルトにする。 (set-language-environment "Japanese") ; anthy.el をロードする。 (load-library "anthy") ; japanese-anthy をデフォルトの input-method にする。 (setq default-input-method "japanese-anthy") Emacs で、M+ Font (Bitmap Font) を使う。 M+ Font がインストールされているか $ xlsfonts | grep mplus で確認。 記述場所 ~/.emacs.el に記述する方法もあるが、結構面倒くさいらしいので、 ~/.Xresources に次の記述を行う。 ! ~/.Xresources Emacs.Fontset-0 -mplus-gothic-*-r-normal--10-*-*-*-*-*-fontset-mplus_j10,\ ascii -mplus-gothic-medium-r-normal--10-*-*-*-*-*-iso8859-1 Emacs.Fontset-1 -mplus-gothic-*-r-normal--12-*-*-*-*-*-fontset-mplus_j12,\ ascii -mplus-fxd-medium-r-semicondensed--12-*-*-*-*-*-iso8859-1 Emacs.font fontset-mplus_j12 動作確認 反映されたか確認するために、 $ xrdb -merge .Xresources $ emacs Emacs server を使う。 同じウインドウで開きつづける 特に設定を行わない Emacs では $ emacs と起動するごとに新たなウインドウが開くと思う。 $ emacs filename と記述したとき、既にウインドウが開いている場合はそのウインドウに表示させたいときは 次のような設定を行う。 設定手順 手順1.~/.emacs.el の追記 ;; ~/.emacs.el ;; emacs server の起動 (server-start) 手順2. 次のスプリクトを作成する #!/bin/sh # filename emacs # emacs と言う名前の 全 pid のうち番号の最も若いものを取得 pgreph=`pgrep emacs | head -1` # XIM を起動させない XMODIFIERS=@im=none # 取得した pid は、起動したスプリクトの pid であるか if [ $pgreph -eq $$ ] then /usr/bin/emacs $* # 既に emacs が起動しているとき elif [ -z "$1" ] then # 引数がないときは、起動させない echo "Usage $0 filename " else # emacs client で起動 /usr/bin/emacsclient "$@" fi このスプリクトをemacs という名前にし ~/bin/ に格納する。 (~/bin/ は、自分で作成した起動スプリクトなどを入れる場所とする) 環境変数の設定 環境変数path に~/bin/ を通す。 コマンドでは, $ export PATH=~/bin $PATH と行えばよい。 しかし、起動するたびにコマンドを打ち込むのは面倒なので, ~/.bashrc などに次の内容を追記 (zsh の場合は,.zshrc) # .bashrc export PATH=~/bin $PATH 反映させるために、 $ source .bashrc 確認 touch test.txt emacs ~/.emacs.el emacs test.txt 同じウインドウに表示された?
https://w.atwiki.jp/ntemacs/pages/69.html
【トピック】 ● WSL_トピック ● Docker_トピック ● Xpra_トピック 【お知らせ】 2022/10/14 追記 本ページの設定を多少変更すると WSLg で動かすこともできます。WSLg ではキーボードの設定がうまく行われない場合があるようですので、その場合は以下のどちらかの行の設定を行ってください。 setxkbmap -layout us setxkbmap -layout jp 2022/10/14 追記 X11 サーバを GWSL とするように、全体的な見直しを行いました。 2022/04/19 追記 2021年の補完UI事情とEmacs28に標準添付されるfido-vertical-modeについて https //qiita.com/tadsan/items/f1738cb463b1ec536f84 2022/01/04 追記 興味深いコマンドを2つ紹介します。 https //linuxcommand.net/stdbuf/ https //vmi.jp/software/cygwin/cocot.html 2021/12/10 追記 2019/04/22 追記 で winsudo というコマンドを紹介しておりますが、gsudo というコマンドがあるようです。まだ使ってみてはおりませんが、紹介します。 https //qiita.com/_masa_u/items/a799745d70b30c32a03b https //github.com/gerardog/gsudo 2021/09/17 追記 WSL2 で WSLg と GWSL を利用する場合の比較をしてみました。GWSL は VcXsrv を利用しているので、GWSL に記載してある内容は VcXsrv を利用する場合にも当てはまります。 <GWSL> ・新しい Microsoft IME を選択しているとカーソルのレスポンスが悪くなる(古いMicrosoft IME や Google日本語入力ではこの問題は発生しません) ・Emacs 起動時にウインドウが小さく表示される問題が発生する( 13) に回避対策の記載があります) ・DISPLAY 環境変数を独自に設定する必要がある( 0 では動きません) <WSLg> ・カーソルが遅くなる問題が発生しない ・Emacs 起動時にウインドウが小さく表示される問題が発生しない ・DISPLAY 環境変数が 0 で動作する ・Windows 10 では動作しない ⇒ (2022/11/18 追記)Windows 10 21H1 以降では、パッチ KB5020030 をインストールし、Microsoft Store版 WSLv1.0.0 をインストールすると動作するようです。 ・Emacs を最大化しても完全な最大化とならない(下部の最大化がならない部分から背景が見えてしまいます) ⇒ (2022/11/18 追記)Microsoft Store版 WSLv1.0.0 では改善していることを確認しました。 ・ウインドウ枠が独自のため、アクティブなウインドウの状況が分かりづらい(Windows でアクティブウインドウのタイトルバーの色を変える設定にしていても、WSLg のウインドウは対象になりません) ・Windows のウィンドウの操作作法が利用できない(画面の上画面外へのドラックで画面の最大化がされるなどの操作が使えません) 現時点では、後半の2つの問題を許容できないことから、GWSL を選択して利用しています。 2021/08/09 追記 X Window のキーリピートの速度を変更するには、以下のようなコマンドで対応できます。なお、 2020/08/08 追記 に記載しているとおり、VcXsrv は 新しい Microsoft IME と相性が良くありません。VcXsrv を利用する場合は、IME に Google 日本語入力や古い Microsoft IME を選択するようにしてください。 $ xset r rate 400 40 2021/06/25 追記 Emacs の設定は、leaf.el を使うのが人気のようです。お試しください。 https //qiita.com/conao3/items/347d7e472afd0c58fbd7 2021/06/17 追記 本ページでは、補完 UI として helm を紹介していますが、主流は変わりつつあるようです。以下が参考となりますので紹介させていただきます。 https //blog.tomoya.dev/posts/a-new-wave-has-arrived-at-emacs/ 2021/02/05 追記 本ページの内容は WSL2 でも動作します。DrvFs や VolFs の記載がある場合には、Windows 側のファイルシステム、WSL2 側のファイルシステムと読み替えてください。 2020/08/08 追記 Windows 10 ver 2004 の WSL/WSL2 で Emacs を VcXsrv に接続して使っていると、カーソル移動後の停止がワンテンポずれる症状が発生します。これは、IME に新しい Micorosoft IME が選択されているときに発生することが分かりました。IME に Google 日本語入力や古い Microsoft IME が選択されているときには発生しません。WSL/WSL2 の Emacs では、mozc_emacs_helper.exe を使って Google 日本語入力と連携して日本語入力を行っているため、なかなか気づきませんでした。 ⇒(2020/08/23 追記)この現象は MobaXterm の X サーバでは発生しないようです。 2020/08/06 追記 WSL2 から VcXsrv(GWSL の中でも利用)へのアクセスを許可する方法として、vcxsrv.exe の起動時に -ac オプションを付ける(Disable access control とする)方法があります。この方法は、以下のサイトで紹介しているようなセキュリティ的な問題が発生するので、避けることをお勧めします。 https //itpass.scitec.kobe-u.ac.jp/~itpass/hiki/hiki.cgi?%5BExp2010%5DX+Window+System#X+-E3-81-AE-E3-82-BB-E3-82-AD-E3-83-A5-E3-83-AA-E3-83-86-E3-82-A3 アクセスをコントロールする方法は、以下のようなものがあります。 xhost でアクセス許可を行う(説明の 10) に設定例あり) xauth でアクセス許可を行う ssh の -Y オプション(ForwardX11Trusted)を使う(-X オプション(ForwardX11)の場合、config に XAuthLocation の設定をしてもうまく機能しませんでした。ネットにも同様の報告があります。) ssh でポートフォワーディングをして使う 2020/07/14 追記 次のページを作成しました。この下の追記の設定とセットでご利用ください。 Windows の ssh から WSL2 の sshd に接続するための設定 2019/07/16 追記 ssh-agent-wsl を利用すると、Windows 側の ssh-agent を WSL から利用できるようです。 https //github.com/rupor-github/ssh-agent-wsl https //qiita.com/q1701/items/3cdc2d7ef7a3539f351d 次の設定を ~/.bash_profile に追加するのが良いと思います。 eval $( ssh-agent-wsl コマンドを置いた Windows のパス /ssh-agent-wsl -a ~/.ssh/ssh-agent-wsl.sock -r) ssh-add で登録した秘密鍵が保持されパスフレーズの入力が不要となるため、次の設定で紹介している wslemacs-start.exe との相性が良くなります。 WSL の emacsclient を Windows から利用するための設定 ⇒(2020/07/10 追記)同じ開発者から新しいプロジェクトがリリースされていました。 https //github.com/rupor-github/wsl-ssh-agent https //hnakamur.github.io/blog/2020/03/06/setup-wsl-ssh-agent/ 使ってみましたが、wsl-ssh-agent はまだ WSL2 で利用できないようですので、ssh-aget-wsl を使い続けることにしました。 2020/04/28 追記 新しい Linux ディストリビューションへのホームディレクトリの移行には、以下のバッチファイルをお試しください。バッチファイルですので、コマンドプロンプトからの起動となります。(変数の設定値は適宜変更してご利用ください。) set home_dir=user set src_distro=Ubuntu-18.04 set dst_distro=Ubuntu-20.04 wsl -d %dst_distro% -u root bash -c "mv /home/%home_dir% /home/%home_dir%.orig" wsl -d %src_distro% -u root bash -c "(cd /home; tar cvf - %home_dir%)" | wsl -d %dst_distro% -u root bash -c "(cd /home; tar xvf -)" 2019/09/20 追記 Xサーバを利用する際に「全角/半角」キーリピート問題が発生する場合には、次のページを参考に対応してください。(私は US キーボードを使っているため、この問題には遭遇していません。) https //seesaawiki.jp/w/kou1okada/d/20160905%3A%20Ubuntu%20%A4%CE%C6%FC%CB%DC%B8%EC%C6%FE%CE%CF%B5%A1%C7%BD%A4%CE%C9%D4%B6%F1%B9%E7 2019/08/09 追記 13) に「<フレームの高さを補正する設定>」の説明を追加しました。WSL Emacs on VcXsrv でフレームを開く際、高さが低く作成される状況が改善されます。 2019/04/22 追記 WSL から Windows の exe コマンドを管理者権限で実行するコマンド winsudo を公開しました。お試しください。 https //github.com/smzht/wsl-utils#-winsudo なお、このコマンドを利用する際は、【お知らせ】 の 2019/03/04 追記 に記載した「exec /dev/tty」の設定を解除する必要があります。解除時に利用できる exe コマンドを実行するためのコマンド win も併せて公開していますので、お試しください。 https //github.com/smzht/wsl-utils#-win 2019/04/19 追記 WSL で Emacs を使っている理由の大きな一つに、次の設定をすることにより Emacs の Dired で Windows ショートカットのハンドリングができることがあります。Windows ショートカットは Windows のデスクトップ環境で頻繁に使われており、ファイルシステムに依存していない一般ファイルであることから可搬性も高く(どこにでも移動や複写ができる)、Emacs の Dired で使えると非常に便利です。是非お試しください。 Windows ショートカットを dired と連携して使うための設定 WSL で NTFS シンボリックリンクや Windows ショートカットを作成するための設定 ディレクトリの Windows ショートカットがある場合、shell の cd コマンドでその Windows ショートカットを辿ることはできません。そのために、次の設定と組み合わせた利用をお勧めします。この設定は tramp の接続先でも動作します。 shellバッファ を簡単にポップアップするための設定 以上の設定は、すべて本ページで紹介しているものとなります。 2019/03/04 追記 Windows 10 1809 にアップデートしたところ、Emacs の shell-mode で exe コマンドを実行できなくなりました。(実行すると、プロンプトが帰ってこなくなります。)次のページで同様の問題が報告されています。 https //github.com/Microsoft/WSL/issues/3895 回避策として、以下の方法があるようです。 ipconfig.exe | cat のように、パイプで cat につなげる ipconfig.exe /dev/tty のように、/dev/tty にリダイレクトする 次の設定をする。(.bashrc に設定することで shell 起動時に有効にできます。ただし、【トピック】 の 2019/04/22 追記 に記載したとおり、不都合が発生するコマンドもありますので、ご留意ください。) $ exec /dev/tty 2019/03/13 追記 本設定で利用している Xサーバ VcXsrv(GWSL の中でも利用)について、次のページに不具合情報が報告されています。コピペ時の「–」の欠落などは注意が必要と思いました。内容を確認してみてください。 https //fujii.github.io/2018/08/30/emacs-on-wslinux/ ⇒(2021/09/17 追記)「–」の欠落の問題は、VcXsrv の最新のバージョンでは発生しないようです。 【本題】 Windows Subsystem for Linux で Emacs を使うための設定です。 ※ 以下では、WSL で Emacs を使うために推奨される設定のみを紹介しています。Emacs を使うための基本的な設定は別途必要です。 mozc_emacs_helper.exe で Windows 側の Google 日本語入力と連携可能。ユーザ辞書も一元管理! tramp で Linux サーバや Docker とも連携可能。GWSL(VcXsrv)を使っているので、X クライアントソフトも起動できる! eww でブラウザとしても利用可能。英語ページは google-translate で瞬時に翻訳! twitter も利用可能。アイコンも表示できるので、投稿者の識別が容易! 1) Windows 10 1903 以降をインストールする。 また、アクティブウインドウのタイトルバーの色を変更するための次の設定を有効にする。(オプション) https //www.softantenna.com/wp/tips/windows-10-change-titlebar-color/ ※ 設定すると、マルチディスプレイ使用時にアクティブウインドウの確認がし易くなります。 2) Microsoft Store から GWSL(X11 サーバアプリ)をインストールする。 https //opticos.github.io/gwsl/ https //opticos.github.io/gwsl/tutorials/manual.html 3) Windows Subsystem for Linux を有効にし、Microsoft Store から Ubuntu-22.04 をインストールした後、コンソールを起動する。 https //docs.microsoft.com/ja-jp/windows/wsl/install-win10 4) WSL に複数の Linux のディストリビューションをインストールしている場合は、コマンドプロンプトで次のコマンドを実行し、Ubuntu-22.04 ディストリビューションをデフォルトにしておく。(Windows 側から、bash.exe や wsl.exe を実行した際に使われる WSL ディストリビューションとなる。) wsl -l wsl -s Ubuntu-22.04 5) インターネットにプロキシを介して接続している場合は、.bashrc に http_proxy 等の環境変数を設定し、コンソールを再起動する。 6) 必要であれば sudo をパスワード無しで利用できるように設定する。 次のコマンドを実行し、 $ sudo -s # EDITOR=vi visudo 最終行に次の行を追加する。( username の部分は WSL の利用ユーザに変更する。) username ALL=(root) NOPASSWD ALL ※ wsl のユーザは sudo グループに所属しているため、%sudo の行以降に設定を追加する必要があるようです。 ※ /etc/sudoers.d ディレクトリ配下にファイルを置く方法もあります。この方法を採る場合は、sudo -s で root になってから作業を行うと、visudo -c でエラーが発生した場合に対処できると思います。 https //qiita.com/buchyanS/items/d240ea7e883bea734718 https //hnakamur.github.io/blog/2012/05/04/use-slash-etc-slash-sudoers-dot-d-slash/ 7) Ubuntu のアップデートおよび設定を行う。 $ sudo -E apt update $ sudo -E apt upgrade ※ プロキシが必要な環境下では、apt や add-apt-repository 実行時の sudo に -E オプションを付けて http* 環境変数を引き継ぐようにしてください。 http //qiita.com/aKenjiKato/items/18f9b8553f8ad4117d79 また、locale を変更する。 $ sudo -E apt install language-pack-ja language-pack-gnome-ja $ sudo update-locale LANG=ja_JP.UTF-8 必要であれば、日本語マニュアルをインストールする。 $ sudo -E apt install manpages-ja manpages-ja-dev さらに、タイムゾーンを JST にする。 $ sudo dpkg-reconfigure tzdata 8) Emacs 等をインストールする。 $ sudo -E apt install emacs emacs-el $ sudo -E apt install cmigemo ※ Ubuntu-22.04 では emacs-27 がインストールされます。emacs-28 をインストールしたい場合には、以下を実行してください。 $ sudo -E apt remove emacs emacs-el $ sudo -E apt autoremove $ sudo -E add-apt-repository ppa kelleyk/emacs $ sudo -E apt update $ sudo -E apt install emacs28 emacs28-el $ sudo -E apt install cmigemo 9) x11-xserver-utils パッケージをインストールする。 $ sudo -E apt install x11-xserver-utils 10) ログイン時の設定を行う。 ~/.bash_profile に次の設定を行う。 if which tasklist.exe /dev/null ! tasklist.exe | grep -q '^GWSL_vcxsrv'; then ( cmd.exe /c GWSL.exe /dev/null 2 1 sleep 3 if uname -v | grep -q 'Microsoft'; then export DISPLAY= 0 else export DISPLAY=$(ip route | awk '/^default/ {print $3; exit}') 0 xhost + $(ip -4 a show eth0 | grep -oP '(? =inet\s)\d+(\.\d+){3}') fi # access control を enabled にする xhost - ) fi [ -r ~/.bashrc ] source ~/.bashrc ※ 上記の設定は、22) で紹介している次の設定の wslemacs-start.exe を利用することにより、GWSL.exe を自動起動することを想定しています。 WSL の emacsclient を Windows から利用するための設定 ※ GWSL の内部から起動されている VcXsrv には、-noprimary オプションを付ける必要があります。VcXsrv のオプションを指定するには、GWSLアイコンの右クリック - XServer Profiles - Add A Profile で新しい Custom Profile を作成してください。設定後、メニューに追加された Custom profile を選択して有効とする必要があります。また、GWSL を一度終了し、wslemacs-start.exe を再起動するなどして上記のスクリプトを実行することで、X Window Server のセキュリティの設定が行われるようにしてください。なお、設定するオプションには次の値をお勧めします。 -multiwindow -clipboard -noprimary -wgl ※ VcXsrv のオプションは次のページを参照してください。 https //gist.github.com/ctaggart/68ead4d0d942b240061086f4ba587f5f ※ GWSL のメニューから、DPI Scaling Mode を選択することができます。初期値は「Linux」となっているようですが、私はリモートデスクトップ利用時に DPI の問題が発生したため、「Windows」に変更して利用しています。 ※ GWSL に X クライアントから接続できない場合は、次の対応をお試しください。 1. 「コントロールパネル」- 「システムとセキュリティ」- 「Windows Defender ファイアウォールによる PC の保護」を開き、メニュから「詳細設定」をクリックする 2. 「受信の規則」をクリックし、「GWSL VcXsrv windows xserver」と「GWSL PulseAudio server」の行があれば、全て削除する 3. Windows の GWSL アプリを起動する(既に起動していれば、再起動する) 4. VcXsrv のファイアウォールの通信許可設定ダイアログ画面が開くので、「パブリックネットワーク」のチェックボックスにチェックを入れ、通信を許可する また、~/.bashrc に次の設定を追加する。 if [ "$INSIDE_EMACS" ]; then TERM=eterm-color fi umask 022 if uname -v | grep -q 'Microsoft'; then export DISPLAY= 0 else export DISPLAY=$(ip route | awk '/^default/ {print $3; exit}') 0 fi unset LIBGL_ALWAYS_INDIRECT ※ LIBGL_ALWAYS_INDIRECT の設定は unset にしました。VcXsrv(GWSL の中で利用)の -wgl オプションとの組み合わせで、mesa の glxgears が動くことを確認しています。(ネットには、VcXsrv のオプションを -nowgl とすべきとの情報が多くありますが、-wgl で動いたので良しとしました。)次のページに関連する情報があります。 https //x.cygwin.com/docs/ug/using-glx.html https //www.web-dev-qa-db-ja.com/ja/xorg/libglalwaysindirect-1%E3%81%AF%E5%AE%9F%E9%9A%9B%E3%81%AB%E3%81%AF%E4%BD%95%E3%82%92%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F/957258497/ ※ Ubuntu が提供する .bashrc には、初めの方に次の設定があり、bash がインターラクティブモードで起動したとき以外は以降が実行されないようになっています。.bashrc に設定を追記する場合は、追記する場所にご留意ください。 # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac 11) 次のサイトから Migu 1M フォントをダウンロードして、ttf ファイルを ~/.local/share/fonts ディレクトリ配下にコピーする。(fonts ディレクトリ配下に、サブディレクトリを作って置いても大丈夫です。) http //mix-mplus-ipa.osdn.jp/migu/ ※ 生成が必要ですが Ricty 系もお勧めです。 本設定では使いませんが、Windows のフォントも WSL で使いたければ次のコマンドを実行する。 $ ln -s /mnt/c/Windows/Fonts ~/.local/share/fonts/windows 最後に次のコマンドを実行する。 $ fc-cache -fv 12) ~/.emacs.d/init.el 等に次のとおりのフォントの設定を行う。 ;; デフォルト フォント (set-face-attribute 'default nil family "Migu 1M" height 120) ;; プロポーショナル フォント (set-face-attribute 'variable-pitch nil family "Migu 1M" height 120) ;; 等幅フォント (set-face-attribute 'fixed-pitch nil family "Migu 1M" height 120) ;; ツールチップ表示フォント (set-face-attribute 'tooltip nil family "Migu 1M" height 90) ※ この設定は gnupack の init.el にある設定を転記したものです。 13) さらに ~/.emacs.d/init.el 等に次の設定を行う。 <色の設定> ;; 色を設定する (add-to-list 'default-frame-alist '(foreground-color . "white")) (add-to-list 'default-frame-alist '(background-color . "black")) <フレームの高さを補正する設定> (defun reset-frame-parameter (frame) (sleep-for 0.1) (set-frame-parameter frame 'height 32)) (add-hook 'after-make-frame-functions #'reset-frame-parameter) <coding-system の設定> (prefer-coding-system 'utf-8-unix) ;; プロセスが出力する文字コードを判定して、process-coding-system の DECODING の設定値を決定する (setq default-process-coding-system '(undecided-dos . utf-8-unix)) ※ 設定値の car を "undecided-dos" にしておくと、Windows コマンドの出力にも柔軟に対応できます。関連して 29) の説明も参照してください。 <shell の設定> (setq shell-file-name "/bin/bash") (setq shell-command-switch "-c") (setq explicit-shell-file-name shell-file-name) <migemo の設定> (setq migemo-command "cmigemo") (setq migemo-options '("-q" "--emacs")) (setq migemo-dictionary "/usr/share/cmigemo/utf-8/migemo-dict") (setq migemo-user-dictionary nil) (setq migemo-regex-dictionary nil) (setq migemo-coding-system 'utf-8-unix) (load-library "migemo") (migemo-init) 14) WSL のコンソールを再起動してから Emacs を起動し、X Window サーバ上に表示することを確認する。 15) 次を参考に emacs-mozc の設定を行う。 emacs-mozc を動かすための設定(WSL 設定編) ※ 以降はオプションです。 20) さらに次の設定を行う。これで、いろいろな操作が helm を通してできるようになる。 helm を使うための設定 21) さらに次の設定を行う。これで、find-file コマンドなどで Windows パスや UNC パスを直接利用可能となる。 Windowsパス と UNCパス を使えるようにするための設定(WSL 設定編) ※ この設定は、以降の 22) と 23) を使うために必要となります。 22) さらに次の設定を行う。これで、Windows 側から emacsclient が利用可能となる。 WSL の emacsclient を Windows から利用するための設定 23) さらに次の設定を行う。これで、dired で Windows ショートカットがシンボリックリンクのように利用可能となる。 Windows ショートカットを dired と連携して使うための設定 24) さらに次の設定を行う。これで、dired で ディレクトリのシンボリックリンクを実体のパスで開くことができるようになる。 dired でディレクトリのシンボリックリンクを実体のパスで開くための設定 ※ (setq-default find-file-visit-truename t) の設定を行っていない場合に意味のある設定となります。 25) さらに次の設定を行う。これで、dired で DrvFs ファイルシステム上に NTFS シンボリックリンクを作成できるようになる。また、Windows ショートカットも作成可能となる。 WSL で NTFS シンボリックリンクや Windows ショートカットを作成するための設定 ※ Windows ショートカットはファイルシステムに依存していないリンクファイルですので、ハンドリングが容易です。VolFs の他、tramp の接続先にも複写することができます。私は、DrvFs 上に置くリンクはできるだけショートカットを利用するようにしており、23) の設定をすることで dired から利用しています。 26) さらに次の設定を行う。これで、dired が Windows のファイラーのように利用できるようになる。 WSL で cygstart 的コマンドを使うための設定 dired を OS と連携して使うための設定 ※ こちらの設定もお勧めです。 singleton な動きをする cygstart 的コマンドを使うための設定 (WSL版) ※ 次の設定も行うと、Emacs で表示している URL を Windows のブラウザで開くことができます。 (require 'browse-url) (setq browse-url-browser-function 'browse-url-generic) (setq browse-url-generic-program "wslstart")) (global-set-key (kbd "C-c u") 'browse-url-at-point) 27) さらに次の設定を行う。これで、tramp の高速化が図られ、接続先の shell から Xクライアントが起動できるようになる。上記の「dired を OS と連携して使うための設定」と組み合わせると、xdg-open などを使ってリモートにあるドキュメント等が開けるようになる。(このページの最初の方にある画像の二番目のものは、この機能を使って表示したものです。) tramp を tramp-method “scp” で使うための設定 tramp による接続先で Xクライアント を実行するための設定 28) さらに次の設定を行う。これで、tramp 接続環境でも動作する shell-pop のような環境を利用できるようになる。 shellバッファ を簡単にポップアップするための設定 29) さらに次の設定を行う。これで、shell-mode で Windows のコマンドを発行しても、漢字が文字化けしなくなる。 shell-mode で複数の漢字コードを混在して利用できるようにするための設定 30) さらに次の設定を行う。これで Emacs のバッファの内容を Windows のテキストエディタを通して印刷できるようになる。 Notepad を使って印刷するための設定(WSL 設定編) 31) さらに次の設定を行う。これで Emacs から VSCode でファイルを開けるようになる。 WSL の Emacs から VSCode でファイルを開くための設定 32) さらに次の設定を行う。これで VSCode で開いているファイルを Emacs で開けるようになる。 VSCode で開いているファイルを WSL の Emacs で開くための設定 33) さらに次の「Emacs 全般で利用できる設定」や「説明ページを作るまでもない設定の紹介」の箇所にあるものから必要なものがあれば設定を行う。 https //w.atwiki.jp/ntemacs/ お勧めの設定は以下の辺りとなります。 helm から comint の入力履歴を検索するための設定 helm で peco もどきのコマンドを使うための設定 locate を使うための設定(WSL 設定編) ediff をスマートに使うための設定 elscreen を使うための設定 whitespace を使うための設定 cua-mode を使うための設定 multiple-cursors を使うための設定 google-translate を使いやすくするための設定 沢山開いているバッファをできるだけ一度に閉じるための設定 (global-set-key (kbd "M-c") (lambda () (interactive) (desktop-clear) (tramp-cleanup-all-connections))) カレントバッファを一発で閉じるための設定 (global-set-key (kbd "M-k") (lambda () (interactive) (kill-buffer (buffer-name)))) ウィンドウの右端で改行をするかどうかを切り替えるための設定 (global-set-key (kbd "C-c C- return ") 'toggle-truncate-lines) 横スクロールするための設定(キー設定が逆の感覚の方もいるかも) (global-set-key (kbd "C-,") 'scroll-left) ; のキー (global-set-key (kbd "C-.") 'scroll-right) ; のキー C-h を Backspace として使うための設定 https //qiita.com/takc923/items/e279f223dbb4040b1157 (define-key key-translation-map (kbd "C-h") (kbd " DEL ")) help の機能は、f1 キーで利用することができます。 34) 最後に次の設定を行う。これで Windows 全体を Emacsキーバインドで操作できるようになる。 Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版) 変更履歴 2017/05/23 このページを作成した。 2017/06/12 Emacs 起動時のエラーを抑制するため、LIBGL_ALWAYS_INDIRECT 環境変数の設定を追加した。 2017/07/04 色の設定を追加した。 2017/08/21 locale の設定を追加しました。 2017/08/21 Emacs-25 のインストールする方法を追記した。 2017/09/04 「w32-symlinks を dired と連携して使うための設定」を見直しバージョン「Windows ショートカットを dired と連携して使うための設定」のリンクに置き換えた。 2017/11/01 オプションの設定に「 WSL で NTFS シンボリックリンクを作成するための設定」を追加した。 2017/11/04 パスの途中に NTFS シンボリックリンクを含むファイルを削除しようとするとフリーズする問題の対策を追加した。 2017/11/06 Emacs を起動するスクリプトを追加し、VcXsrv が起動していない場合は事前に起動するように対応した。 2017/11/11 emacsclient を使うための説明を追記した。 2018/03/09 21) の設定を全面的に見直し、UNCパスの利用にも対応した。 2018/03/14 25) の設定を見直し、Windows ショートカットの作成にも対応した。 2018/03/15 29) に設定を新たに追加した。 2018/03/16 22) の説明の内容を整理した。 2018/03/20 30) の設定を wslstart を使った方法に見直した。 2018/03/21 26) の設定に browse-url を使うための設定を追記した。 2018/03/22 VcXsrv 上に立ち上げた Emacs でリージョンの選択をすると、選択しただけでリージョンの内容が Windows のクリップボードに登録される症状が発生していたのを対策した。 2018/03/22 21) の設定で、コンピュータ名が IPアドレスの UNC パスを mount した際でも正常に動作するように対応した。 2018/03/23 wsl コマンドを使っている設定について、高速化対策を行った。 2018/04/11 10) に日本語キーボードを使う場合に必要そうな設定とそのコメントを追記した。 2018/04/12 33) にお勧めの設定のリンクを追加した。 2018/05/11 8) に tramp 利用時の不具合についての対応策について追記した。 2018/05/11 7) にタイムゾーンを JST にする説明を追加した。 2018/06/19 8) に Emacs-26系で動作させるための説明を追記した。 2018/06/26 11) のフォントを置くディレクトリを、~/.fonts ディレクトリから ~/.local/share/fonts ディレクトリに変更した。 2018/07/30 13) に最低限必要な coding-system の設定を追記した。 2018/08/19 13) に cmigemo の設定を追記した。 2018/11/11 6) に sudo をパスワード無しで利用するための設定の説明を追加した。 2018/11/21 1) にアクティブウインドウのタイトルバーの色を変更するための設定の説明を追加しました。 2019/08/09 13) に「<フレームの高さを補正する設定>」の説明を追加した。 (function(i,s,o,g,r,a,m){i[ GoogleAnalyticsObject ]=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document, script , //www.google-analytics.com/analytics.js , ga ); ga( create , UA-40267130-1 , atwiki.jp ); ga( send , pageview );
https://w.atwiki.jp/nkym_memo/pages/30.html
;;auto-install.elのインストール手順 ;; $mkdir -p ~/.emacs.d/auto-install ;; cd ~/.emacs.d/auto-install ;; wget http //www.emacswiki.org/emacs/download/auto-install.el ;; emacs --batch -Q -f batch-byte-compile auto-install.el ;;;Emacs Lispインストーラを利用 (add-to-list 'load-path "~/.emacs.d/auto-install") ;;(install-elisp-from-emacswiki "auto-install.el") (require 'auto-install) ;;起動時にEmacswikiのページを補完候補に加える (auto-install-update-emacswiki-package-name t) ;;install-elisp.el互換モード (auto-install-compatibility-setup) ;;ediff関連のバッファを一つのフレームにまとめる (setq ediff-window-setup-function 'ediff-setup-windows-plain) ;;; スタートアップを非表示 (setq inhibit-startup-screen -1) ;;; ビープ音を消す (setq ring-bell-function 'ignore) ;;; ツールバーを非表示 (tool-bar-mode -1) ;;; メニューバーを非表示 (menu-bar-mode -1) ;;; 現在行に色をつける (global-hl-line-mode 1) ;; その行の色 (set-face-background 'hl-line "DarkSeaGreen1") ;;; 履歴を次回Emacs起動時にも保存する (savehist-mode 1) ;;; 対応する括弧を光らせる (show-paren-mode 1) ;;; カーソルの位置が何文字目かを表示する (column-number-mode t) ;;; バックアップファイルを作らない (setq backup-inhibited t) ;;; Xでのクリップボードを共有 (setq x-select-enable-clipboard t) ;;; yes-or-noをy-or-nに省略 (defalias 'yes-or-no-p 'y-or-n-p) ;; 行の先頭でC-kを一回押すだけで行全体を消去する (setq kill-whole-line t) ;;; emacsclient ;; ファイルを現在のemacsで開く (server-start) ;; キーバインドの変更 ;; 指定の行に移る (global-set-key "\M-g" 'goto-line) ;; undo (global-set-key "\C-z" 'undo) ;; ウィンドウの移動をM-tに (global-set-key "\M-t" 'other-window) ;; C-hをBackSpaceに (global-set-key "\C-h" 'delete-backward-char) ;; M-x compile を C-. に (global-set-key [?\C-\.] 'compile) ;;; 初期フレームの設定 (setq initial-frame-alist (append '( (width . 47) ; フレーム幅(文字数) (height . 63)) ; フレーム高(文字数) initial-frame-alist)) ;;; 新規フレームのデフォルト設定 (setq default-frame-alist (append '((width . 47); フレーム幅(文字数) (height . 63)); フレーム高(文字数) default-frame-alist)) ;;; ファイル更新日を自動的に書き換える。 ;; ファイルの頭に "last updated "をつけくわえればよい (require 'time-stamp) ;; 日本語で日付を入れたくないのでlocaleをCにする (defun time-stamp-with-locale-c () (let ((system-time-locale "C")) (time-stamp) nil)) (if (not (memq 'time-stamp-with-locale-c write-file-hooks)) (add-hook 'write-file-hooks 'time-stamp-with-locale-c)) (setq time-stamp-active t) (setq time-stamp-start "Last Updated ") (setq time-stamp-format "%04y/%02m/%02d %3a %02H %02M %02S") (setq time-stamp-end " ") ;;;Last Updated の後に空白2つ以上いれると置換 ;;; タイトルバーにファイル名を表示する (setq frame-title-format (format "emacs@%s %%f" (system-name))) ;;; ファイルの自動挿入 (auto-insert-mode) ;; 自動挿入するファイルのあるディレクトリ ;; 最後の/は必須 (setq auto-insert-directory "~/.emacs.d/insert/") ;; 自動挿入するファイル (define-auto-insert "\\.c" "c-template.c") ;;; viewer.el view-modeの設定 ;; M-x install-elisp-from-emacswiki viewer.el ;; ;; C-x C-rでview-modeでファイルを開く (setq view-read-only t) ;; 書き込み不能な場合はview-modeを抜けないように (require 'viewer) (viewer-stay-in-setup) ;; .log .out .datファイルをview-modeで開く (setq view-mode-by-default-regexp "\\.log") (setq view-mode-by-default-regexp "\\.out") (setq view-mode-by-default-regexp "\\.dat") ;;; view-mode時にモードラインに色をつける ;; 色名を指定 (setq viewer-modeline-color-unwritable "tomato") (setq viewer-modeline-color-view "orange") (viewer-change-modeline-color-setup) ;; view-mode時のキーバインド (define-key view-mode-map "h" 'backward-char) (define-key view-mode-map "j" 'next-line) (define-key view-mode-map "k" 'previous-line) (define-key view-mode-map "l" 'forward-char) (define-key view-mode-map "J" 'View-scroll-line-forward) (define-key view-mode-map "K" 'View-scroll-line-backward) (define-key view-mode-map "b" 'scroll-down) (define-key view-mode-map " " 'scroll-up) ;; bm.el (define-key view-mode-map "m" 'bm-toggle) (define-key view-mode-map "[" 'bm-previous) (define-key view-mode-map "]" 'bm-next) ;; view-modeを有効・無効にする ;; 0.04秒以内に jk を同時押しでview-modeに移行 (require 'key-chord) (setq key-chord-two-keys-delay 0.04) (key-chord-mode 1) (key-chord-define-global "jk" 'view-mode) ;;; redo+.el (require 'redo+) (global-set-key "\M-z" 'redo) (setq undo-no-redo t); 過去のundoがredoされないようにする ;; 大量のundoに耐えられるようにする (setq undo-limit 600000) (setq undo-strong-limit 900000) ;;;fullscreen.el (require 'fullscreen) ;;; recentf-ext.el ;; install-elisp-from-emacswiki recentf-ext.el ;; 保存しておく数 (setq recentf-max-saved-items 3000) ;; 最近使ったファイルに加えないファイルを正規表現で指定する (setq recentf-exclude '("/TAGS$" "/var/tmp/")) (require 'recentf-ext) ;; f8をショートカットキーに (global-set-key [f8] 'recentf-open-files) ;;; auto-complete.el ;; install-elisp-from-emacswiki auto-complete.el ;(require 'auto-complete) ;(global-auto-complete-mode 1) ;;;col-highlight.el ;; auto-install-batch col-highlight.el ;(require 'col-highlight) ;(column-highlight-mode 1) ;;何もしないでいるとハイライトを始めるようにする場合 ;(toggle-highlight-column-when-idle 1) ;(col-highlight-set-interval 3) ;;; hippie-expand ;;; 略語展開の順を設定 (setq hippie-expand-try-functions-list '(try-expand-dabbrev try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill try-complete-file-name-partially try-complete-file-name try-expand-all-abbrevs try-expand-list try-expand-line try-complete-lisp-symbol-partially try-complete-lisp-symbol)) ;; キーバインドの変更 C-; (global-set-key [?\C-;] 'hippie-expand) ;;; ipa.el (require 'ipa) ;;; 背景色 (set-face-background 'highlight "lavender") ;;; sequential-command.el ;;; M-x auto-install-batch sequential-command (require 'sequential-command-config) (sequential-command-setup-keys) ;;; smartchr.el ;; M-x install-elisp ;; https //github.com/imakado/emacs-smartchr/raw/master/smartchr.el (require 'smartchr) ;; once "", twice " (global-set-key (kbd "\"") (smartchr '("\"`!!'\"" "\""))) ;; once '', twice ' (global-set-key (kbd "\'") (smartchr '("\'`!!'\'" "\'"))) ;;; auto-save-buffers.el ;; M-x install-elisp ;; http //homepage3.nifty.com/oatu/emacs/archives/auto-save-buffers.el (require 'auto-save-buffers) ;; アイドル2秒で保存 (run-with-idle-timer 0.2 t 'auto-save-buffers) (run-with-idle-timer 0.2 t 'auto-save-buffers "" ".ipa$") ;;; open-junk-file.el ;; M-x install-elisp-from-emacswiki open-junk-file.el ;; Usage M-x open-junk-file (require 'open-junk-file) (setq open-junk-file-format "~/junk/%Y-%m-%d-%H%M%S.") ;;; bm.el ;; M-x install-elisp ;; http //cvs.savannah.gnu.org/viewvc/*checkout*/bm/bm/bm.el (setq-default bm-buffer-persistence nil) (setq bm-restore-repository-on-load t) (require 'bm) (add-hook 'find-file-hooks 'bm-buffer-restore) (add-hook 'kill-buffer-hook 'bm-buffer-save) (add-hook 'after-save-hook 'bm-buffer-save) (add-hook 'after-revert-hook 'bm-buffer-restore) (add-hook 'vc-before-checkin-hook 'bm-buffer-save) (global-set-key (kbd "M-\\") 'bm-toggle) (global-set-key (kbd "M-[") 'bm-previous) (global-set-key (kbd "M-]") 'bm-next)