第
10 回: 改行コード,テキストエディタ
1. テキストファイル利用上の注意 (3)
第5 回,第 6 回の授業で取り上げたように,テキストファイルには,いくつか重要な性質 がある。これまでの授業では,以下の2 点を中心に取り上げてきた。 (1) 文字の情報以外は保存されない。 (2) ひとつのテキストファイル中には,ひとつのエンコード方式しか適用できない。 今回はもう一つのポイントについて解説する。(3) テキストファイルの改行コードは,OS (Operating System) によって異なる。
1.1. 改行コードの違い テキストファイルで使用されるコードのうち,文字以外の要素でテキスト情報として頻繁 に利用される記号は以下の4つである。 • タブ (Horizontal Tab, HT) ... 文字コード 09 • 改行 (Line Feed, LF) ... (16 進数) 0A • 復帰 (Carriage Return, CR) ... 0D • 空白 (Space, SP) ... 20 これらの記号のコードは,もともとASCII で規定されたものだが,殆どのエンコード方式 でそのまま利用されている。以下は,ASCII のコード表である。 上 の 桁 (10 の位) 0 1 2 3 4 5 6 7 0 SP 0 @ P ` p 1 ! 1 A Q a q 2 " 2 B R b r 3 # 3 C S c s 4 $ 4 D T d t 5 % 5 E U e u 6 & 6 F V f v 7 ' 7 G W g w 8 ( 8 H X h x 9 HT ) 9 I Y i y A LF * : J Z j z B + ; K [ k { C , < L \ l | D CR - = M ] m } E . > N ^ n ~ 下 の 桁 (1 の 位 ) F / ? O _ o
千葉庄寿 (ちばしょうじゅ) [email protected] 2 このように,ASCII には「改行」(LF)というコードがあるが,このコードがそのままテキ ストの改行記号として使われるとは限らない。実は,前回 (テキストファイルの添付),前々 回 (FTP) 資料でも簡単に取り上げたように,テキストファイルの改行記号はコンピュータ の基本ソフト OS によって以下のように異なっている。 Windows CR (復帰) + LF (改行) Macintosh CR のみ Unix LF のみ
テキスト: test [スペース] test [改行] test 実際のデータ
t e s t
[スペース]74 65 73 74 20
t e s t
[改行]74 65 73 74 0D 0A
t e s t
74 65 73 74
(第 5 回資料再掲) Windows では,CR (復帰) と LF (改行) の2つの連続したコードで改行がおこなわれる。 テキストを処理する際に,「復帰」が「行の先頭へ戻る」信号,「改行」が「下の行へ移動 する(=行を改める)」信号として解釈され,結果として改行されるのである (下図参照)。 例: Windows での「aaaaaa + 改行 + aaaaaa」の処理これに対し,他のOS では,CR ないし LF のコード一つで「行頭へ戻る」と「行を改める」 という 2 つの動作が同時におこなわれるようになっている。このため,異なる改行記号が 原因で,OS を問わず利用できるはずのテキストファイルを正しく表示できないことがある。 実習: Kadai サーバの[schiba]→[2002fl]→[No10]フォルダを ZIP などにコピーしなさい。 windows.txt を 「 メ モ 帳 」 で 開 き , 内 容 を 確 認 し な さ い ( 内 容 は ,「 青 空 文 庫 」 http://www.aozora.gr.jp/ で公開されている石川啄木の歌集「悲しき玩具」)。同じファイル の改行記号を Macintosh 用,Unix 用に変更して保存したのが,それぞれ macintosh.txt, unix.txt である。これらのファイルを同じように「メモ帳」で開き,どのように表示される か確認しなさい。
1.2. Word を使った改行コードの変換
Word に異なる OS によって作成されたテキストファイルを読み込むと,Word は自動的に 改行記号のコードを変換してくれる。従って,Windows 用の Word でテキストファイルを 開くことによって,Mac や Unix で作成されたテキストファイルを Windows 用の改行記号 で編集し,保存できる。
aaaaaa
aaaaaa
CR 「行頭へ戻る」実習: コピーした [No10]フォルダのファイル macintosh.txt を「テキストファイル」と してWord に読み込みなさい。改行記号が windows.txt と同様に表示されていることを確認 し,macintosh2.txt という名前をつけてテキストファイルとして保存しなさい(日本語 Shift JIS で入力されているので,ファイルの種類は「テキストのみ」で OK)。保存したら, macintosh2.txt を「メモ帳」で開き,もとの macintosh.txt と比べなさい。 このように,Word を使うと,異なる OS の改行記号を処理できない「メモ帳」の問題を解 決することができる。 一方,相手のOS が分かっている場合には,あらかじめ改行記号をその OS 用に変換してか ら渡すのが望ましいが,Word2000 では,テキストファイルに Mac や Unix の改行記号を 指定して保存することはできない (Word2002 では可能)。たとえば Macintosh を使う人に テキストファイルをフロッピーで渡す場合,改行コードをWindows (CR + LF) から Mac 用 (CR) に変えるためには,改行の形式を指定できるツールを利用することが必要である。 以下で解説する多言語テキストエディタ xyzzy では,改行記号の種類を指定してファイル を読み書きすることができる。
2. 多言語エディタを使った外国語文書編集
Word は本来レイアウト付きの文書作成用であるで,テキストファイルを扱うには不必要な 機能が多く,操作性が悪い。そこで,テキストファイルを編集したり,さらにHTML 文書 を作成する,といった作業には,より軽快で,テキスト編集のための機能が充実したテキ ストエディタを用いるとよい。 Windows に付属している「メモ帳」もシンプルなテキストエディタであるが,それ以外に も,実に多くのテキストエディタが存在する 1。ここでは,大学のPC にインストールされ ている,本格的な多言語対応テキストエディタxyzzy を紹介する。 xyzzy は亀井哲弥さんが開発をおこなっているフリーソフトウエアで,ダウンロードして 自分の PC にインストールし,無償で使うことができる (最新バージョンは 0.2.2.227)。 xyzzy はもともと Unix で使われている多機能エディタ emacs を手本にデザインされてい るので,通常のWindows アプリケーションとは操作が異なるところがあるが,非常に豊富 な機能を備えたエディタであり,ユーザが独自に機能を追加することができる。今回は,詳細には立ち入らず,基本的な使い方のみを紹介する。詳しい利用法については, 以下のURL などを参考にしてほしい。
• 作者によるダウンロードのページ (http://www.jsdlab.co.jp/~kamei/) • Toy's xyzzy memo (http://www.carabiner-systems.com/xyzzy/index.html) • xyzzy manual Part2 (http://www.jsdlab.co.jp/~kei/xyzzy/xyzzy2.html)
2.1. xyzzy の基本操作
起動: [スタート]→[プログラム]→[多国語エディタ]→[xyzzy] を選択する。
1 Windows 用のテキストエディタは「窓の森」http://www.forest.impress.co.jp/editor.html な
千葉庄寿 (ちばしょうじゅ) [email protected] 4 ウィンドウ構造: モードラインの詳細: 改行記号の種類 (CR + LF) パス名つきファイル名 (「File_ServerのHome」 (F:) にある 「2002fl」フォルダに ある「korean.txt」ファイル) 改行記号の種類 (CR + LF) エンコード方式 (韓国語 EUC-KR) バッファ名(一時メ モリに読み込んで いるデータの名前) 桁番号 行番号 文書変更あり (要保存) ファイルの読み込み: [ファイル]メニューで[開く]を選択する。必要であれば,ファイルの 種類,エンコーディング (エンコード方式),改行コードを指定する (エンコーディングは 膨大であるが,これまでに紹介した各言語の標準的な文字コード体系を選べばOK)。xyzzy には,エンコード方式や改行記号の自動認識機能があるが,エンコード方式が分かってい る場合はきちんと指定したほうがよい(自動認識はうまくいかないことが多い)。 間違ったエンコーディングで読み 込んだ場合には, [ファイル]→[閉 じる]でファイルを一旦閉じ,もう 一度読み直すこと。 バッファ:テキスト の編集画面 ミニバッファ: 編 集 用 の 特 殊 な キ ー 操作(キーバインド)に よ っ て 呼 び 出 さ れ る メ ッ セ ー ジ が こ こ に 表示される。 モードライン:編集中の データの情報が詳しく表 示される (後述)
ファイルの保存: エンコード方式や改行コード の種類を指定してファイルを保存するには,[ファ イル]→[名前をつけて保存]を選択する。 フォントの変更: [ツール]→[共通設定]を開 く。「フォント」タブに「文字セット」の項 目があり,文字セット (文字の種類) ごとに フォントを指定できる。自分の言語のフォン トが正しく指定されているか確認しよう。 (Word とは異なり,フォントは自動設定され ない。) ヒント: 「共通設定」におこなった変更 は,ユーザごとに保存され,以降の起動時 に反映される。設定ファイルはネットワー クドライブ (file_server の Home) に xyzzy.ini お よ び .xyzzy.history (ファイル先頭のドットに注意) という名 前で保存される。(これらの設定ファイル を削除すると,起動時にファイルが新規作 成され,標準の設定に戻る)。 現在編集中のファイルに関する情報 (エンコードなど): [ツール]の[ローカル設定] (「もろ もろ」タブ) で確認できる (この画面でエンコーディングの変更はできない。あらかじめこ こで設定を変更した後,ファイルを読み込むと,設定が適用される)。 xyzzy の設定変更: [ツール]→[共通設定]で設定をおこなうことができる 2。 • 「表示」タブでは,編集画面の表示機能を カスタマイズできる。行番号やスペースな ど,各種記号の表示を選択できる。 • 「バックアップファイル」タブでは,ファ イルのバックアップの方法を指定できる。 xyzzy では,上書き保存する際に元のファ イルの内容を保存するバックアップの仕 組みが標準で適用される (元のファイル 名の末尾 [拡張子の後] に .1~, .2~ …と いった文字を加えたファイル名で保存さ れる)。 2 「共通設定」項目の詳細についての解説は以下の Toy さんの web ページに詳しい: http://www.carabiner-systems.com/xyzzy/setting.html
千葉庄寿 (ちばしょうじゅ) [email protected] 6
本日の提出課題
提出課題1 (必修): 自分の選択する言語が話されている地域を選び,その国や地域の「国 歌」をxyzzy エディタ (Word でもよい) を使って入力しなさい。national_anthem.txt とい うファイル名をつけ,その言語のエンコード方式を指定して保存しなさい (日本語を混在さ せないように注意すること)。テキストには以下の内容を,この順序で記述すること。 • 自分の名前 (ASCII) ,Hotmail と麗澤大学での電子メールアドレス • 国・地域名 (その言語での名称,および英語での名称) • 国歌のタイトル • (可能なら) 作詞者・作曲者 • 歌詞 (全文) 本日,または次回授業までに文字化けのないよう印刷し,提出する。 参考までに,各言語での「国歌」をあらわす単語は以下のとおり。 • 英語: national anthem • 韓国語: 국가 (國歌, gukga, gug-gga) • スペイン語: himno nacional • 中国語: 國歌, 国歌 (guógē) • ドイツ語: Nationalhymne • フランス語: hymne national 提出課題2 (任意): 次回授業までに,上記の国歌のファイルを HTML 文書化し,外国語 HTML 文書作成の練習をおこないなさい。エンコード方式や言語属性の記述もおこなうこと。 作成した文書は 学籍番号_2.html という名前で保存し,次回授業前までに Kadai サーバの [schiba]→[2002fl]→[html2] フォルダに提出しなさい。 それぞれの言語のテキストファイルを確実に作成できるよう,よく訓練しておくこと!期 末試験では,筆記に加え,外国語テキストの入力・編集・保存に関する実技を問題に含め る予定である。
2.2. 注意すべき xyzzy の特徴 [より深くエディタを使うために] • 独特のキー割り当て
xyzzy は,通常の Windows アプリケーションと異なり,Unix でよく使われる多機能 エディタ emacs に準じたユーザインターフェースになっている。そのため,独特のキ ー割り当て(ショートカット) が使われており,「メモ帳」や「Word」の標準的なショ ートカットを使う人には使いづらい。よく使われるキー割り当てを以下に挙げる。
※ Ctrl / Shift + [キー]: Control (または Shift) を押しながら[キー]を押す ※ Esc [キー]: Escape を押し,離してから[キー]を押す ※ これ以外にも,xyzzy には数多くのキーバインドが登録されており,[ヘルプ] から[キー割り当て一覧]をみると,キーバインドのリストが得られる。 操作の種類 xyzzy のキー割り当て (emacs 風) 通常の Windows のキー (Word,メモ帳などでの標準 的なキー割り当て) 選択範囲のコピー Ctrl + Insert Ctrl + c 貼り付け Shift + Insert Ctrl + v 選択範囲の切り取り Ctrl + Delete Ctrl + x テキストをすべて選択 Ctrl + a 新規作成 Ctrl + x b バッファ名 Ctrl + n ファイルの読み込み * Ctrl + x Ctrl + f (このキーを打った後,ファイルをパス 名つきで書く。補完機能があるので,途 中まで入力して[tab]キーを押すと候補 がでるので便利。) Ctrl + o ファイルの新規保存 (「名前を付けて保存」) * Ctrl + x Ctrl + w Ctrl + s ファイルの上書き保存 Ctrl + x Ctrl + s Ctrl + s 後方検索 Ctrl + s (アクセント記号などの入ったア ルファベットも入力できる) Ctrl + f 前方検索 Ctrl + r (アクセント記号などの入ったア ルファベットも入力できる) [なし] キー操作のキャンセル Ctrl + g ESC 元に戻す (undo) Ctrl + \ Ctrl + z も う 一 度 同 じ こ と を す る (redo) Ctrl + _ ページを下スクロールする Ctrl + v PageDown ページを上スクロールする Esc v PageUp ファイルの先頭へ Esc < Ctrl + Home ファイルの末尾へ Esc > Ctrl + End 置換 (一括) ESC r [なし] 置換 (確認つき) ESC Ctrl + r Ctrl + h * エンコード等を指定したい場合には,[ファイル] メニューからおこなう必要がある。 同じキーストロークにも関わらず,Windows の標準的なショートカットと xyzzy のキ ーバインドで全く異なる機能があてがわれていることがあるのがわかるだろう (例え
千葉庄寿 (ちばしょうじゅ) [email protected] 8 ば,Ctrl + s, Ctrl + v)。xyzzy のキー割り当てでなく,Windows の標準的なショート カットを使いたい場合には,以下のようにWindows 用のキー割り当て設定を読み込む。 1. Esc x と打つ (Escape を押し,キーを離した後 x をタイプする)。 2. load-library と打ち,改行キーを押す。 3. Gates.l と打ち,改行キーを押す。 ヒント:上記の設定を毎回おこなうのが面倒だが,常にWindows のショートカットを使 いたい,という場合には,環境設定ファイルに設定を記述し,起動のたびに読み込むよう に設定する。 (load-library "Gates") という内容を書いたファイルを作成し,「.xyzzy 」(ファイル先頭のドットに注意!)と いうファイル名をつけてFile_server の Home に保存する。すると,xyzzy を起動するた びにWindows 用のキー割り当て設定ファイルが読み込まれる。 この設定ファイルには,他にも xyzzy のカスタマイズ設定をさまざま記述しておくこと ができる( .xyzzy ファイルを削除すると,標準の設定に戻る)。 • アプリケーション間でテキストをコピーする場合の注意 異なるアプリケーション間でテキストをコピー&ペーストするには,コピーしたテキ ストを保存するメモリーにエンコード方式を指定する必要がある。 ¾ xyzzy 上の外国語テキストを他のアプリケーションにコピーするには,[編集] →[クリップボードエンコーディング]を選択し,編集中のテキストのエンコー ド形式 (例えば「欧米」→「欧米 (ISO-8859-1)」) を指定する。 ¾ 他のソフトウエアから外国語テキストをコピーして xyzzy に貼り付ける場合 には,コピー元のソフトがWord や Internet Explorer の場合,「Unicode」→ 「Unicode (UTF-16)」を選択する。Netscape Communicator 4.7 は各言語の エンコード方式を指定する (西ヨーロッパ言語なら「欧米」) 3。 中国語や韓国語など,漢字圏の言語の場合はそのままでもうまくいくことがある。し かし,上述のようにクリップボードのエンコードを設定するのが確実である。 • テキストの検索と置換の問題 xyzzy は多言語テキストを編集するために必要な殆どの機能を持っているが,唯一,検 索と置換に難がある。[検索]メニューの[検索], [置換]では,アクセント記号つきアルフ ァベット入りの文字列を入力し,検索・置換することができない (2 バイト文字言語で ある中国語,韓国語はうまくいくことがあるが,確実ではない) 4。
3 Word や Internet Explorer など,コピー元のアプリケーションが「Unicode アプリケーショ
ン」 (=プログラム内部で Unicode を使うアプリケーション。詳しくは後日取り上げる) である 場合は,コピーするテキストのエンコードを「Unicode (UTF-16)」とする必要がある。Netscape Communicator 4.7 や xyzzy は Unicode アプリケーションではない。
4 実際には,xyzzy ウィンドウのミニバッファを使う emacs 風の検索・置換を呼び出すことで
外国語を含むテキストを扱えるが,emacs の操作になじみがないと使い勝手が悪い。また, Windows 用のキーバインド設定 (Gates.l) を導入すると,この操作による検索ができなくなる。