MSX-DOS TOOLS エディタの使い方

# はじめに

MSX0 を触っていて、MED や KID / AKID の操作方法をすぐ忘れてしまうので。

# ■ MED

**MED** は『MSX-DOS TOOLS』に含まれるテキストエディタです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/873ff02d-833b-bcf0-0777-1ad04f037f44.png)

 - MSX1 でも動作します。
 - 画面右端でテキストを折り返しません (横にもスクロールします)。
 - 画面上は mode 80 で 79x23 文字が表示可能です。
 - 最大、約 32KB のファイルを編集できます。
 - 0x00 等は入力できません。
 - 空で保存すると改行が含まれます。
 - 保存すると末尾に 0x1A が付加されます。

**See also:**

 - [MSX-DOS TOOLS M.E.D. Operation Manual (アカシックライブラリ)](https://akasik-libraries.jp/modules/booklist/bookinfo.php?id=567)

## エディットモード

エディットモード (編集状態) でのキーボードショートカットです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/a150e5b6-203b-648e-844f-ba608ee8f33e.png)

| キー | 説明 |
|:---|:---|
| 〔↑〕 | 1 行上へ |
| 〔↓〕 | 1 行下へ |
| 〔→〕 | 1 文字右へ |
| 〔←〕 | 1 文字左へ |
| 〔DELETE〕 | 1 文字削除 |
| 〔BS〕 | バックスペース (〔Ctrl〕+〔H〕)  |
| 〔INS〕 | 挿入/上書モード切替 (〔Ctrl〕+〔R〕) |
| 〔TAB〕 | タブ (〔Ctrl〕+〔I〕) |
| 〔ENTER〕 | 改行 (〔Ctrl〕+〔M〕) |


| キー | 説明 |
|:---|:---|
| 〔Ctrl〕+〔K〕 | 画面先頭行へ移動 (〔HOME〕)|
| 〔Ctrl〕+〔T〕 | 画面最終行へ移動 |
| 〔Ctrl〕+〔F〕 | 1 ワード右へ |
| 〔Ctrl〕+〔B〕 | 1 ワード左へ |
| 〔Ctrl〕+〔C〕 | 行頭へ移動 |
| 〔Ctrl〕+〔V〕 | 行末へ移動 |
| 〔Ctrl〕+〔S〕 | 8 文字右スクロール |
| 〔Ctrl〕+〔A〕 | 8 文字左スクロール |
| 〔Ctrl〕+〔U〕 | 1 行ロールダウン |
| 〔Ctrl〕+〔D〕 | 1 行ロールアップ |
| 〔Ctrl〕+〔W〕 | ロールダウン |
| 〔Ctrl〕+〔Z〕 | ロールアップ |
| 〔Ctrl〕+〔Y〕 | 現在行を削除　|
| 〔Ctrl〕+〔E〕 | カーソル位置からカーソル行の最後までを削除 |
| 〔Ctrl〕+〔O〕 | 行挿入 |
| 〔Ctrl〕+〔P〕 | YANK バッファ (クリップボード) からペースト |
| 〔Ctrl〕+〔J〕 | カーソル行と次行を連結 |
| 〔Ctrl〕+〔N〕 | カーソル位置から 2 行に分割 |
| 〔Ctrl〕+〔Q〕 | 検索または置換の再実行 |

## コマンドモード

`〔ESC〕`キーを押すとコマンドモードに入ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/184c8345-7fcf-6853-4cc2-a18058b23b64.png)

コマンドモードで各種コマンドを入力して`〔RETURN〕`キーで確定となります。何もコマンド入力をせずに`〔RETURN〕`キーでキャンセルとなります。

| コマンド | 説明 |
|:---|:---|
| 0 | ファイル先頭行へ移動 (〔F1〕) |
| 行番号 | 指定行へ移動 |
| $ | ファイル最終行へ移動 (〔F2〕) |
| DIR | ディレクトリを表示 |
| DSKF | ディスク情報を表示 |
| NEW | 新規作成 |
| Q または QUIT| エディタを終了 |
| U または UPDATE | 保存 |
| H または HELP | ヘルプ (〔F6〕)  |

:::note
エディタを終了するには〔ESC〕Q〔RETURN〕です。ファイルを編集していれば終了時に保存を訊かれます。
:::

