UNIX/Linuxの部屋 emacsコマンドの使い方

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド emacs 高機能エディタ このエントリーをはてなブックマークに追加

最終更新


emacs はテキストファイルを編集するためのエディタである。UNIX/Linux 界において、2大エディタといえば vi と emacs であるが、vi はシンプルで軽量・emacs は高機能という特徴がある。Emacs lisp (elisp) という言語で拡張することができる。


emacs の基本的な使い方
emacs を使う場合、下記のように編集したいファイルを引数に指定する。
% emacs file.txt
その後、カーソルキーで移動し、BackSpace・Delete キーで削除し、
  • C-x C-s セーブ
  • C-x C-c emacs の終了
で emacs の終了となる。

なお、
  • M-x というのは、ESC キーを押して (離したあとに) x キーを押す
  • C-x というのは、CTRL キーを押しながら x キーを押す
  • M-C-s というのは、ESC キーを押して (離したあとに)、CTRL キーを押しながら s キーを押す
という意味である。なお、
  • C-g 実行中のコマンドをキャンセル (とにかくキーが入力できなくなったらこれを連打すること)
は覚えておいた方がよい。

emacs のオプション
▷ +n(数字) 起動後ファイルの n 行目に移動する
▷ -nw 新たな X のウィンドウを作らず、現在のコンソール上で実行する
▷ -q 設定ファイル (~/.emacs など) を読み込まない
▷ -u user userの設定ファイルを読み込む
-u hoge とすると、起動時の設定ファイルとして ~hoge/.emacs が読み込まれる
▷ -l file コンフィグファイル file を読み込む
▷ +[行数] 起動直後に指定された行番号に移動する
% emacs +30 sample.txt
→ sample.txt の 30行目に移動する
▷ -f function LISP の関数を実行する。
例・emacs -f c-mode
emacs -f rmail(メール)
emacs -f gomoku(五目並べ)

emacs でのカーソル移動
以下、重要と思われるキーバインドには "(*)" とした。
C-a 行頭に移動(*)
C-e 行末に移動(*)
C-n 1行下に移動(*)
C-p 1行上に移動(*)
C-f 1文字前に移動(*)
C-b 1文字後ろに移動(*)
C-v 1画面進む(*)
M-v 1画面戻る(*)
M-< 先頭行に移動(*)
M-> 最終行に移動(*)
C-x C-x マーク位置へ移動、もう一度入力すると元に戻る
C-x = 現在カーソルがどこにあるかを表示
M-x goto-line 指定の行へ移動(*)

emacs でのマーク
C-@ 現在カーソルのある位置をマーク(*)
C-SPACE 現在カーソルのある位置をマーク(*)
C-x h バッファ全体をマーク

emacs での検索
C-s インクリメンタルサーチ(あるいは次検索)(*)
C-s C-s 次検索(*)
C-r 後方インクリメンタルサーチ
M-C-s 正規表現インクリメンタルサーチ
M-C-r 後方正規表現インクリメンタルサーチ

emacs での削除・貼り付け
C-d 1文字削除(*)
C-k カーソル位置からその行の行末まで削除(*)
C-w マークした位置からカーソル位置までを削除してキルリングにコピー(*)
M-w マークした位置からカーソル位置までをキルリングにコピー(*)
C-y キルリングの内容を貼り付け(*)
M-y 一つ前のキルリングの内容を貼り付け。
C-y に続けて M-y とすることでキルリングをさかのぼることができる(M-y は C-y の直後に押さないと意味がない)。C-y M-y M-y M-y … と連続してさかのぼることも可能。
C-x C-t カーソルのある行とその上の行を入れ換え

C-o 空行を挿入
C-x u アンドゥ(*)
C-g 実行中のコマンドをキャンセル(*)
C-l 画面を再描画して、カーソルのある行が画面の中心にくるように表示(*)
C-m リターンキーと同じ

C-x r k 矩形領域の切り取り
C-x r y 矩形領域の貼り付け
C-x r t 矩形領域を指定した文字列で置き換え
C-x r o 矩形領域に空白を挿入
C-x r o 矩形領域を空白で置き換え

emacs での保存・終了
C-x C-s バッファ内容をファイルに保存(*)
C-x C-w ファイル名を指定してセーブ
C-x C-c emacs の終了(*)
C-z サスペンド

