Emacsを用いたテキストファイル編集とファイル印刷

Cocoa Emacsを用いたファイル編集の流れ

Emacsは「テキストファイル」と呼ばれる文字情報のみで出来ているファイルを作成・編集するための極めて重要なツール(テキストエディタ)である.今後,Webページ編集,レポート作成やC言語プログラム作成などにおいて非常に良く用いるので,今のうちに使い方に完全に慣れてしまうことが 大切である.

CSE環境のMac OS Xではテキストファイルの文字コードとして標準でUTF-8(ユニコード)を採用している.今後,学ぶ事になるC言語やJava言語のソースコードも原則としてUTF-8形式のテキストファイルとして作成する.(文字コードについては,後日,改めて詳しい説明を行う.) MacOS Xに標準添付されているテキストエディタ「テキストエディット」はUTF-8形式のテキストファイルを上手く扱えない場合が多いので,あまりお勧めできない.テキストエディタとしてはEmacsが現時点で最も適切であろう.

但し,EmacsはMacOS Xに標準でインストールされているものは,ターミナル内でしか利用出来ないとか,日本語対応があまり十分でないなどの理由で使い勝手が悪いので使用はお勧めできない.そのため,本演習では,Emacs開発の本家であるGNUのCocoa Emacsを用いる.但し,現時点での最新版であるEmacs 24.3は初心者が使うには少々不具合があるため,幾つかのパッチを適用してビルドしたパッケージを用いる.そのパッケージは他のフリーソフトフェアと合わせてNetBoot環境にて配布しているので,それをインストールすることを勧める.詳細はこちらのページを参照のこと.

CSE環境ではCocoa Emacsを導入した上でターミナル上でemacsコマンドを実行するとCocoa Emacsが起動するように調整している.自宅環境でEmacsを使う場合には混乱しないようにして欲しい.お勧めは,「Cocoa Emacsを導入しておいて,起動コマンドとしてopen -a Emacs.appを使う」である.

(注: cse環境におけるNetBootしたMacOS Xに追加インストールされている大半のソフトウェアはオープンソースソフトフェア,或いは,フリーソフトウェアであり,各自のMacにインストールして自由に利用する事が出来る.尚,フリー, free, の意味は,「自由に」使えるという意味であって,「無料で」使えるという意味ではない事に注意して欲しい.これらのフリーソフトウェアについては,既に授業中の実習課題として各自のMacBookへのインストールを説明した.)

Emacsの起動から終了まで

ここでEmacsの操作練習として,既に作成済みのテキストファイル log をEmacsで編集してみよう.まず,lsコマンドでファイルlogが存在していることを確認しておく.

Emacsを用いたファイル編集手順の大まかな手順は以下の5段階となる.

注: ControlキーとESCキーと組み合わせたキー操作とその表記

Emacsでは,ControlキーとESCキーを組み合わせたキー操作を頻繁に用いる.そのようなキー操作を以下のように表記する.

Controlキーを押しながら何かxというキーを押す: C-x (例:Controlキーを押しながら,gを押す場合, C-g)

ESCキーを一度押して放してから何かxというキーを押す: M-x (例:ESCキーを押して放してからeを押す場合, M-e)

Emacsを起動

する.ターミナルにプロンプトが出ている状態でopen -a Emacs.app<Return>と タイプすれば良い.または,Dockからをクリックするか,アプリケーションフォルダからEmacs.appをダブルクリックして開く.

尚,Emacsウィンドウの下から2行目の白黒反転した行をモードライン,最下行をエコーラインと呼ぶ.

編集したいファイルの名前を指定

Emacsが無事起動したら,次に編集したいファイルの名前をEmacsに指示する.C-x C-fをタイプするとエコーライン上に

Find File: ˜/

と表示されるので,ここに読み込みたいファイル名をタイプして指定する.新しくファイルを作成する場合も,ここでファイル名を指定すればよい.ここではファイルlogを編集するので,ファイル名logをタイプし,最後に<Return>をタイプすると,その名前のファイルがEmacsに読み込まれて編集できる状態になる.

尚,Finder上からEmacsにファイルを読み込ませて開きたい場合,ファイルアイコンをEmacsのアイコン上にDrag&Dropしても良い.

拡張子.c, .java, .txtなどが付いた名前のファイルは,CSE環境ではダブルクリックするとEmacsに読み込まれて開くように調整してある.

ファイルを編集

Emacsに読み込まれたファイルは,カーソルの位置(左側)にキーボードからタイプされた文字が入力されてゆく.間違えた場合にはdeleteキーをタイプして修正する.

カーソルの移動

カーソルを移動させてウィンドウの端まで来ると自動的にスクロールして,ファイルの表示個所が移動する.カーソル移動以外に表示個所を移動させるには,以下のキー操作がある.

