Last modified: Sat Jan 09 15:21:30 JST 2021

ビギナー向け Emacs でのテキストファイル編集/作成

まずはここでの表記上の約束事.

では本題の ~/.emacs.d/init.el に以下を書いて保存してみます.

(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/"))
(add-to-list 'package-archives '("marmalade" . "https://marmalade-repo.org/packages/"))
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
(package-initialize)

まず, 以下の 2 つを覚えてください.

入力動作
C-gコマンドのキャンセル/中断.
C-x uUndo. アンドゥ. 一つ前の状態に戻す. 連続して入力すれば二つ前, 三つ前へと戻ります.
C-/undo. C-x u と同じ. 私はこちらを使います.

次にファイル操作関連です.

C-x C-cEmacs 終了.
C-x C-fFile. ファイルオープン. 開く.
C-x C-sSave. ファイルセーブ. 保存.
C-x C-wWrite. ファイル名を入力してセーブ. 別名で保存.

次にカーソルの移動コマンドを覚えます.

C-fForward. 1 文字右へ.
C-bBackward. 1 文字左へ.
C-nNext-line. 1 ライン下へ.
C-pPrevious-line. 1 ライン上へ.
C-abeginning-of-line. 行頭へ. ('a' はアルファベットの最初)
C-eEnd-of-line. 行末へ.
C-vnext-page. (バッファ表示が一画面に収まらない場合)次頁へ.
M-vprevious-page. 前頁へ.
M-<beginning-of-buffer. バッファ先頭へ.
M->end-of-buffer. バッファ末へ.

後, 編集コマンドも必要ですね.

C-dDelete. カーソル位置の文字を削除.
C-kKill. カーソル位置から後ろを削除. 削除したデータはキリングバッファ(Windows のクリップボードみたいなもの) に入る.
C-yYank. Windows で言うペースト. カーソル位置にキリングバッファのデータ挿入.
C-@mark-set. マーク. カーソルの位置を記憶.
C-SPCmark-set. C-@ と同じ.
C-wkill-region. マーク位置から現在のカーソル位置までを削除. 削除したデータはキリングバッファに入る.
M-wマーク位置から現在のカーソル位置までを削除せずに キリングバッファに入れる.

この他にも検索や置換ブロック削除, ブロック挿入など様々なコマンドがありますが, 差し当たりこのくらいを知っておけば使えると思います. あ, 'C-x C-s' は 'C-x' の後に 'C-s' の入力を意味します. コマンドには C-f のように 1 回のキー入力で終わるものと, このように複数回の入力が割り当てられているものがあります. 最初は入力が面倒に感じますが, 慣れて来ると 'C-x C-s' などは Ctrl キーを押したまま, 'x' 's' と順に入力できる様になり素早く実行できます.

キー操作でもう一つ Tab キーを覚えておいて下さい. ファイル名やコマンドの 入力の際に補完を行ってくれます. うまく使えばキー入力を大きく減らすことができます.

で実際の編集ですが, Emacs はバッファと言う考え方が基本になっています. 例えばファイルを開くと言う操作も, 実際には「ファイルの内容をバッファに読み込む」と言う操作となります. 編集はこのバッファに対して行い, 'C-x C-s' 等でセーブしない限り元ファイルに変更は加えられません. そうです, 「バッファの内容をファイルに書き出す」と言う操作がセーブです.

このバッファと言う概念のため, ファイル編集をバッファ編集と言ったりして 初心者には Emacs 用語自体が分かりにくくなっているかも知れません. でもこの概念に慣れると Emacs から離れられなくなります.

前置きが異常に長くなってしまいました. 以下, 目的の init.el ファイルの編集までの操作を書き出します. 黒字部分が入力です. ↓ は Enter キーの入力です. 【】部分はコメントです.

【Emacs 立ち上げ】
C-x f ~/.emacs.d/init.el↓      【init.el の編集は危ないかも. どうすると聞かれたら 'y' を入力】
【init.el ファイルがバッファに読み込まれる. ここから以下の 2 行を入力. 頑張って】
【あ, 言い忘れました, ')' を入力すると一旦, 対応する '(' にカーソルが移動した後, 戻って来ます. 驚かないで :-)】
(require 'package)↓
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))↓
【この後同じような内容が 3 行続くので編集操作を試してみましょう】
C-p                             【'(add...' の括弧の部分にカーソルが移動します】
C-k                             【'(add...' の行の行末までが削除され空行になります】
C-k                             【改行コードも削除されます. これで '(add' から改行までがキリングリングに入ります】
C-y C-y C-y C-y                 【キリングリングが 4 回呼び出されます. つまり同じ行が 4 行できます】
C-p C-p C-p C-f C-f C-f...      【3 行上に戻り, カーソルを右に進めます. "melpa" の 'a' の後ろまでカーソル移動下さい(C-f は 39 回)】
-stable                         【と文字入力】
C-f C-f C-f...                  【再びカーソルを右に進めます. "https://" の後ろまでカーソル移動下さい(C-f は 13 回)】
stable.                         【と文字入力. これでこの行が完成したはずです】
C-n C-b C-b C-b...              【次行に移動しカーソルを左に進めます. "melpa" の 'm' の文字にカーソル移動下さい】
marmalade                       【と文字入力 'marmalademelpa' となって, 'melpa' の 'm' の上にカーソルが来ているはずです】
C-d C-d C-d C-d C-d             【これで 'melpa' の 5 文字が削除されたはずです】
カーソル移動 + 挿入 + 削除      【後ろの "https://" に続く部分も同じように編集操作で修正しましょう】
カーソル移動 + 挿入 + 削除      【次行も同じように編集操作で修正しましょう】
【これで以下の様な 4 行が完成したはずです. ミスがあったら編集操作で直して下さい】
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/"))
(add-to-list 'package-archives '("marmalade" . "https://marmalade-repo.org/packages/"))
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
【最後に一番下の空行に移動して以下を入力下さい. (一番下が空行でなく, 'add-to...' の 4 番目の行になっている場合は
                                                                        C-e でその行末に移動して ↓ を入力下さい)】
