• 検索結果がありません。

マ イ ク ロ ソ フ トエ デ ィ タの カ ス タマ イ ズ 行 方 常 幸

N/A
N/A
Protected

Academic year: 2021

シェア "マ イ ク ロ ソ フ トエ デ ィ タの カ ス タマ イ ズ 行 方 常 幸"

Copied!
17
0
0

読み込み中.... (全文を見る)

全文

(1)

マ イ ク ロ ソ フ トエ デ ィ タの カ ス タマ イ ズ

行 方 常 幸

目 次

1. は じめに

2.MSOS/2

とマイクロソフトエディタ

3.

マイクロソフトエディタの機能

4.

カスタマイズの方法

5.

注意事項 と問題点

6.

おわ りに

1

.は じめに

今 日情報化時代 の到来で,私達 の身の回 りに も多種多様 の機器が整備 され, それを使 い こなすための労力 も無視 で きな くなって きてい る

私 に関 して言 え ば,一番身近 にあるのは,

NE

Cのパ ーソナル コンピュー タ,さ らに情報処理 セ ンターにあ る富士 通 のノ T o ‑ ソナル コ ンピュー タ,

SUN

及 び ∑の両 ワー クス テー ション,等 である。例えば, プ ログラム を作成 す る際 に利用す るエディタ を考えてみ ると, それぞれに異 な ったソフ トがあ り, その利用法 を覚 え るだけ で も大変であ る。 しか し, この頃 は既定 のキー操作法 を, ある程度 自分 の好 き なよ うに変更 で きるカスタマイズ機能がっ いてお り, それを利用 して自分 の慣 れた操作法 に変更すれば,利用法 を覚 え る際の労力をかな り省 ける。ここで は, パ ーソナル コ ンピュータ用 の与イクロソフ トエデ ィタを ファイナル風 にカス タ マイズ したのでその概要 を述 べ る。

なぜマイクロソフ トエデ ィタを利用す る必要があ ったか と言 えば,私 が利用 可能 な

MSOS/2

のプ ロテ ク トモ丁 ド用の エデ ィタが これ しか なか ったか ら である。

〔101

(2)

102

商 学 討 究 第

40

巻 第

1

2.MS OS/ 2

・ とマイクロソフ トエデ ィタ

パ ーソナル コ ンピュータのオペ レーテ ィングシステム

(OS)

と しては,マイ クロソフ ト社 の

MS‑DOS

が主流 であ るが, 同社 の次期世代 の

OS

または

MS‑

DOS

のい くつかの限界 を克服 した

OS

と して

MSOS/2

が注 目されている。

MSOS/2

を動作 させて まず分 か ることは,シイグルユ ーザー,シングル タ スク用の

OS

であ る

MSIDOS

と違 い,

MSOS/2

は シングルユーザー, マル チ タスク用の

OS

であるとい うことである

す なわち,大型計算機 や ワークス テー シ3. ンのよ うに複数 の人の同時の利用を 目的 と した ( マルチユーザー)

OS

で はないが,

1

人の人 が複数 の仕事 を同時 にす るために設計 された

OS

である

と言 うことであ る

もう少 し具体的 に言 うと,

CTRL+ESC

または

GRPH+

ESC

を押す ことによ り, 1 つのプログラムを実行中に,そのプ ログラムを終了 せず に他 のプ ログラムを実行で きる。 また, マイクロソフ トエディタで は,編 集 中の フ ァイルをバ ックグラウ ン ドで コンパ イル しなが ら,他 の ファイルの編 集 がで きる

。MS‑DOS

では,編集 中の ファイルの コ ンパ イル中は何 もで きず,

コンパ イルが終 わ ってか ら次 の処理 を しなければな らない。

MS OS/2

には, こ一 の よ うに複数 の仕事 を処 理 で きるプ ロテ ク トモ ー ド

(OS/2

モー ド) があ るが このモー ドでは今 までの

MS‑DOS

用 に開発 された ソフ トは利用で きない。そ こで このプ ロテク トモー ドの他 に

,MS‑DOS

との互 換 を実現 した リアルモー ド

(DOS

互換 モー ド)があ る

プ ロテク トモー ド用 ソ

フ トはまだ余 りないが,プ ログラム言語 と して は,マイクロソフ ト C コンパ イ

(MS‑Cver5

. 1 ),マイクロソフ トマクロアセ ンブラ

(MASM ver5

. 1 )等 が

発売 されてお り, それに付属 しているのがマイクロソフ トエデ ィタである。 そ

の他 に もソース レベルでデバ ッグで きるコー ドビュー も付 いている。 マイクロ

ソフ トエデ ィタは これから のマイ クロソフ ト言語 に標準 で装備 され る標準 エ

デ ィタと して位置づ け、 られて いる

マイクロソフ トエデ ィタには リアルモー ド

