実行時の環境OS | macOS Ventura 13.4.1 |
---|
Emacs | バージョン29.1 |
---|
このコンテンツでは、Emacsの基本的な使い方や設定方法を紹介します。
Emacsを使ってみようと手をつけ始めても、最初はカーソルの移動1つですら「どうやるんだろう…」とググりながら進めることになるのはストレスとなってしまいます。(自分も最初挫折しそうになりました)
はじめは慣れなくても、慣れたらほとんどマウスを使うことなくテキスト編集作業ができるようになるのでぜひ馴染むまでゴリゴリいじってみてください。きっとあなたの人生における最高の相棒になることでしょう。
Emacsチートシート
Emacsの基本操作
まずは通常のテキストエディタとして扱えるようになることを目標にしましょう。なんだかんだで文字の入力や保存といった基本的なことさえできれば後は慣れでどうにかなります。
Emacsの各記号の意味
このように書かれている場合、Ctrlキーを押しながらx
を押し、そのままCtrlキーを押しながらs
を押す、という意味です。Ctrlキーは左手の小指で押すことが一般的なため、Emacs使いは左手の小指が大切とされます。
このように書かれている場合は、Metaキー(Altキー)を押しながらx
、という意味です。
このように書かれている場合は、Shiftキーを押しながらr
、という意味です。
このように書かれている場合は、Superキー(Macだと⌘
)を押しながら1
、という意味です。
このように通常の文字と同じく、Shiftを押しながら文字入力して組み合わせるパターンもあります。(この場合はMeta + Shift + ,
を同時に押すことでM-<
を表現します)
Emacsの起動と終了
以下、CLI(ターミナルなど)から操作。
コマンド | 説明 |
---|
| Emacsの起動(ファイル指定なし) |
| WindowsのコマンドプロンプトでEmacsの起動(ファイル指定なし) |
| Emacsで指定ファイルを開く |
| WindowsのコマンドプロンプトでEmacsで指定ファイルを開く |
| ターミナル内でEmacsの起動(ファイル指定なし) No windowの略 |
| Emacsの終了 |
ファイル操作&バッファ操作
コマンド | 説明 |
---|
| カレントバッファの保存 |
| ファイルを別名で保存 |
| ファイルを開く |
| 指定ファイルの内容を現在のカーソルの下に挿入 |
カーソル移動&検索
コマンド | 説明 |
---|
| カーソルを右に一文字移動 |
| カーソルを右に一単語移動 |
| カーソルを左に一文字移動 |
| カーソルを左に一単語移動 |
| カーソルを上に移動 |
| カーソルを下に移動 |
| カーソルを行先頭に移動 |
| カーソルを行末に移動 |
| カーソルをファイル先頭に移動 |
| カーソルをファイル末尾に移動 |
| カーソルより後に記述のある文字列を指定文字で検索し移動 |
| カーソルより前に記述のある文字列を指定文字で検索し移動 |
| 一画面分、前に移動 |
| 一画面分、後ろに移動 |
操作の取り消し&元に戻す(Undo)
コマンド | 説明 |
---|
| 操作の取り消し |
| 元に戻す(Undo) |
| 元に戻す(Undo) |
ウィンドウ操作
コマンド | 説明 |
---|
| 分割したウィンドウを一つに戻す(カーソルがないウィンドウが残る) |
| 分割したウィンドウを一つに戻す(カーソルがあるウィンドウが残る) |
| ウィンドウを上下に分割 |
| ウィンドウを左右に分割 |
| 分割したウィンドウの幅と高さを均一にする |
| 開いているバッファから現在のウィンドウに表示するものを指定する |
| 新規フレームを開く |
| フレームを移動 |
| フレームを閉じる |
文字の削除
コマンド | 説明 |
---|
| 通常と同じくカーソルの一つ前の文字を削除 |
| カーソル位置の文字を削除 |
| カーソル位置から右側の一つの単語(M-f で移動する範囲)を削除 |
| カーソル位置から左側の一つの単語(M-b で移動する範囲)を削除 |
| カーソル位置から行末まで削除 |
| カーソル位置から文末(。 まで)まで削除 |
範囲指定、カット、コピー&ペースト
コマンド | 説明 |
---|
| カーソル位置を範囲指定の始点にする そこからカーソルを移動すると範囲指定できる |
| C-[Space] と同じ |
| バッファ内すべて選択 |
| 範囲指定している部分をカット(削除してクリップボードに保持) |
| 範囲指定している部分をコピー(削除せずクリップボードに保持) |
| ペースト(クリップボードに保持されている内容) |
コマンド実行
Emacs基本設定
Emacsの設定はホームディレクトリ直下に作成される.emacs.d
ディレクトリで行います。
このディレクトリの中身を読み取ることによって、Emacsは独自にカスタマイズが可能となるため、Gitなどで管理しておくことが大切です。
また、.emacs.d/init.el
は一番最初にEmacsの設定ファイルとしてロードされるため、ここに基本的な設定は盛り込みましょう。
独自にディレクトリ構造を作成可能なので、自分が管理しやすい方法を見つけるために積極的に設定ファイルをいじるようにしてください。
Emacs Lisp(通称elisp)というLispをベースにした独自の言語を利用しますが、最初のうちはコピペでも良いです。使い勝手が自分好みではないと思ったときにEmacs Lispを改めて学んでみようと思ったら、千葉大学理学部の松田茂樹准教授のEmacs Lispの入門サイトなどを参考に学んでみてください。
最初にするinit.elおすすめ設定
(defun add-to-load-path (&rest paths)
(let (path)
(dolist (path paths paths)
(let ((default-directory (expand-file-name (concat user-emacs-directory path))))
(add-to-list 'load-path default-directory)
(if (fboundp 'normal-top-level-add-subdirs-to-load-path)
(normal-top-level-add-subdirs-to-load-path))))))
(add-to-load-path "elisp")
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
(package-initialize)
(setq initial-scratch-message "")
;; または
(setq initial-scratch-message nil)
(setq auto-save-default nil)
(setq make-backup-files nil)
(setq create-lockfiles nil)
(setq inhibit-startup-message t)
(setq default-directory "~/")
(setq command-line-default-directory "~/")
(setq ring-bell-function 'ignore)
(setq tab-width 4)
(setq default-tab-width 4)
(setq-default line-spacing 0.15)
(prefer-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(scroll-bar-mode 0)
(toggle-scroll-bar -1)
;; つけたい場合は1
(display-time-mode 0)
(global-display-line-numbers-mode 1)
(fset 'yes-or-no-p 'y-or-n-p)
;; テーマ一覧 https://pawelbx.github.io/emacs-theme-gallery/
(load-theme 'deeper-blue t)
(add-to-list 'initial-frame-alist '(fullscreen . maximized))
(add-to-list 'default-frame-alist '(fullscreen . maximized))
(add-to-list 'default-frame-alist '(font . "Andale Mono-14"))
便利なキーボードショートカット
(global-set-key (kbd "C-h") 'delete-backward-char)
(global-set-key (kbd "C-t") 'other-window)
(defun insert-datetime ()
(interactive)
(insert (format-time-string "%Y-%m-%d %02H:%02M:%02S")))
(global-set-key (kbd "s-4") 'insert-datetime)
便利なエイリアス
;; M-xを押してrsでエイリアス
(defalias 'rs 'replace-string)
;; M-xを押してrrでエイリアス
(defalias 'rr 'replace-regexp)
;; M-xを押してarpでエイリアス
(defalias 'arp 'align-regexp)
(defun revert-buffer-no-confirm ()
(interactive) (revert-buffer t t))
(global-auto-revert-mode 1)
(defalias 'rb 'revert-buffer-no-confirm)
おすすめパッケージ
実際の設定は別のコンテンツにしますが、実際に使っている便利なパッケージ一覧を紹介します。
※プログラミング言語補助系は抜いています。
ゴリゴリ設定していこう
ここまで、基本的なEmacsの使い方と設定方法を紹介してきました。紹介しておきながらアレですが、Emacsは自分で独自にカスタマイズしてなんぼです。
始めたての頃は、Emacsの設定をいじることで時間が溶けがちですが、それだけ愛着をもって一生物のエディタとして育てていける楽しみがあります。
キーボードの上で過ごす時間を快適に、自分の思い通りにしたい、と思っているエンジニアの人には本当に心からおすすめできるエディタです。
もしこれをきっかけにEmacsを使い始めたらとにかくゴリゴリに設定していきましょう。
きっとあなたのエンジニアライフがより一層素晴らしいものになるはずです。