(package-initialize)↓
【これで入力は完了. ミスがあったら編集操作で直して下さい】
C-x C-s                         【バッファの内容を init ファイルに書き出します】
C-x C-c                         【お疲れ様. Emacs を終了します】

ここまで Emacs の基本操作を長々と説明して来ましたが, Windows 上の Emacs は Windows のアプリとの間でコピー & ペーストが出来ます. 例えば Web ブラウザ上でマウスで文字列を選択し C-c でコピー (通常の Windows での操作です). Emacs 上にカーソルを持って行き, C-y でペースト. (通常の Windows なら C-v ですが, Emacs では C-y です)

このマウス操作は基本操作の習得のために敢えて黙っていました. 私も Windows 上の 他のアプリとやり取りする場合マウス操作を良く使います. 但し, 最初のうちから マウス操作に頼っていると, Emacs の基本操作の習得が遅くなるので, 慣れるまではキー入力を使いましょう :-)

最後に... この記事は init.el を(私の)サンプル通りに編集する事を目的の 作業説明となっていました. 一般的なキー操作を覚えるのであればチュートリアル (個人レッスン)機能が用意されています. 'C-h t' と入力するか 'M-x help-with-tutorial' と入力して下さい. 後は説明文(安心して下さい. 日本語です :-)に従って, 下へ下へと読み進めて下さい. 読み進める際, 下に進む動作は 'C-n'(1 行下へ) か 'C-v'(1 画面下へ)ですよ. Emacs では, 画面の一番下で 'C-n' を押すなど, 画面外にカーソルを移動させると 自動的にスクロールしてくれます. これも使っているうちに感覚が掴めます. では, Let's try. そして Let's enjoy.