(M.E支E)

とプロテク トモー ド用

(MEP.E支E)

、 の

2

個があ り,キー操作 も

同 じで,リアルモー ド用 は

MS‑DOS(ver3.xx)

で も利用で きるので大変 あ り

(3)

マイクロソフトエディタのカスタマイズ

103

がたい ものであ る

私 が利用 した ことのあ るエデ ィタはファイナル, マイフェス,及 びマイクロ ソフ トエデ ィタであるが, それぞれに特徴があ り,利用可能 な使 い慣 れた もの を利用す るのが一番良 い と思われ るが∴私 の気 が付 いた上記 のエデ ィタにはな いマイクロソフ トエデ ィタの特徴 を少 しあげてみ る

単独 のエデ ィタであ りな が ら,

TURBOPASCAL

等 のよ うに, エデ ィタ内か らコンパ イルで きコンパ イルエラーがあれば ソースファイルのエ ラーの箇所へ カーソルが移動 す る.宿 集 したファイル名や,編集位置, エデ ィタの状況 などを保存す るた吟, エデ ィ

タを編集 ファイル名 を指定 せずに起動す ると,一番最近 にエデ ィタを終了 した ときの状態 になる

C

言語 でプ ログラムす ることによ り,新 しい機能 を追加 で きる。ただ し,マイフェスに もマクロ言語

MIL

とい うのを利用すれば新 しい機 能 を追加で きる。

3.

マイクロソフ トエデ ィタの機能

マイクロソフ トエデ ィタには, ( 表

1

) にあるよ うに

62

個 の基本的 な機能 が あ り, それをいろいろな構文 に組 み合わせ ることによ り, エデ ィタと しての強

力 な機能 を実現 している。 この

62

個 の機能 を どのよ うな構文 に組 み合 わせ る とどの様 な機能 が実現で きるかに関す る詳細 はマニュアルを参照 して いただ く と して, い くつか例 をあげてみ る。

正規表現 され た文字列 を現在位置 か らフ ァイルの終 わ りの方 へ検索 す るに は,

ArgArg

検索文字列

Psearch

とい う構文 を使 う。デフォル トで は

Arg

GRPH+A,Psearch

F3

が割 り 当て られて いるので,

GRPH+A

,

GRPH+A

, その後検索文字列 を入力す る か,カーソルを移動 させて検索文字列 を‑ イライ トさせ,最後 に

,F3

とすれば 良 い。 この例 のよ うに,

Arg

機能 を呼 び出す と, キー入力 またはカー ソル移動

によ って,次 の機能 に引数 を渡す ととがで きる。

画面上 の ブロックを削除 して,バ ッファ (ク リップボー ド) にコピーす るに

(4)

104

商 学 討 究 第

40

巻 第 1号

1

マイク E 3ソフ トエデ ィタの機能 とデ フ ォル トのキー操作

機 ■ 能 . デ フォル トのキー操作 機 能 デ フォル トのキ丁操作

Arg GRPH+A. Mark cTRL十M

Argcompile 亘声 Meta F.9‑

Assign GRPH+g Mlir19S CTRL+W

.

Backtab SHIFT+TAB. Mpage ROLLDOWN

または

CTRL+R Begline HOME Mpara CTRL+ROLL DOWN Cance FSC L Msearch F4

Cdelete CTRL+G ̲ Mword CSHITRLFT+Ⅰ

+‑または

NSCTRL+A Compile . SHⅠFT+F:3 Newline

CoApy CTRL+ⅠCTRL+

Ⅹ ま七 は J

NS Paste

Curdate . Pbal CTRL+ [

Curday Plines CTRL+Z

Curfile Ppage ROT.LUP

または

CTRL+C CurfileeXt Ppar? CTRL+ROLLUP Curfilenarp 1.Psearch F3 .

Curtime Pword CTRL

+‑または

CTRL十F Curuser Qreplace CTRL+

¥

Down Quote CTRL+P

Emacscdel‑ B.畠: Reflesh sHⅠFT+F7

Emacsnewl

リター ン

ReplacP CTRL十L

→.

D写し

または

CTRL+D Endline HELP Restcur

EXe̲cute F7 Right EXit‑ F8 SaVecur . HPlp F1 Sdelete

Home CLR Setfile F2

nformation SHlFT十F1 Setwindow CTRL+]

nitialize. SHⅠFT、+F8 Shell SHⅠFT‑トF9

nsertmode NS

また

峠CTRL+Ⅴ Sinsert CTRL

J

LastteXt CTRL+0 元 .b TAB

Ldelete cTRL■Y Undo GRPH+IBS

Left CTRL+S

また は‑

Up

‑ ̲Tまたは

CTRL+E

(5)

マイクロソフトエディタのカスタマイズ 105

は,

Arg

範囲指定

