コンピュータリテラシー演習目次
Emacsの使い方目次

演習:バッファ操作とコピー&ペースト

mizutani@edu.tuis.ac.jp
目次
バッファ操作あれこれ
編集ファイル
複数のバッファを開く
2分割ウィンドウ
ウィンドウの2分割化
編集バッファの切り替え
編集ウィンドウ
Cut & Paste あるいは Copy & Paste
実際の編集
編集資源
バッファ間のコピー&ペースト

ここで使用するEmacs編集コマンド.

コマンド意味
C-x C-f指定したファイルを開く
C-x C-bバッファリスト一覧
C-x o2つのバッファ間のカーソル移動
(他のウィンドウへの表示切替)
C-x 0バッファ表示を閉じる
C-x 2ウィンドウの2分割化
C-x b編集バッファの切り替え
C-spcマークする
M-wマーク地点とカーストで囲まれた領域をメモリにコピー
C-yメモリ内容をカーソル位置にペースト


第1部

バッファ操作あれこれ


目次

編集ファイル

以下の演習では,LaTeXファイル ~/doc/webpage.tex を使いながらEmacsの編集操作を紹介する.

以下のエディタ操作において,Emacsウィンドウ上段にあるメニュー(マウスによる操作)を使ってならない. あくまでもキーボード入力だけの操作を習得すること.

目次

複数のバッファを開く

Emacsをファイル名を指定せずに起動,つまりX Window Systemでは
% emacs &
としてから,さらに C-x C-f によって指定したファイル ~/doc/edit.tex を開こう.

演習:ファイル ~/doc/edit.tex のためのバッファを開け(~/doc内にedit.texというファイルがなくてもかまわない)

C-x C-f を入力してミニバッファに次のように入力する.

---------------------------------------------------
Find file: ~/doc/edit.tex
---------------------------------------------------

以上の操作において,Emacsでは2つのバッファを開いている. Emacsを開くべきファイルを指定せずに起動したときに自動的に用意されるバッファ *scratch* と,C-x C-f でファイル edit.tex を読み込むために開いたバッファ webpage,tex(この場合,ファイル名とバッファ名が同じになっていることに注意する) の2つである.

同様に C-x C-f によってさらに別のバッファをEmacs内に用意することができる. このとき,ミニバッファに入力されるファイル名(ディレクトリパスも同時に指定する.これがバッファ名となる)に相当するファイルが実際に存在していれば,その内容がバッファに読み込まれるが,該当ファイルが存在しないときには,空のバッファが用意される(ただし,バッファ名は指定した通りにつけられている).

演習:ファイル ~/public_html/game.html のためのバッファを開け C-x C-f を入力してミニバッファに次のように入力する.

---------------------------------------------------
Find file: ~/public_html/game.html
---------------------------------------------------

さて,現在開いているバッファリストはEmacsコマンド C-x C-b によって確認することができる. すると,エディタウィンドウが2分されて分割ウィンドウとなり,次のようなメッセージが表示される.

 MR Buffer         Size   Mode           File
 -- ------         ----   ----           ----
.   game.html	   0	  Fundamental	/home/inform/stdnt98/b98765tj/public_html/game.html
    edit.tex	   2345	  TeX		/home/inform/stdnt98/b98765tj/doc/edit.tex
    *scratch*	   0	  Lisp Interaction 
 *  *Buffer List*  293	  Fundamental	
このとき,テキストカーソル■があるウィンドウ画面が編集対象である. この例では,バッファ名は Buffer 欄に表示されているように game.html, edit.tex そして *scratch* の3つである. これらが File欄に表示されているファイルに関連付けられているのである.

目次

2分割ウィンドウ

エディタウィンドウが2分割されているときには主に次の操作が問題となる.

分割ウィンドウ間のカーソル移動

分割ウィンドウ間でテキストカーソル■を移動させるには C-x o(oは小文字のオー)を使う(o は Otherの意味である). 分割ウィンドウになっていなくとも,バッファが2つ開いている場合,C-x o でもう一方のバッファにカーソルが移動する(つまりもう一方のバッファウィンドウが表示される).

演習:C-x o を繰り返し入力することによってカーソル■が分割ウィンドウ間をいったり来たりすることを確かめよ.

分割ウィンドウを閉じる

テキストカーソルの■のある側の分割ウィンドウを閉じるには C-x 0(ゼロである!小文字のオーと紛らわしいけど)を入力する. 分割ウィンドウでなくとも,C-x 0 によって現在表示されているバッファが閉じる.

ただし,バッファ表意をやめるだけで,バッファ内容はそのままの状態で残っている.

演習:バッファリストを表示している側の分割ウィンドウを閉じよ.

演習:今までの作業を復習せよ. バッファリストを表示させ,そのバッファリストウィンドウを閉じよ.

目次

ウィンドウの2分割化

エディタウィンドウが1画面で表示されているとき,これを2分割表示に切り替えるには C-x 2 を入力する.

C-x 2ウィンドウ表示の2分割化
2分割表示にしているときには,モード行に表示されているバッファ名(ファイル名)に常時注意し,またどちらの画面が編集対象であるか(テキストカーソル■のある方)にも気をつけねばならない.

