2. エディタ / Emacs
2.1. はじめに
実務においてはグラフィカルユーザインタフェースが使えない環境で作業をすることが多い. できるだけ,マウス操作に頼らず,キーボードのみでEmacsを使いこなせるようにしよう.
2.2. 覚えておきたいコマンド
凡例は教科書を熟読すること.以下は抜粋である.
C-*はCtrlキーを押しながら*を押すM-*はAltキーを押しながら*を押す,または,ESCキーを押してから*を押す.C-x 1はCtrlキーを押しながらxを押し,その後2を押すSPCはスペースキー
2.2.1. 必須
C-gキャンセルC-x C-cEmacsの終了
2.2.2. 全般
C-x C-fファイルを開く(バッファにファイルを読み込む)C-x C-sファイルに保存する(バッファの内容をファイルに書き出す)
2.2.3. 文字列のコピー・カット・ペースト
C-SPCマーク(選択範囲の始端を指定する.終端はマーク後のカーソル位置.)C-wカット(削除し,選択範囲の内容を内部バッファに書き写す)M-wコピー(削除せずに,選択範囲の内容を内部バッファに書き写す)C-yペースト(内部バッファに保持した内容を,現在のカーソル位置から書き戻す)
なお,Emacsの用語としては,選択範囲=region,内部バッファ=kill ring,ペースト=yank,である. マークとはWindowsで言えば,Shift+カーソルキーで範囲選択をするときの,最初の操作のようなものである.
なお,関連して,マウスによる以下の操作と意味も覚えておくと捗るだろう.
マウスによる選択 ・・・ 「マーク」と「コピー」に相当
マウス中ボタンクリック・・・ 「ペースト」に相当
2.2.4. アンドゥ
C-\アンドゥ(直前の作業を取り消す.)リドゥはありません.
2.2.5. バッファ・ウィンドウ操作
バッファとは「ファイルを展開した中身そのもの」であり,ウィンドウとは「その覗き窓」である. ウィンドウを消してもバッファは消えないことに注意しよう.
バッファ操作
C-x bバッファの切り替え ※C-x C-bだと切り替え先バッファをメニュー形式で選択できる.C-x kバッファを消去する
ウィンドウ操作
C-x 0アクティブなウィンドウを消す(バッファは残っている)C-x 1アクティブ以外のウィンドウを消す(バッファは残っている)例1:ヘルプなどで2画面になった時に,元のウィンドウの上で
C-x 1とすれば,元のウィンドウだけになる.例2:ヘルプなどで2画面になった時に,ヘルプウィンドウの上で
C-x 0とすれば,元のウィンドウだけになる.
C-x 2ウィンドウを上下に分割するC-x o別のウィンドウをアクティブにする
2.2.6. 文字列の検索・置換
C-sカーソル位置から前方向に(インクリメンタル)検索M-%(対話インタフェースによる)置換M-x grepシェルのgrepコマンドと同様の検索.画面が分割され,新しい画面には一覧が表示される.
2.2.7. カーソルの移動
C-a行頭に移動 ※シェルと同じコマンドC-e行末に移動 ※シェルと同じコマンドM-g M-g数字を入力して,指定行に移動
2.2.8. 文字コード・改行コード関連
C-x RET rまたはM-x revert-buffer-with-coding-system文字コード・改行コードを指定して開き直す例:
M-x revert-buffer-with-coding-system RET sjis-dos文字コードShift_JIS,改行コード CRLF で開き直す
C-x RET fまたはM-x set-buffer-file-coding-system現在開いているバッファを保存する際の文字コード・改行コードを指定する例:
M-x set-buffer-file-coding-system RET utf-8-unix文字コードUTF-8,改行コードLFで保存するようにする
注意:
文字化けの解決をするなら前者の revert-buffer... で開き直すこと.
文字化けしたまま編集を行い,保存をした場合,文字化けした日本語はほぼ復活不可能となる.
長いコマンドを打つのは大変.入力途中に
TABで補完しながら利用しよう.
2.3. C言語によるプログラミング
C-mode が有効になっていると,以下のようなコマンドが使える.
M-x compileコンパイルコマンドの呼び出しMakefileを作っていない場合は,最初に入力されているmake -kを消して,自分のコンパイルコマンドを入力し直す.
M-x gdbデバッガ起動(デバッガの使い方はGDBの記事を参照せよ)
Emacs環境でコンパイルする利点として,エラー行にジャンプできる,というものがある.
2.4. LaTeXによるレポート執筆
tex-mode が有効になっていると,表 1 のようなコマンドが使える.
コマンド |
意味 |
|---|---|
|
タイプセット(PDFファイルの作成) |
|
タイプセットの中断 |
|
プレビュー |
|
|
ただし,日本語用のLaTeX (pLaTeX) を用いる場合は,Emcasの設定ファイルを修正する必要がある. 個人用の設定ファイルの書き換え例は次章「Emcasのカスタマイズ」を参照してほしい.
2.5. Emacsのカスタマイズ
便利に使うためのおススメ設定を紹介する. いずれも設定ファイルに記載する内容である.
2.5.1. 設定ファイル
Emacsの設定は以下のファイルに書く.無い場合は作成しよう.
~/.emacs.d/init.el
Emacsの設定はLISP言語として書く.LISP言語のコメントは以下の2種類である.
最低でも ; だけ覚えておけば事足りるだろう.
; This is comment.
(SOME-COMMAND SOME-ARGS) ; This is comment.
#|
This is comment.
This is also comment.
|#
2.5.2. 推奨設定
最低でも,以下の設定ぐらいは書いておくと使いやすくなるだろう.なお,一部はすでに演習室のシステムとして設定済みである.
1;
2; EDU2019 - 基本設定
3;
4(prefer-coding-system 'utf-8-unix) ; Unixの標準的なエンコーディングにする(文字コード UTF-8,改行コード LF)
5(setq inhibit-startup-message t) ; 初期メッセージを非表示にする
6(display-time) ; 現在時刻の表示
7;; 行番号の表示
8(global-display-line-numbers-mode 1); 行番号表示モード On
9(setq linum-format "%3d ") ; 数字のフォーマット(cf. printf)
10;; 対応する括弧の強調表示
11(show-paren-mode t) ; 括弧の強調表示モード On
12(setq show-paren-style 'mixed) ; 強調表示モードの選択
13;; インデントの基本設定
14(setq-default
15 c-basic-offset 4
16 tab-width 4
17 indent-tabs-mode nil)
18;; C言語のためのスタイル設定(標準のgnuはやや使いづらい)
19(setq-default c-default-style "linux")
2.5.3. LaTeX執筆用の追加設定
1; EDU2019 - LaTeX用 設定
2(setq tex-default-mode 'latex-mode)
3(setq latex-run-command "ptex2pdf -l -u -ot \"-synctex=1 -interaction=nonstopmode\"")
4(setq tex-print-file-extension ".pdf")
5(setq tex-dvi-view-command "evince")
6(setq tex-dvi-print-command "evince")
なお,これらは演習室の環境で用いる場合の設定例である. 自習用に設定する場合は,各自の環境に合わせて変更する必要がある場合がある.
2.6. FAQ
►Q.
emacs xxxx.c などとして,ファイルを直接編集しようとすると,図 2 のように画面下半分を初期起動画面が占めている.今後表示させたくないのだが,どうすればよいか?
A. 初期起動画面をよく見ると,下方に記載されている.以下の通り:
「□ Never show it again」のチェックボックスにチェックを入れて,
「Dismiss this startup screen」をクリックする.
![]()
図 2 Emacsの画面例と初期画面の消し方
A.
F10 を押せば,分割されたウィンドウ内でメニュー選択ができるようになる.キャンセルは C-g である.
2.7. 参考URL
2.8. 参考書
岡山大学工学部情報系学科,工学基礎実験実習(教科書),第2章エディット