Ldelete Arg

範囲指定

Sdelete

という構文 を使 う

範囲指定 はブロックの部分を‑イライ トさせ ることによる が,箱 型 削 除 の場 合 は, 前者 の

Ldelete

,文字 列型 削除 の場 合 は, 後者 の

Sdelete

を用 いる。 デフォル トでは

Ldelete

には

Ctr1+Y

,

Sdelete

には

DEL

が割 り当 て られて い るの で,

GRPH+A

, カー ソルを移動 して範 囲指定,

Ctrl+Y

( または,

DEL)

と入力す る。

Arg

機能 を

Ctrl+B

に割 り当てたい場合 には,

(1)

Arg"Arg:Ctrl+B"Assign

という構文を使 う。

Assign

はデフォル トでは

GRPH+‑

に割 り当て られてい るので,

tGRPH+A,「Arg:Ctrl+B

」 とキー入力,

GRPH+

‑とすれば,以後

Ctrl+B

Arg

機能 を呼 び出す ことがで きる9

1

つのキー操作 に複数 の機能 を 割 り当てた場合 には, いちばん最後 に割 り当てた機能だけが有効 となる。

「1 行挿入 してカーソルをその行の先頭へ移動 させ る

Ctrl+N

に割 り当 て るには,

(a) Arg"x:=LinsertMetaBegline"Assign.

(b) Arg"Ⅹ:Ctrl+N''Assign

とい う構文を使 う

1

行 目は Ⅹというマクロを

「1

行挿入 し

(Linsert)

, カー ソルを行の先頭 に移動 させ る

(MetaBegline)

と定義 し,

2

行 目で このマク ロに

Ctrl+N

というキー操作を割 り当てている。 ここで注意す ることは,い く つかの機能 をまとめてマクロにす るには,

(2)

マ クロ名 :‑ 処理す る機能

とすれば良 いことである。 また, キー操作を割 り当て るには,

(3)

マクロ名 または機能名 : キー操作

とすれば良 い

上記の

(a

,b)の様 にすれば, エデ ィタを利用中に実行可熊 な機能 を自分の

好 きなキー操作 に割 り当て ることがで きる。 さ らに, この ことをェデ ィタ起動

(6)

106

商 学 討 究 第

40

巻 第 1号

時 にい っぺんにや って しま うことがで きる

。(a

,

b)

Assign

に渡す引数

Ⅹ:‑LinsertMetaBegline x:Ctrl+N

すなわ ち

,(2

,

3

)の形式 を

TOOLS.INI

というファイルに書 いてお くのであ る。 こうしてお くと, エデ ィタ起動時 に自動的 にこの

TOOLS.INI

ファイルを 読み込んで, エディタ利用時 にはこれ らマクロ及 びキー設定 が利用 で きるよ う

にな って いる。

以上, エデ ィタの利用法の具体的説明の中で, カス タマイズ機能 の

1

つであ る,

TOOLS.INI

フ ァイルを利用 したマ クロ及 びキ ー操作 の設定方 法 を述 べ た。 もう

1

つのカスタマイズ方法 は,

C

拡張 と呼ばれ, マニ ュアルに指定 して ある引数及 び戻 り値 の型 を持っ関数 を C言語で記述す ることである。て の関数 の中で は, マニュアルに書かれてあ るマイクロソフ トエデ ィタの低 レベル関数

や OS

の システムコールが利用で きる

この C拡張で定義 した関数 は,エディタを実際に利用す るときには,マクロ と して扱 われ る。 また, これ ら自分で作 る関数 内で利用で きるマイクロソフ ト エデ ィタの低 レベル関数 には,‑ マ イクロ. ソフ トエデ ィタの マ クロを実行 す る

fExecute

があ り,上 で述 べた (

1

) の代 わ りに, プ ログラム内で,

fExecute("Arg

¥"

Arg:Ctrl+B

¥"

Assign"

);

と記述すれば同 じ効果が得 られ る。

4.

カスタマイズの方法

ここで は,

3.

で述べたファイル

TOOLS.INI

C

拡張 を利用 して, ファイ ナル風 にカスタマイズを行 な う概要 を述べ る。 ここで ファイナル風 とい う意味 は ( 表

2)

のよ うにキー操作 の割 り当てを行 な うとい う意味 であ り, ファイナ ルのデ フォル トのキー割 り当て とま った く同 じよ うにす る ことで はない。 ま た, カス タマイズを行 な う際 には, マイクロソフ トエデ ィタの機能 を最大限 に 利用す ることを 目標 とす る

3.

で説明 したよ うに,

TOOLS.INI

ファイルの中で,

(7)

マイ クロソフ トエデ ィタのカス タマイズ 表

2

カスタマイズ後の

2

ス トロークキー振作

107

Ctrl+JC

ヘルプ画面か ら戻 る