演習:現在のエディタ画面を2分割表示とせよ. その際に,モード行に表示されるバッファ名はどうなるか. 分割されたウィンドウ間でテキストカーソル■を交互に移動して編集可能なバッファを交換せよ. さらに,指定した分割ウィンドウ(上下のどちらか)にバッファリスト内の指定したバッファ内容を表示してみよ. そして,どちらかの分割ウィンドウを閉じてみよ.

目次

編集バッファの切り替え

複数のバッファを開いているときには,各バッファを切り替えながらその内容を編集しなければならない. 分割ウィンドウは高々2つのバッファまでしか表示しない.
多数のファイルを編集するために,複数のEmacsを起動することは完全な誤りである. 多数のファイルを同時に編集するときでも,1つのEmacsを起動してその内部に多数のバッファを開きながら作業することが正しい.

確かに,同時に複数のウィンドウを何枚も表示しながら作業する方が分かりやすいのは事実だが,Emacsではそのような仕様にはなっていない. しかし,このEmacsのやり方(Emacsを使った作業のポリシー)に慣れてくると,いたずらに多数のウィンドウを開く(Windowsやmacintoshなどでの)やり方によりは簡素で極めて効率的なことが体感できる.

一枚のEmacsウィンドウを開いて,マウスを使わずに自在に編集などの仕事をこなせるようになることがUNIX使いの第一歩である. 確かに,そのためには修行をつまねばならないが,その価値は絶大である.

エディタ画面(1面のときに分割画面のときも)に別のバッファ内容を表示させる,つまり開いている多数のバッファリストから指定したバッファ内容をウィンドウに表示するためには C-x b によって次のようにミニバッファに開きたいバッファ名を指定する.

C-x bSwitch to buffer: (default *scratch*)バッファ名

演習:上の例で,開いているバッファ名が edit.tex, game.html, *scratch* であるとき, バッファedit.tex の内容をエディタウィンドウに表示せよ.

C-x b を入力して

-------------------------------------------------
Switch to buffer: (default game.html) edit.tex
-------------------------------------------------
とすれば,バッファ名edit.texに対応した内容が表示される. 注意すべきことは

目次

編集ウィンドウ

実際に開いたファイルを編集する際には のいずれかを適時選択肢ながら作業を行う. 別の作業を参照しながら(眺めながら)ファイルを作成を作成しなければならないときには,2画面に分割して作業をした方がいいが,しかし,作業ウィンドウが狭いという欠点もある.

目次

Cut & Paste あるいは Copy & Paste

1つのEmacsプログラムを起動して多数のバッファを用意して編集作業を行うことの真意は,これらのバッファ間でのカット&ペーストを可能にするためである.

新たに作成しようとする(多数の)ファイルを,既存の(多数の)ファイルの部分部分をコピーしながら別の場所にペーストしながら作成する手法をコピー&ペースト,切り取りとって別の場所の貼り付けながら作成する手法をカット&ペースト)と呼ぶ. 両者の操作はほぼ同じである.


第2部

実際の編集


目次

編集資源

さて,以下に示す内容を持った4つの見出しタグ<H2>と</H2>からなっているHTMLファイル ~/public_html/index.html を編集資源とし上の手法を使って.その内容に応じて次の4つのファイルを作成しよう. ファイル名に先立ってディレクトリパス~/public_htmlをつけたのは,これらのファイルをディレクトリ ~/public_html に作成することを意味している. つまり,ホームページのためのHTMLファイル index.html(分量はかなりあるはずだ)を細かくファイルに分けようということだ.
┏━━━━━━━━━━━━━━━━━━━━━━ ~/public_html/index.html
<HTML>
<HEAD>
<TITLE>浦島田太郎のホームページ</TITLE>
</HTML>
<BODY>  

<トップページ>
ようこそ情報太郎のホームページへ.

<UL>
<LI>故郷紹介
<LI>私の趣味
<LI>大学生活
</UL>
東京情報大学 情報学科 1年<BR>
情報太郎 (JYOUHO Taro)<BR>
ご意見などはb98765jt@edu.tuis.ac.jp

<H2>故郷紹介</H2>
私の故郷は xxxx です.
............

<H2>私の趣味</H2>
最近の私は xxx に熱中しています.
..........

<H2>大学生活</H2>
所属しているサークルは ........
..........
</BODY>
</HTML>
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━

目次

バッファ間のコピー&ペースト

以降の作業のためには,C-SPC と M-wによって指定した領域(リージョン)をEmacs内のメモリにコピーし,C-y でその内容をコピーするというコピー&ペーストの技法をしっている必要がある.
  1. 編集バッファの準備

    まず,Emacsを起動して index.html を読み込む. さらにこれから作成・編集し保存するファイルのためのバッファを次のように3つ用意する.

  2. 削除した領域を指定したバッファにペーストして保存する

以上で,index.htmlを情報資源として,その相当する領域をカット&ペーストすることによって4つのファイル index.html(内容更新), hometown.html, hoby.html そして studentlife.html を速やかに作成することができた.

こうして選られたファイルを改めてHTMLの規約に従ってWebページとして完全なものとするためにさらに加筆・編集を行うのである.

目次

Emacsの使い方目次
コンピュータリテラシー演習目次


mizutani@edu.tuis.ac.jp