### 検索
`〔F3〕` は検索コマンドです。

| コマンド | 説明 |
|:---|:---|
| (検索モード)〔F3〕検索文字列 検索方向 | 文字列検索 |

 - 検索文字列 (`Target:`) は大文字小文字を区別します
 - 前回検索を行った文字列で再度検索を行う場合には検索文字列の入力を省略する事ができます
 - 検索文字列には 1 文字のワイルドカードを表す `?` が使えます
 - `?` 自体を検索するには &yen; でエスケープします
 - &yen; 自体を検索するには &yen;&yen; となります
 

| 検索モード | 説明 |
|:---|:---|
| (なし) | カーソル位置に一番近い文字列を検索します |
| 個数 | 検索にヒットした個数番目の文字列に移動します |
| ? |連続して検索します (〔↓〕〔↑〕で移動) |
| * | 検索にヒットした最後の文字列に移動します |

| 検索方向 | 説明 |
|:---|:---|
| (なし) | 前回の検索方向 |
| 〔↓〕 | 前方検索 |
| 〔↑〕 | 後方検索 |

:::note
例えば ABC という文字列を連続して検索するには`〔ESC〕?〔F3〕ABC〔↓〕` とコマンド入力します。
:::

### 置換

`〔F4〕` は置換コマンドです。

| コマンド | 説明 |
|:---|:---|
| (検索モード)〔F4〕検索文字列〔RETURN〕置換文字列〔RETURN〕| 文字列置換 |

 - 検索文字列 (`Target:`) は大文字小文字を区別します
 - 前回検索を行った文字列で再度検索を行う場合には検索文字列の入力を省略する事ができます
 - 検索文字列には 1 文字のワイルドカードを表す `?` が使えます
 - `?` 自体を検索するには &yen; でエスケープします
 - &yen; 自体を検索するには &yen;&yen; となります
 - 置換文字列には空文字列を表す `$` が使えます
 - 前回置換を行った文字列 (`To:`) で再度置換を行う場合には置換文字列の入力を省略する事ができます
 
| 検索モード | 説明 |
|:---|:---|
| (なし) | カーソル位置に一番近い最初の文字列を置換します |
| 個数 | 検索にヒットした個数の文字列を置換します |
| ? | 確認しながら置換します |
| * | 全置換 |

| 検索方向 | 説明 |
|:---|:---|
| (なし) | 前回の検索方向 |
| 〔↓〕 | 前方検索 |
| 〔↑〕 | 後方検索 |

### 検索または置換の再実行

`〔F5〕` は検索または置換の再実行コマンドです。

| コマンド | 説明 |
|:---|:---|
| (検索モード)〔F5〕| 検索または置換の再実行 |

:::note
単純な一回だけの再実行には〔Ctrl〕+〔Q〕が使えます。
:::

### ブロック選択

`〔SELECT〕` (または〔CTRL〕+〔X〕) は ブロック選択用のコマンドです。

| コマンド | 説明 |
|:---|:---|
| 開始位置選択〔RETURN〕終了位置選択〔RETURN〕操作 | ブロック選択 |

カーソルキーで移動して開始位置選択 (`Please set start point`) と終了位置選択 (`Please set start point`) を行った後に操作方法を指定します。

| 操作 | 追加のコマンド | 説明 |
|:---|:---|:---|
| C(opy) | コピー位置選択 | 選択範囲を指定位置にコピー |
| D(elete) |  | 選択範囲を削除 |
| B(uffer) |  | (何もしない) |
| W(rite) | ファイル名 | 選択範囲をファイルに書き出し |
| A(ppend) | ファイル名 | 選択範囲をファイルに追記 |

:::note
操作を省略すると `B` と同じになります。
:::

 - どの操作を選んでも、選択範囲が YANK バッファ (クリップボード) にコピーされます
 - YANK バッファの内容は `〔CTRL〕+〔P〕` でペーストできます

# ■ KID / AKID