Ctrl十PO

任意 の コマ ン ドの実行

Ctrl+JH

‑ ヘルプ

Ctrl十PS

システムの起動

Ctrl+JP

ファイル名の変更

Ctrl+PW D事R/W

の実行 .

Ctrl+JU

*Ctrl+KA

嘩索時 に大文字小文字

Ctrl+QA

文字列 の置換 を区別す る/しない

Ctrl+QC

ファイルの最後へ 現 ファイルの放棄終了

Ctrl+QD

行の最後へ

Ctrl+KB

ブロックの指定開始

ctri+QE

画面 の上端

Ctrl+KC

Ctrl+KD

ク リップボ⊥ ドか らカ

Ctrl+QF‑

文字列 の検索

‑ ソル位置へのコ ピ‑

Ctrl+QG MEGREP

の起動

現 ファイルのセ⊥ブ終了

CtCtrrll+QH+QL

行頭か らカーソル

Ctrl+KM

カ‑ソル行のマ‑ ‑ク 位壷 までの削除

*Ctrl+KQ

全 ファイルの放棄終了 指定行‑ ジャンプ

■CtCtrrll+KR+KS

カーソル位置への

Ctrl王QM

‑ マ‑ク行へ ジャンプ ファイル読 み込 み

Ctrl+QR

ファイルの先頭へ 現 ファイルのセーブ

Ctrl+QS

行の先頭へ

Ctr1+KW

*Ctr1+KX

ク リップボー ドを他

Ctrl+QV

直前 の位置へ の ファイルへ jピ‑

Ctrl+QX

画面 の下端へ

全 ファイルの竜一ブ終了

CtCtrrll+QY+UC

カーソル位置か ら

Ctrl十OM

編集 ファイルゐ選択 行末 までの削 除

Ctrl+ON

. 新 ファイルの選択 ウイン‑ ドゥクローズ

Ctrl+OP

対応括弧の検索

Ctrl+UO

画面横分割 ̲

*Ctrl+OU

大文字化

Ctrl+UT

次の ウイン ドウへ

Ctrl+PC

コンパ イラの超勤

Ctrl十UU

ア ン ドゥ .

̀Ctrl+PD DⅠR

の実行

Ctrl十UY

画面縦分割 ( 荏) *印の付 いて いる機能 はプヮテク トモー ドでは正常 に作動 しない。

詳 しくは

,「5.

注意事項 と問題点」 を参照。

(8)

108

商 学 討 究 第

40

巻 第

1

機能名 またはマ クロ名 : キー操作

と記述すれば, この機能 またはマクロに自分 の好 きなキー操作を割 り当て るこ とがで きると述 べた。 これを利用すれば, どの機能 にも ( 必要な機能がなけれ ば,

C

拡張を利用 して 自分でその機能 を実現す る関数 を作 る) 自分の好 きな

1

ス トロークキーを割 り当て ることがで きる ( 図

1

参照) 。しか し,この方法では

2

ス トロークキーを割 り当 て ることがで きな

い。

すなわち,

羊 Ⅹ:

Ctrl+JH

等,としてマクロ

Ⅹに

Ctrl+JH

を割 り当て ることがで きないのである。そこ で, これを実現す るために,少 々工夫が必要 となる。余談 になるが, マイ クロ ソフ ト羊デ ィタにはワー ドスター風 のカス タマイズを行 な っている

TOOLS.

INI

が付 いてお り, さらに

Ctrl+QS

, ‑

Ctrl+QD

2

ス トロークキーを利用す るユーザーのためにと,

C

拡張 を利用 した

EXE

ファイル ( プロテク トモー ド 用 には

DLL

ファイル)が付 いている。ソースプログラムはないので,どう実現

されているか分か らないが,

2

ス トロークキーを実現す るには,

TOOLS.INI

ファイルの レベルでは不可能で,

C

拡張 まで利用 しなければな らないと解釈 で きそ うである。 しか し,色 々試行錯誤 を繰 り返 してみ ると,

2

ス トロークキー を実現す ることは,

TOOLS.INI

の レベルで可能 である。

(

2) の うち

CtrI+J

で始 まる 2 ス トロー クキーの割 り当てを どのよ うに 実現す るかを説明す る。他 の

2

ス トロークキー割 り当て も同様である

。Ctrl+J

で始 まるのは

Ctrl+JC

,

Ctrl+JH

,

Ctrl+JP

,

Ctrl+JU

4

個であるか ら,

Ctrl+J

が入力 された時点 で 2 ス トローク目の

Ctri+C

,

Ctrl+H

,

Ctrl+P

,

Ctrl+U

に, 目的 とす る処理 に必要 な機能 を割 り当て, これ ら

2

ス トローク目 の

Ctrl+C,Ctrl+H,Ctrl+P,Ctrl+U