行の移動と複写

ファイルを編集していると,特定の一行(又は,複数行まとめて)を別の場所に移動させたいと思うことがある.この時,C-kとC-yを組み合わせた次の手順で簡単に移動できる.

  1. 移動させたい行をC-kで削除する.この時,削除された行は消えて無くなるのではなく,「バッファ」と呼ばれる場所に一時的に記憶される.また,C-kを繰り返すと複数行を削除してバッファに入れることが出来る.
  2. 移動先にカーソルを移動させる.
  3. C-yをタイプすると,先にC-kで削除してバッファに入れられた内容が復元される.このC-yを繰り返すことでバッファに入っている内容が次々に複写される.

特にC-kC-yを 組み合わせた行の移動や複写編集の操作方法に慣れて欲しい.

C-k の働き: カーソルのある位置から,その行の末尾までの削除すると同時に「キルバッファ」に入れる.バッファとは削除した内容を一時的に覚えてくれる場所を意味する.この操作をkill操作と呼ぶ.

C-y の働き: 「キルバッファ」に入れておいた「行」をカーソル位置に復元して入力する.この操作をyank操作と呼ぶ.

尚,Cocoa Emacsの場合,設定次第で,MacOS X標準のキー操作(Command-X, Command-C, Command-V)による,カット&ペーストやコピー&ペースト操作も可能である.

アンドゥ

操作を間違えた場合,アンドゥ操作を試してみよう.アンドゥ (Undo)とは直前の操作を取り消す操作である.アンドゥするにはC-_ (アンダースコア),又は, C-x u (Contorol-xのあとにu)をタイプする.アンドゥを繰り返すと,過去の編集履歴を遡って操作を取り消してくれる.

編集結果をファイルへ保存

C-x C-s で作業結果がファイルに保存される. これを忘れると折角の作業が無駄になることがあるので,必ず編集作業が終わったら保存操作を忘れずに行うこと.

Emacsを終了

C-x C-c でEmacsを終了する. 保存操作を忘れていた場合はメッセージが表示されるので,y か n のどちらか適切な方をタイプして答えればよい.

尚,Emacsの操作中によく分からない状態になってしまった時には, C-g とタイプすれば,殆どの場合,操作開始直前の状態に戻れることを是非覚えておくこと.

英文テキスト編集練習