emacs でのバッファ・ウィンドウ操作
C-x C-f 指定ファイルを編集(*)
C-x C-b 現在のバッファのリストを表示(*)
C-x 0 カレントウィンドウを消去(*)
C-x 1 カレントウィンドウ以外のウィンドウを消去(*)
C-x 2 カレントウィンドウを横に2分割(*)
C-x 3 カレントウィンドウを縦に2分割
C-x o 次ウィンドウに移動(*)
C-x + 全ウィンドウを均等なサイズに変更
C-x ^ カレントウィンドウを拡大(*)
C-x b 編集するバッファを変更(*)
C-x C-b 現在編集中のバッファのリストを表示
C-x C-d ディレクトリを表示
C-x d diredを実行
C-x C-r 新たにファイルを読み込む(リードオンリー)
C-x i ファイル内容を現在位置に挿入
C-x C-x バッファを削除

emacs での他のウィンドウを操作
C-x 4 b 他のウィンドウに指定バッファを表示
C-x 4 f 他のウィンドウでファイルを編集
C-x 4 m 他のウィンドウでメール
C-x 4 r 他のウィンドウにファイルを読み込む(リードオンリー)
C-x 4 d 他のウィンドウでdired

emacs でのマクロ設定と実行
C-x ( マクロの設定を開始
C-x ) マクロの設定の終了
C-x e 設定したマクロを実行

emacs ヘルプ
M-x describe-bindings 現在のキー割り当ての説明
M-x describe-variable emacs変数の説明
M-x describe-function 関数の説明
M-x describe-mode 現在のメジャーモードの説明

emacs での漢字変換
C-\ たまごの起動
C-o かんなの起動
C-x SPC マーク位置からカーソル位置まで再変換

emacs その他
C-u n command commandをn回繰り返す。C-u 3 C-n は C-n C-n C-n と同じ
C-x TAB マークした場所からカーソル位置までの行を字下げする
C-^ 記号入力モード
C-x = カーソルの位置を表示
C-x m メールを送信
ESC ! シェルコマンドを実行
C-x l バッファの行数と現在位置を表示

emacs での便利なコマンド
M-x goto-line 指定の行に移る(行番号を指定)
M-x tabify マーク位置から現在位置までのスペースをタブに変換
M-x untabify マーク位置から現在位置までのタブをスペースに変換
M-x canna-touroku 新たに単語を登録 (かんな)
M-x replace-string 文字列を置換(*)
M-x replace-regexp 文字列を置換 (正規表現で指定)
M-x rmail メールを読む

emacs でのモード
M-x fundamental-mode 基本的なメジャーモード
M-x override-mode 上書き/挿入モード (トグル)
M-x auto-fill-mode 自動改行モード。
リターンキーを押したときに、その行が指定の文字数より長かったら、自動的に指定の文字数のところで改行する。任意のカラムで C-x f することで、1行の長さを設定できる。

emacs の hexl-mode でバイナリエディタ 【2019-01-16追加】
emacs に hexl-mode というバイナリエディタの機能がある。

起動方法は以下のいずれか。
  • emacs [対象ファイル] で起動し、M-x hexl-mode とする
  • emacs [対象ファイル] -f hexl-mode
  • emacs を起動し、M-x hexl-find-file で、開きたいファイル名を入力

もとのモードに戻る方法:
  • C-c C-c または M-x hexl-mode-exit
なお、ファイルを保存するわけではなく、あくまでもとのモードに戻るだけである。
保存したければもとのモードに戻った後に C-x C-s で保存が必要。

更新は ASCII 文字を入力すれば、該当するコードで上書きされる。つまり、"A" と入力すればカーソル位置のバイトが 0x41 になるし、"&" を入力すれば 0x26 になる。10進数・8進数での上書きは下記のとおり。
  • C-M-d (ESC を押した後に C-d): 10進数でコードを指定して上書き
  • C-M-o (ESC を押した後に C-o): 8進数でコードを指定して上書き

上記以外のカーソル移動や検索などは、emacs のキーバインド通りである。

マニュアルには「M-C-x などで挿入ができる」とあるが、どうやら挿入は不可で、上書きしかできないようだ。

emacs 以外のバイナリエディタとして beav コマンドがある。

emacs ファミリー
もともと emacs 上では日本語が使えなかったので、1980年代後半、日本では emacs を日本語化した nemacs というものが長らく使われてきた。しかし、どうせなら日本語以外に韓国語・中国語・ヘブライ語なども使えるようにしよう、ということで製作されたのが mule である。

mule は emacs-19.34.1 にパッチを当てた形式で配布されていたが、現在では、mule の多言語機能は emacs に統合されており、emacs-20 以降が開発されている。

また、xemacs というエディタがある。これは、1987〜1993年頃 emacs の開発が停滞していた時期があり、emacs からソースを分岐させたのが xemacs である。しかし emacs 本体の開発停滞も解消するにつれ、徐々に xemacs の停滞が発生し、2015年には実質的な開発停止であるメンテナンスモードに移行することが発表されたため、emacs 本体を使う方がよいだろう。