のいず叫かが入力 された時点で,元 の 処理 (これ らが

1

ス トローク目に入力 されたときに行 な う処理) に戻す。具体 的には,

TOOLS.INI

ファイルに 一 ( 図

2)

のよ うに記述すればよい.

初期設定では,

Ppage:Ctrl+C Emacscdel:Ctrl+H

(9)

マイクロソフ トエデ ィタのカスタマイズ

1 TOOLS.lN

Lファイル

(1

ス トE 1‑クキー定義の部分)

109

Mword:Ctrl+A Argl.Ctrl.+B Ppage:Ctr】+C Right:Ctrl+D Up:Ctrl+E Pword:Ctrl十F Sdelete:Ctrl+G Emacscdel:Ctrl+H lprO:‑ I PRO lprO:Ctrl+i Replace:Ctrl+L Meta:Ctrl+M

npro:

LinsertMetaBegline npro:Ctrl+N

Mpage:Ctrl+R Left:Ctrl+S tpro:‑ T PRO tpro:Ctrl+T

Insertmode:Ctrl+V Mlines:Ctrl+W Down:Ctrl+Ⅹ Ldelete:Ctrl+Y Plines:Ctrl+Z Psearch:F5

Msearch:SHIFT+F5

Quote:Ctrl+]

escpro:‑ ESC PRO escpro:ESC

1 語前へ

Arg

機能の呼び出 し 次画面へ

右へ

上へ 1 語後‑

カーソル位置の文字削除 左の文字削除

し PRO

は C 拡張で定義

TAB

コー ドの挿入

(*)

確認な しの文字列置換

メ タキー

1

行挿入後行頭へ 申画面

左へ

T̲PRO

は C 拡張で定義 1語削除

(*)

挿入/ 上書 き

下へ

1

行スクロール 下‑

1

行削除

上へ

1

行スクロール ファイル末への検索 ファイル頭への検索 ' コントロールコー ドの入力

ESC̲PRO

は C 拡張で定義 取 り消 し

( 荏) *印の付 いている機能 はプロテク トモー ドでは正常 に作動 しない。

詳 しくは

,「5.

注意事項 と問題点」を参照。

(10)

110 商 学 討 究 第

40

巻 第

1

2 TOOLS.lN

lフ ァイル

(ctrl+

」で始まる

2

ス トロークキー定義の部分)

resetjpro:‑ Arg"Ppage:Ctrl+C"AssignArg"Emacscdel:Ctrl+H"AssignArg

"setppro:Ctrl+P"AssignArg"setupro:Ctrl+U"Assign

;マクロ

resetjpro

の定義

resetjpro

の内容は

;ctrl+C,Ctrl+H,Ctrl+P,Ctrl+U

の割 り当てを元に戻す

;マクロ

setppr

O

,Setupr

Oは別のところで定義されている

setjc

1:

‑ Setfileresetjpro

;マク

t?setjc

l甲走義

setjc

lの内容は元のファイルに戻る

setjhl:‑Helpresetjpro

;マクロ

setjh

lの定義

setjh

lの内容はヘルプファイルを表示

setjp2:‑ SetfileArg"Emacsnewl:ENTER"Assign

;マクロ

setjp2

■ の定義

setjp2

の内容は

;マクロ

setjp

lの残りの処理とリターンキーの割 り当てを元に戻す

setjp

1:

‑ Arg"msg:

1"

AssignMESS̲PROresetjproArg"setjp

2:

ENTER"Assign ArgArg

;C

拡張で定義 した

MESS̲PRO

を使 ってメッセージ

;

変更後のフ‑ アイル名を入力 して リターンキー妄押 して下さ

い」

;を表示後 リターンキー

(ENTER)

setjp2

を割 り当て

Arg

機能を

2

回呼び出す

;setjp

l

,setjp2

で使われている構文

:「ArgArg

ファイル名

Setfile

」はカレントファイルをファイル名でセーブする

setju1:‑JPRO rl esetjpro

;マクロ

setju

lの定義

JU̲PRO

C

拡張で定義

setju

lの内容は

;検索時に大文字 と小文字を区別するか, しないかを交互に指定

setjpro:‑Arg"setjcl:Ctrl+C"AssignArg"setjh1:Ctrl+H"AssignArg"setjp1:

Ctrl+P"AssignArg"setju

l:

Ctrl+U"Assign

;マクロ

setjpr

oの定義

setjpro

の内容は

(11)

マイ クロソフ トエデ ィタの カス タマ イズ

111

;ctrl+C,Ctrl+H,Ctrl+P,Ctrl+U

setjc

l

,setjh

l

,sethp

l

,setju

lをそれぞれ割 り 当てる

setjpro:Ctrl+J

;マクロ

Setjpro

Ctrl+J

に割 り当てる

