Emacs の使い方

2004年7月27日

はじめに

Emacs は UNIX 用高機能エディタです。このページでは Emacs の使い方を説明 します。

Emacs 20.7.2 で動作確認を行いました。

[ ] は省略可能を意味します。

"M-" は Meta Key を表わし、 Alt キーまたは Esc キーを押しながら次のキーを 押すことを意味します。"C-" は Ctrl キーを押しながら次のキーを押すことを意味 します。

設定によってキーの割り当てが変わっている場合があります。

目次

  1. 基本の操作
  2. 便利な操作
  3. 細かい操作
  4. もっと細かい操作
  5. 設定

基本の操作

起動
emacs [ファイル]
emacs -nw [ファイル] (コンソール上で起動)
emacs -q [ファイル] (設定ファイルを読み込まずに起動)
移動
C-b (左)
C-f (右)
C-p (上)
C-n (下)
削除
Delete (カーソルの左の文字を削除)
C-d (カーソル位置の文字を削除)
保存
C-x C-s (上書き保存)
C-x C-w (名前を付けて保存)
終了
C-x C-c
操作の取り消し
C-g
Esc Esc Esc (取り消し、または現在のウインドウ以外を閉じる)
ヘルプ
C-h または M-x help
たとえば、C-h の後に k を押し、その後にキー(C-x C-s など)を入力すると、 そのキーに割り当てられている機能の説明が表示される。

便利な操作

ファイルを開く
C-x C-f
行ジャンプ
M-x goto-line (指定した行番号に移動)
リフレッシュ
C-l (現在行が真ん中になるように画面を描きなおす)
削除
C-k (カーソル位置から行末までを削除
M-0 C-k (カーソルの左から行頭までを削除)
ペースト(ヤンク)
C-y (削除またはコピーされた内容をペースト)
M-y (ペースト(C-y)後、ペーストする内容を選択)
検索
C-s (文字列の前方検索)
C-s C-s (次の前方検索)
C-r (文字列の後方検索)
C-r C-r (次の後方検索)
置換
M-x replace-string (カーソル位置以降の文字列を全て置換)
アンドゥ
C-x u または C-_

細かい操作

移動
C-a (行の先頭へ移動)
C-e (行の末尾へ移動)
M-f (1単語右に移動)
M-b (1単語左に移動)
M-< (ファイルの先頭へ移動)
M-> (ファイルの末尾へ移動)
M-v (前のページ)
C-v (次のページ)
削除
M-d (カーソルの右にある単語を削除)
M-Delete (カーソルの左にある単語を削除)
範囲(リージョン)指定開始
C-Space カーソル移動
コピー
範囲指定開始後、範囲指定終了位置で M-w (終了位置の手前の文字まで)
削除
範囲指定開始後、範囲指定終了位置で C-w (終了位置の手前の文字まで)
バッファの操作
ファイルはバッファとして管理されます。
C-x C-b (バッファリストの表示)
C-x b (別のバッファを表示する)
C-x k (バッファを削除)

もっと細かい操作

ウインドウを分割
C-x 2 (ウインドウを横に2つに分割)
C-x 3 (ウインドウを縦に2つに分割)
C-x 4 f (新しいウインドウでファイルを開く)
C-x 1 (現在のウインドウ以外を全て閉じる)
C-x 0 (現在のウインドウを消す)
C-x o (次のウインドウに移動)
C-x 4 b (別のウインドウで別のバッファを表示する)
シェル
M-x shell (シェルを起動)
M-! コマンド (シェルコマンドを実行)
タグジャンプ
etags で作った TAGS ファイルをもとにタグジャンプを行います。
M-. タグ (タグへ移動)
C-u M-. (次のタグへ移動)
C-x 4 . タグ (別ウインドウでタグに移動)
単語の補完
M-/ (ファイル内から候補を探して補完)
Fortran モード (*.f や *.for ファイル)
M-x fortran-mode (Fortran モードの起動)
Tab で字下げ(スペースになる)
行の先頭に数字を入れるとラベルになる
C-c C-r (一時的にルーラーを表示)
C-c C-w (Fortran 用ウインドウの表示)
C-M-j (カーソル位置で継続行として折り返す)
C-M-a (副プログラムの先頭に移動)
C-M-e (副プログラムの最後に移動)
C-M-q (副プログラムの行を全て字下げする)
M-; (コメントをそろえる、または挿入する)
範囲指定後 C-c ; (リージョンをコメントにする)
範囲指定後 C-u C-c ; (上のコメントをはずす)
;略称 (組込み略称(abbrev-mode で))
;? (組込み略称の表示)

設定

設定例
設定ファイル ~/.emacs
; 日本語
(set-language-environment "Japanese")

; 文字コード
(set-default-coding-systems 'euc-jp)
(set-buffer-file-coding-system 'euc-jp-unix)
(set-terminal-coding-system 'euc-jp)
(set-keyboard-coding-system 'euc-jp)

; デフォルトはテキストモード
(setq default-major-mode 'text-mode)

; メニューバーを消す
(menu-bar-mode -1)

; 起動時のメッセージを表示しない
(setq inhibit-startup-message t)

; バッファの最後の移動での行の追加を防ぐ
(setq next-line-add-newlines nil)

; スクロール数
(setq scroll-step 1)

; カーソル位置の行数を表示
(line-number-mode 1)

; カーソル位置の桁数を表示
(column-number-mode 1)

; バックアップファイルを作成しない
(setq make-backup-files nil)

; オートセーブを行わない
;(setq auto-save-default nil)
;(setq auto-save-list-file-name nil)
;(setq auto-save-list-file-prefix nil)

; Backspace の設定
(global-set-key [backspace] 'delete-backward-char)

; C-h に Backspace を割り当てる
(global-set-key "\C-h" 'delete-backward-char)

; C-x C-h に help を割り当てる
(global-set-key "\C-x\C-h" 'help)

; C-x C-g に goto-line (行ジャンプ)を割り当てる
(global-set-key "\C-x\C-g" 'goto-line)

; C-o カーソルの下に行を挿入
(global-set-key "\C-o" "\C-e\C-m")

; M-o カーソルの上に行を挿入
(global-set-key "\M-o" "\C-p\C-o")

; C-\ を未定義にする
(global-unset-key "\C-\\")

; Fortran モード
(setq fortran-mode-hook
      '(lambda ()
	; 略称を使う
	(abbrev-mode 1)
	; オートインデント
	(global-set-key "\C-m" 'newline-and-indent)
))


;;
;; X 用の設定
;;
; カラー設定
(global-font-lock-mode t)
(set-foreground-color "white")
(set-background-color "#000000")
(set-cursor-color "white")

; スクロールバーを右側に表示する
(set-scroll-bar-mode 'right)

; メニューバーの表示
(if window-system (menu-bar-mode 1)))

; ホイールマウス対応
(defun up-slightly () (interactive) (scroll-up 5))
(defun down-slightly () (interactive) (scroll-down 5))
(global-set-key [mouse-4] 'down-slightly)
(global-set-key [mouse-5] 'up-slightly)

(defun up-one () (interactive) (scroll-up 1))
(defun down-one () (interactive) (scroll-down 1))
(global-set-key [S-mouse-4] 'down-one)
(global-set-key [S-mouse-5] 'up-one)

(defun up-a-lot () (interactive) (scroll-up))
(defun down-a-lot () (interactive) (scroll-down))
(global-set-key [C-mouse-4] 'down-a-lot)
(global-set-key [C-mouse-5] 'up-a-lot)