**KID** / **AKID** は『MSX-DOS2 TOOLS』に含まれるテキストエディタです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/59497dc3-7479-07dc-32d7-58d93094d1e0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/d448afb2-0d3e-5f57-29bd-f26c8aee0795.png)

 - MSX-DOS2 専用です。
 - 画面右端でテキストを折り返します。
 - KID は日本語入力に対応しています。
 - 保存すると末尾に 0x1A が付加されます。
 - KID は最大、約 60KB のファイルを編集できます。
 - AKID は最大、約 110KB のファイルを編集できます。
 - MSX0 の Faces II Keyboard ではメニューを表示できないため終了できません。

**See also:**

 - [MSX-DOS2 TOOLS ユーザーズマニュアル (アカシックライブラリ)](https://akasik-libraries.jp/modules/booklist/bookinfo.php?id=570)


## エディットモード

エディットモード (編集状態) でのキーボードショートカットです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/01ba5e30-6ca3-e2b8-a713-6455a0675576.png)

| キー | 説明 |
|:---|:---|
| 〔↑〕 | 1 行上へ (〔Ctrl〕+〔E〕) |
| 〔↓〕 | 1 行下へ (〔Ctrl〕+〔X〕) |
| 〔→〕 | 1 文字右へ (〔Ctrl〕+〔D〕) |
| 〔←〕 | 1 文字左へ (〔Ctrl〕+〔S〕) |
| 〔SHIFT〕+〔↑〕 | 1 行ロールダウン (〔Ctrl〕+〔W〕) |
| 〔SHIFT〕+〔↓〕 | 1 行ロールアップ (〔Ctrl〕+〔Z〕) |
| 〔SHIFT〕+〔→〕 | 行末へ移動 |
| 〔SHIFT〕+〔←〕 | 行頭へ移動 (〔Ctrl〕+〔B〕) |
| 〔DELETE〕 | 1 文字削除 (〔Ctrl〕+〔G〕) |
| 〔BS〕 | バックスペース (〔Ctrl〕+〔H〕)  |
| 〔INS〕 | 挿入/上書モード切替 (〔Ctrl〕+〔J〕) |
| 〔TAB〕 | タブ (〔Ctrl〕+〔I〕) |
| 〔ENTER〕 | 改行 (〔Ctrl〕+〔M〕) |


以下のキーは `CONKID.COM` でカスタマイズ可能です。