( 荏)紙面の関係で

2

行にまたがったもの もあるが,マクロの定義は

1

行に書 く。

setppro:Ctrl+P setupro:Ctrl+U

であるが,

Ctrl+J

が入力 された時点 で,

setjcl:Ctrl+C

setjhl:Ctrl+H setjpl:Ctrl+P setjul:Ctrl+U

と再割 り当てを行 な う。 これ ら

setjc

l

,setjhl,setjpl,setju

lのマクロに

必要 な処理 を定義 しておけばよい。 この必要 な処理 には元 の割 り当て に戻す処 理 (これ もまたマクロ

reSetjpro

で定義 されて いる) が含 まれている

マクロ

setjc

lは機能

Setfile

で ヘルプ フ ァイルか らもとの フ ァイル に戻 し, マ クロ

setjh

lは機能

Help

でヘルプフ ァイルを呼 び出す。 マ クロ

Setju

lは別 に

C

拡 張 で定義 された機能

JU̲PRO

を呼 び出 し, 検索時 に大文字 と小文字 を区別す るか, しないか を交互 に設定 す る

最後 に フ ァイル名 の変更 を行 な うマ クロ

setjp

lであるが,カ レン トファイルを,変更す るファイル名でセー ブす ること で実現す る

これ は構文

ArgArg

フ ァイル名

Setfile

を利用すれば良 いのだが, ファイナルに習 って

Ctrl+JP

を入力後, ファイル 名, リター ンセ これを行 な うため,次 のよ うに

2

段階で処理す る

マクロ

setjp2

で は 「 変更後 の ファイル名 を入力 して リ夕丁 ンキーを押 して

下 さい」 とメ ッセー ジを表示 し,

(12)

112

商 学 討 究 第

40

巻 第

1

setjp2:ENTER

と リター ンキーが入力 され た らマ ク ロ

setjp2

を実行 す るよ うに して お き,

Arg

機能 を

2

回呼 び出す。 ファイル名が入力 され リター ンキーが押 された とき に呼 び出 され るマクロ

setjp2

Setfile

を入 れておけば,この

setjp

lと

setjp

2

2

個 で目的の構文 が実行 された ことになる。

ここで,注意 を要す ることは, 2 ス トロークキー操作を以上 のよ うに割 り当 て る際 に, マ クロの展開が, それが実行 され るときである, とい うことを利用 してい る点 である

もし, マイクロソフ トエデ ィタのマクロの展開が, マクロ の定義時 に行 なわれ るな ら,上記 の方法で は

2

ス トロークキーを割 り当て るこ とはで きない。

マイクロソフ トエデ ィタにはない機能 を C拡張で作成 したので,その うちの

1

Ctrl+KX

で呼 び出 され る関数

KX̲PRO

の概要 を説明す る。

Ctrl+KX

に割 り当て られた機能 は 「 変更 のあ った全ての ファイルをセーブ して終了す る」である

.

関数

KX̲PRO

に変更 のあ った全ての ファイルをセー ブす る処理 を行 なわせ, その後.

ArgMetaExit

でエデ ィタを終了 させ る

関数

KX̲PRO

の定義 は ( 図

3)

に与 え られている。エデ ィタの中か らマク ロとして呼び出す場合 は関数 の戻 り値 と引数 の型 はこの通 りとす る。修正 が行 なわれて まだ セー ブされて いない フ ァイルは

ILnformation

フ ァイル ( 図

4

参 照)の ファイルの行数 を表わす数字 の前 に *印が付 いてい るので, *印の付 い ている行 の行頭 か ら始 まるフ ァイルをすべてセー ブすれば良 い。

nformation

ファイルを呼 び出す機能

nformation

はデフォル トでは

,SHIFT+F

lに割 り 当て られている

まず,機能

Information

fExecute

で呼 び出す。上 に述べたよ うに *印が 付 いているファイルを見つ ければ良 いのだが,少 しだけ手間がかか る。

FiieNameToHandle("",NULL)

でカ レン トファイル,今の場合 は

,Information

ファイルの‑ ン ドルを得 る。

(13)

マ イ クロソフ トエデ ィタの カスー クマイズ 図

3

関数

KX̲PRO

の定義

113

charmyext̲buf[256];/*1

行を読み込むためのバ ッファ

*/

flagTypepascalEXTERNALKX̲PRO (argData,pArg,fMeta)

unsignedintargData;/*

マイクロJ l /フ トエディタ内でマクロとして使 う関数 は

*/

ARC far*pArg;

/ * 戻 り値 と引数の型をこのようにしなければならない

*/