Emacsを起動して以下の英文を english.txt という名前のテキストファイルとして作成せよ. 尚,これはテキストファイルの作成練習に過ぎないので多少の入力間違いは気にしなくてもよい. 入力間違いに神経質にならないこと! また1行を折り返したい(改行したい)場合は,単に<Return>とタイプすれば良い. 改行を取りやめる場合は<Delete>をタイプすること.(英文は,株式会社アカデミー出版による通信英語講座中級コース「追跡」 ( http://www.ea-go.com/html/chase.html )より引用しました.)

"Look out!" The pilot knew they were going to die.
The large, twelve-passenger Silver Arrow jet plane was being tossed
around in the sky like a toy by the powerful winds over
the Appalachian Mountains in upstate New York.
The pilot and co-pilot were struggling hard to keep the nose of the aircraft up,
fighting against the vicious downdrafts.

ファイルを保存し,一旦,Emacsを終了せよ.その後,再度,Emacsを起動して english.txt を読み込み,以下のように編集せよ. この時,C-kC-yの組み合わせによる行の移動や複写を上手に使うと能率良く編集が行える.操作を行う前に,そのような能率の良い手順をしっかり考えてから編集操作を行ってみよ.

"Look out!" The pilot knew they were going to die.
"Look out!" The pilot knew they were going to die.
The pilot and co-pilot were struggling hard to keep the nose to keep the nose.
"Look out!" The pilot knew they were going to die.
The pilot and co-pilot were struggling hard to keep the nose to keep the nose.
The Appalachian Mountains in upstate New York

Emacs操作の少し上級向けTips

日本語文字に関する注意事項

その1

¥という文字と\(バックスラッシュ)という文字は,コンピュータ内部では本質的に同じ文字を表す場合が殆どである. これは元々アメリカ生れのASCIIと呼ばれるコンピュータ内部の文字表現を日本に持ち込んできたときに,米ドル通貨単位を表す$記号は含まれていたが 日本の通貨を表す¥記号が入っていなかったため,やむを得ず\記号を潰して¥記号として使うように規格が修正されてしまったという歴史的な理由がある. このような理由から,コンピュータのメーカーやキーボードや利用するソフトやOSによっては, コンピュータ内部では全く同じ文字が¥と表示されたり\と表示されたりするが,混乱しないで「同じ文字を表しているが,画面表示が違うだけ」と今の段階では理解しておくこと.技術的詳細は「コンピュータコミュニケーション」などの専門科目で解説されるであろう.

その2

キーボードからアルファベット文字を入力するとき,1バイト文字(俗称:半角文字)と2バイト文字(俗称:全角文字)の違いに注意のこと.UNIXのコマンドやEmacsの操作を行うとき,各種プログラミング言語のプログラム作成を行う場合は,殆どの場合1バイト文字を用いる.間違いやすい一例を以下に示す.前が1バイト文字,後が2バイト文字である.

,, .. :: ;; >> << -− == ||

2バイト文字は,コンピュータ内部では漢字と同じ扱いを受けることを理解しておこう. 1バイト文字を入力しなければならない場合に2バイト文字を入力してしまってトラブルに陥ってしまう人が時々見かけられる. 尚,cse環境でEmacsを利用している場合,英数キーが押された状態でキーボードをタイプして入力できる記号は1バイト文字となっているはずであるが, Windows環境などからcc環境に遠隔アクセスして利用するときは混乱しがちなので注意が必要である.何故なら,1バイト文字と2バイト文字を間違えて入力した場合,上記の例で分かるようにコンピュータの画面上だけでは2バイト文字と1バイト文字の区別はかなり困難であるにもかかわらず,コンピュータは両者を全く異なる文字として厳密に取り扱う.そのために,「見た目は間違っていないように見えるのに,何故だかコンピュータが思ったように動作してくれない」という厄介なトラブルが起こり得るからである.特に厄介な場合として空白文字があり,1バイト空白文字 " " と2バイト空白文字 " " が間違って紛れ込むと画面には何も表示されないために,トラブルの原因がなかなか分からないことがある.

日本語テキスト編集練習

日本語テキスト編集練習その1

既に作成してある英文テキストファイルenglish.txtを読み込んで,先頭行に次のような簡単な日本語文章を入力してみよ.

こんにちは。emacsによる初めての日本語入力です。

上手く入力できたら,そのテキストファイルを保存してから,一旦,Emacsを終了せよ.

次に,Emacsを再起動して,その保存したばかりのテキストファイルを再度読み込んで,確かに日本語文章が入力できている事を確認せよ.

日本語テキスト編集練習その2

次の例文をjp.txtという新しいファイルとして作成せよ.尚,カタカナへの変換は,読みがなを入力後にOption-xをタイプする.また,「」(かぎカッコ)は日本語モードで[]キーをタイプする.

数学の方程式で「X」といえば、未知数のこと。なぜ未知のものごとは「X」で表わすのか。
最初に未知数を表わす記号としてXを使ったのは、十七世紀の数学者であったデカルトであった。
当時、既知数として、a, b, cというアルファベットの最初の3文字が使われていたため、
それなら未知数には終わりの3文字を使おうと彼が提唱したと言われている。

コマンドによるファイルの印刷

ここで,練習で作成したテキストファイルjp.txtを各自に最も近いプリンタから印刷してみよ.その手順は以下の通りに従うこと.

  1. jp.txtをEmacsで開き,先頭部分に各自の学生証番号と氏名を入力して保存する.
  2. まず,自分に最も近い場所に位置するプリンタを確認せよ.さらに,そのプリンタ名をプリンタに張り付けられている小さなラベルを実際に自分の目で見て確認すること.ここで例としてanp2201というプリンタから印刷するものとする.
  3. 周りを少し見回して,他の利用者がプリントアウトしようとしていないことを確認した上で,プリンタに用紙をセットして印刷準備をしておく.
  4. 印刷コマンドlprを以下のような書式でタイプして実行する.
    lpr -P プリンタ名 印刷したいファイル名
    例えば,プリンタanp2201からjp.txtというファイルを印刷したいなら,ターミナルのプロンプトに対して
    mkbka001(103)$ lpr -P anp2201 jp.txt
    とタイプする.ちなみにプリンタ名を指示するオプションは「大文字P(ピー)」だ.良く資料を見なさい.
    プリンタ名とファイル名は各自の場合にそれぞれ置き換えて考えること. また,印刷されるのに少々時間が掛かることもあるから慌てないこと.
  5. 印刷処理は必要最小限度に留めて不要不急な印刷は控えること.印刷する際には「本当に印刷する必要があるのか?(不要な印刷はしない)」「莫大な量の印刷にならないか?(文書によっては数百ページに達する場合もある)」「正しい操作を行おうとしているか?(失敗は紙のむだ遣い)「誤った操作を繰り返そうとしていないか?(印刷操作がうまく行かないからといって,全く同じ操作を繰り返しても,殆どの場合,やはりうまく行かない)」といった点を自問自答してみることが重要である.

改めて確認しておくが,印刷に関わる基本ルールはコンピュータガイドに記載されているから,一読しておいて欲しい.

基礎プログラミング演習Iの表紙ページへ戻る