| キー | 説明 |
|:---|:---|
| 〔Ctrl〕+〔E〕 | 1 行上へ (〔↑〕) |
| 〔Ctrl〕+〔X〕 | 1 行下へ (〔↓〕) |
| 〔Ctrl〕+〔D〕 | 1 文字右へ (〔→〕) |
| 〔Ctrl〕+〔S〕 | 1 文字左へ (〔←〕) |
| 〔Ctrl〕+〔F〕 | 1 ワード右へ |
| 〔Ctrl〕+〔A〕 | 1 ワード左へ |
| 〔Ctrl〕+〔B〕 | 行頭へ移動 |
| 〔Ctrl〕+〔O〕 | 先頭行へ移動 |
| 〔Ctrl〕+〔P〕 | 最終行へ移動 |
| 〔Ctrl〕+〔Z〕 | 1 行ロールアップ (〔SHIFT〕+〔↓〕) |
| 〔Ctrl〕+〔W〕 | 1 行ロールダウン (〔SHIFT〕+〔↑〕) |
| 〔Ctrl〕+〔C〕 | ロールアップ |
| 〔Ctrl〕+〔R〕 | ロールダウン |
| 〔Ctrl〕+〔^〕 | 前方検索 (〔F4〕〔F〕)|
| 〔Ctrl〕+〔&yen;〕 | 後方検索 (〔F4〕〔B〕) |
| 〔Ctrl〕+〔\]〕 | 前方検索再実行 |
| 〔Ctrl〕+〔\[〕 | 後方検索再実行 |
| 〔Ctrl〕+〔G〕 | 1 文字削除 (〔DELETE〕) |
| 〔Ctrl〕+〔H〕 | バックスペース (〔BS〕)  |
| 〔Ctrl〕+〔Y〕 | 現在行を TINY バッファへカット  |
| 〔Ctrl〕+〔U〕 | カーソル行の先頭からカーソル位置までを TINY バッファへカット |
| 〔Ctrl〕+〔K〕 | カーソル位置からカーソル行の最後までを TINY バッファへカット |
| 〔Ctrl〕+〔T〕 | 1 ワード削除 |
| 〔Ctrl〕+〔M〕 | 改行 (〔ENTER〕) |
| 〔Ctrl〕+〔N〕 | 1 行挿入 |
| 〔Ctrl〕+〔I〕 | タブ (〔TAB〕) |
| 〔Ctrl〕+〔Q〕 | ファイル名、カーソル位置の表示 |
| 〔Ctrl〕+〔J〕 | 挿入/上書モード切替 (〔INS〕) |
| 〔Ctrl〕+〔V〕 | コントロール文字の入力 |
| 〔Ctrl〕+〔L〕 | TINY バッファからペースト |
| 〔Ctrl〕+〔@〕 | YANK バッファ (クリップボード) からペースト |

### コントロール文字

コントロール文字は `〔Ctrl〕+〔V〕` に続けて入力します。

| 文字 | キー | 文字 | キー |
|:---:|:---|:---:|:---|
| 0x00 |〔Ctrl〕+〔@〕 | 0x10 |〔Ctrl〕+〔P〕 |
| 0x01 |〔Ctrl〕+〔A〕 | 0x11 |〔Ctrl〕+〔Q〕 |
| 0x02 |〔Ctrl〕+〔B〕 | 0x12 |〔Ctrl〕+〔R〕 |
| 0x03 |〔Ctrl〕+〔C〕 | 0x13 |〔Ctrl〕+〔S〕 |
| 0x04 |〔Ctrl〕+〔D〕 | 0x14 |〔Ctrl〕+〔T〕 |
| 0x05 |〔Ctrl〕+〔E〕 | 0x15 |〔Ctrl〕+〔U〕 |
| 0x06 |〔Ctrl〕+〔F〕 | 0x16 |〔Ctrl〕+〔V〕 |
| 0x07 |〔Ctrl〕+〔G〕 | 0x17 |〔Ctrl〕+〔W〕 |
| 0x08 |〔Ctrl〕+〔H〕 | 0x18 |〔Ctrl〕+〔X〕 |
| 0x09 |〔Ctrl〕+〔I〕 | 0x19 |〔Ctrl〕+〔Y〕 |
| 0x0A |〔Ctrl〕+〔J〕 | 0x1A |〔Ctrl〕+〔Z〕 |
| 0x0B |〔Ctrl〕+〔K〕 | 0x1B |〔Ctrl〕+〔\[〕 |
| 0x0C |〔Ctrl〕+〔L〕 | 0x1C |〔Ctrl〕+〔&yen;〕 
| 0x0D |〔Ctrl〕+〔M〕 | 0x1D |〔Ctrl〕+〔\]〕 |
| 0x0E |〔Ctrl〕+〔N〕 | 0x1E |〔Ctrl〕+〔^〕 |      
| 0x0F |〔Ctrl〕+〔O〕 | 0x1F |〔Ctrl〕+〔_〕 |

:::note
例えば **0x00** を入力するには `〔CTRL〕+〔V〕` を押した後に `〔CTRL〕+〔@〕` を押します。入力された文字はキャレット記法で表示されます。0x00 は `^@` となります。
:::

## コマンドモード

`〔F1〕`～`〔F4〕` を押すとファンクションメニューが画面上部に表示されます。

`〔SELECT〕` を押してメニューを表示する事もできます。`〔SELECT〕` を押すたびにメニューが切り替わります。

ファンクションメニューは `〔ESC〕` でキャンセルできます。

:::note
KID / AKID ではファンクションキー (または〔SELECT〕) を押してからエディットモードに戻るまでの状態をコマンドモードと呼ぶようです。
:::

### 〔F1〕カレントファイル操作

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/595416b1-7cf0-8508-22a4-73d81c1cd8c1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/05edd0eb-44cc-6c72-c4a3-4f56deaeac2a.png)

| キー | 説明 |
|:---|:---|
| 〔F1〕〔E〕 | 現在のファイルをセーブして終了 |
| 〔F1〕〔Q〕 | 現在のファイルをセーブせず終了  |
| 〔F1〕〔S〕 | 現在のファイルをセーブ |
| 〔F1〕〔N〕 | 現在のファイルをセーブして新規ファイルを開く |
| 〔F1〕〔A〕 | 現在のファイルを破棄して新規ファイルを開く  |
| 〔F1〕〔O〕 | 現在のファイルを破棄して開き直す (再編集)  |