flagTypefMeta; (

COLi; LINEln;

PFILEpFile,pFile2;

f

Execute

(

"Information'');/*nformation

ファイルを表示 させる ( 図

4

参照

)*/

ln ‑ 2;

while(TRUE)i

pFile‑ FileNameToHandle("",NULL);/*

カ レント

(nformation)*/

myext̲buf[0]‑ 0; /*

ファイルのハ ンドルを得 る

*/

myext̲buf[31]‑ 0;

GetLine(1n,myext̲buf,pFile);/*(ln+1)

行目を

myexL buf

へ読む*/

if(myexL buf[0]‑

‑ ' ぐ)

(/*1

桁 目が ' ぐ なら次の行へ

*/

I )

elseif((myexL buf[0

]>

‑ 'a')

&&

(myext̲buf[0]<‑ 'Z'))t if(myexL buf[3

1

]‑‑ '*'

日 / * 変更 ファイルだけセーブする

*/

i

‑ 0;

MoveCur(i,ln);

fExecute("ArgSetfile"); fExecute(''ArgArgSetfile''); fExecute("Information"); )

)

else(/*

それ以外な ら終了

*/

(14)

114

40

巻 第

1

returnTRUE;

)

ln++;/*

次の行へ

*/

)

returnTRUE;I

4

機能

information

を呼び出 した例

Version1.00‑Oct011988

<information‑file>

a:¥initial¥tools.ini a:¥source¥myext.C

<clipboard>

Theclipboardisempty

18virtualpages/10local

2lines

*211lines 666lines Olines

( 症) 画面中央行数を表わす数字の前の*印により,

a:¥initial¥tools.ini

は修正 されていることが分か る。

以後 この‑ ン ドルを利用 して

Information

ファイルを処理す る

( 図

4)

を見 るとファイルが書 かれてあるのは

3

行 目か らなので,

3

行 目か ら

1

行ずつ読 み 込 み該当 ファイルか どうか調べ る

行番号 は 0か ら始 まるので, 3 行 目はプ ロ

グラムで は

ln

‑2 とな っている

GetLine (ln,myext̲buf,pFile)

でバ ッフ ァ

myext̲buf

‑ 1行読 み込 む。

最初 の桁 が ' ぐ な ら

nformation

ファイル, ク リップボー ド, 等 であるか

ら,次 の行へ。 ドライブ名か ら始 まるファイル名か ど うか調べ る。 ファイル名

でなければ,すべて調べ た ことになるので終了す る。 ファイル名 な ら*印が付

いて いるか どうか調べ,付 いて いる場合 には,

(15)

マイクロソフトエディタのカスタマイズ 115

MoveCur

1

桁 目にカーソルを戻 し,

ArgSetfile

で このセー ブすべ きファイルに移 り,

ArgArgSetfile

でカ レン トファイル,今 の場合, セーブすべ きファイル,をセーブす る

次 の 行を調べ るために,

Information

Information

ファイルへ戻 る

これを終了す るまで繰 り返す。

カ レン トファイルの内容 を得 るためにわ ざわ ざ

FileN去meToHandle

,

Get Line

等 を利用 しな くて も良 いように設計 してあれば,等 と思 うのだが,それ は 素人考 えのよ うである

もし,

KX̲PRO

の内容 をJ Lデ ィタ内で, キー入力 し て行 な うと, 少 な くとも

2

回 は表示画面 が変わ るはずであるが,

Ctrl+KX

を 入力 して実際 に

KX̲PRO

の処理 を行 な うと,画面 は変化せずに,フ ァイルを セーブ した とい うメ ッセー ジが メ ッセー ジ行 に表示 され るだけである。 これ も 素人判断であるが, エデ ィタの処理速度 を早 めるために,処理 に時間 のかか る 画面表示 は省略 され る場合 があ るよ うである。

以上, 私 が行 な ったカス タマイズの うち,

TOOLS.INI

ファイ ルの レベルで

2

ス トロークキーの割 り当てが可能 であ る, エデ ィタを利用 しやすいよ うに C 拡張で機能 を追加 した, の

2

点 の概要 を具体例 をあげて説明 した。

5.

注意事項 と問題点

カスタマイズを行 な った ことによる,注意事項及 び問題点 を述べ る

まず,

2

ス トロークキーを入力 した場合,処理速度 が若干落 ちることである。長 いマ

クt l を処理す るためで あろうが, で きれば改善 したい点 である。 これに関 して

リアルモー ド上 で は気 をっ けることがある。

2

ス トローク目が

Ctrl+S

または

Ctrl+C

の時, す なわ ち,

Ctrl+JC

,

Ctrl+KC

,

Ctrl+KS

,

Ctrl+PC

,

Ctrl+PS

,

Ctrl+QC

,

Ctrl+QS

の時,

2

・ ス トロ‑ク目を早 く入力 して しま う

(16)

116

商 学

40

巻 第

1

と, これ ら

Ctrl+S

または

Ctrl+C

MS‑DOS

で利用 されている意味 を持 っ ていると判断 され るよ うで,画面停止 を意味す る

Ctrl+S

では次のキーを停止 解除 として取 り込 み, ブ レークを意味す る

Ctrl+C

ではカーソル位置 の画面表 示が少 し乱 れ る。後者 の場合 で も

,ESC

を入力 し

,Ctrl+C,Ctrl+R

等 で,画 面 を再表示すれば元 に戻 る

.

プロテク トモー ドで は, キー入力 は優先度 の高 い

ス レッ ドで行 な うた めか, このよ うな

Ctrl+C

Ctrl+S

が こち らが意図 した 意味 と違 って取 られ ることはない。

ファイナルの ブロック操作では

,Ctrl+KB

が ブロ ックの開始位置で

,Ctrl+ KK

でバ ッファに コ ピー,

Ctrl+KY

で ブロックを削除 してバ ッファに移動 さ せ る

すなわち, ブロックの終わ りの位置で入力す る操作 も

2

ス トロークキー

であ る。残念 なが らこれには対処 で きず, 1 ス トロークキーと した。 そのかわ り 「カーソル移動 で範囲を指定後, 〈B ( 反転領域 ( 箱型)削除) , 〈Y (

文字列

型削除) , ‑K (コピー

)

とメ ッセー ジ行 に表示 を行 な った。

この よ うに フ ァイナル と若干異 な り指示 がない と分 か りに くい と ころは, メ ッセー ジを表示す るよ う石 . =した。

以上 の ところは新 しいキー操作 を覚え 高位 な らこれ位 の我慢 は しよ うとい う ところであ るが,以下 の問題点 は重大である

( 表

2)

および ( 図

1)

‑ において *印が付 いて いる機能 がプロテク トモー ドで は正常 に動作 しない。 これ らの機能 を利用 しよ うとす ると,

SYS1943:

プ ログ ラムで保護 エラ‥が発生 しま した」

SYS1811:

プロセスは停止 しま した

ソフ トウェア診断 コー ド (トラップ番号) は

013

です」

とエ ラーメ ッセ一・ ジが表示 されエデ ィタが終了 させ られ る。複数 のプ ログラム ( プ′ ロセス)が同時 に実行 され る

MSOS/2

のプ ロテ ク トモー ドでは,実行 中 のあ るプロセスのデータが他 の関係 のないプ ロセスによ って不用意 に書 き換 え られ ると困 る。 そのため,特 に設定 を しない限 りプ ロセスは自分のデータしか 処理 で きない。 もし, 自分 のデータ以外 を処理 しよ うとす るとシステムに終了

させ られ る。 この時 に上記 のエ ラーメ ッセー ジが表示 され るよ うであ る。‑

(17)

マ イ ク ロ ソ フ トエ デ ィ タの カ ス タマ イ ズ 117

私の素人判断であるが,正常 に動作 しない C 拡張の全部で

FileNameToHandle

(' ' "

,NULL)

を利用 してお り, これを簡単 な例 で検査 して も正常 に動作 しないみたいであ る。 もちろん, デバ ッガ等で問題箇所を特定で きたわけではないので, あ くま

′ で も素人判断の域 を出ない。 この点 に関 して,マイクロソフ ト社 に簡単 な例を 同封 して質問中である。

6.

おわ りに

ェディタの処理機能 にコン トロ⊥ルキーを利用 した

2

ス トロークキーを割 り 当て ることがで きることは,手 をホームポ ジションか ら移動 させ な くて も良 い, とい う利点がある

ここでは,私の使 い慣れているファイナル風 にカスタ マイズを行 な ったが, ソースファイル等を変更すれば,違 ったカスタアイズが 可能である。 5 .で述べた問題点を改善 して行 くのは今後の課題 である

なお

ソースプログラムは冗長 なので省略 した。

参考文献

[1] OS/2

入門」 川井健一,佐貫俊幸,船木義昭著 培風館

[2] OS/2

入門」 富士 ソフ トウェア教育 出版部署 富士 ソフ トウェア

[3]「OS/2

標準 テクノバイブル [ 基本編 ] 」 中西隆著 技術評論社

[ 4] 「マイクロソフ トエデ ィタマニュアル」マイクロソフ ト社

図 2 TOOLS. l N lフ ァイル

参照

関連したドキュメント

DundeeColl.ofMgt.Centre EastMidlandsReg .Mgt.Centre HenleyManagementCollege HuddershieldPolytechnic ImperialCollege,UnivofLondon

 小枝 ご質問もその辺に関して三つか四ついただいています。まず日産自動車の海外進出は割と

極の微構造変化を解析する手法としては,FIB‑SEM を用いた 3 次元電極微構造

マクロ・プルーデンス政策に対する関心の高まりは、まぎれもなく、近年

いやいや︑ この謎は︑

[r]

[r]

[r]