※ `〔F1〕〔ENTER〕` でもメニューがキャンセルされます。

### 〔F2〕ファイル操作

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/8f8a3ff0-0900-d57b-b078-43e133588d9c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/ce3fb1ad-4451-cc16-a1db-d693c4592d5f.png)

| キー | 説明 |
|:---|:---|
| 〔F2〕〔I〕 | カーソル位置にファイルを挿入 |
| 〔F2〕〔W〕 | 現在のファイルを名前を付けて保存  |
| 〔F2〕〔Y〕 | YANK バッファの内容を名前を付けて保存 |
| 〔F2〕〔D〕 | ディレクトリとファイルを表示 |

※ `〔F2〕〔ENTER〕` でもメニューがキャンセルされます。

### 〔F3〕カーソル移動

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/050538b3-0b83-4dc1-d53d-4f6005d0b8a9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/02158b0c-6780-2541-3704-b1928bb37ef4.png)

| キー | 説明 |
|:---|:---|
| 〔F3〕〔G〕 | 指定行へ移動 |
| 〔F3〕〔T〕 | 先頭行へ移動 (〔CTRL〕+〔O〕) |
| 〔F3〕〔B〕 | 最終行へ移動 (〔CTRL〕+〔P〕) |

※ `〔F3〕〔ENTER〕` でも指定行へ移動が実行されます。

### 〔F4〕検索と置換

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/9129f760-b8c7-88f0-09fd-1cfc0325ebe2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/ecb4614b-4a76-e613-79e4-8bbc51f54b4f.png)

| キー | 説明 |
|:---|:---|
| 〔F4〕〔F〕 | 前方検索 (〔CTRL〕+〔^〕)|
| 〔F4〕〔B〕 | 後方検索 (〔CTRL〕+〔&yen;〕) |
| 〔F4〕〔A〕 | 全置換 |
| 〔F4〕〔R〕 | 置換 |
| 〔F4〕〔S〕 | 検索と置換の設定 |
| 〔Ctrl〕+〔\]〕 | 前方検索再実行 |
| 〔Ctrl〕+〔\[〕 | 後方検索再実行 |

※ `〔F4〕〔ENTER〕` でも前方検索が実行されます。

### 〔F5〕コピー＆ペースト

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/e1d89a49-4f44-0f12-c693-25b7dda9a38e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/3425b154-31a0-af99-6b08-5b4a54747fdd.png)

| キー | 説明 |
|:---|:---|
| 〔F5〕 | 選択開始 (キャンセルは〔ESC〕) |
| (〔F5〕)〔C〕 | YANK バッファへコピー |
| (〔F5〕)〔A〕 | YANK バッファへ追加コピー |
| (〔F5〕)〔X〕 | YANK バッファへカット |
| (〔F5〕)〔ENTER〕 | コピー＆ペーストメニューの表示 |
| 〔Ctrl〕+〔@〕 | YANK バッファからペースト |

コピー＆ペーストの具体的な手順は次のようになります。

 1. `〔F5〕` で選択開始
 2. カーソル移動で選択範囲を指定
 3. `〔C〕` で YANK バッファへコピー
 4. ペースト位置へ移動
 5. `〔Ctrl〕+〔@〕` で貼り付け

:::note
YANK バッファとは別枠で、一行を対象とした TINY バッファのカット＆ペーストも利用可能です。

| キー | 説明 |
|:---|:---|
| 〔Ctrl〕+〔Y〕 | 現在行を TINY バッファへカット　|
| 〔Ctrl〕+〔U〕 | カーソル行の先頭からカーソル位置までを TINY バッファへカット |
| 〔Ctrl〕+〔K〕 | カーソル位置からカーソル行の最後までを TINY バッファへカット |
| 〔Ctrl〕+〔L〕 | TINY バッファからペースト |
:::

# おわりに

この記事でざっくり把握して、詳細はマニュアルで確認するのがいいかと思います。

:::note
他のテキストエディタとしては『MSX-C ver1.0』に `SCED.COM` が、『MSX-DOS スーパーハンドブック』に `PED.COM` が含まれています。
:::