この手引きの読み方
4 部 14 章。最初から順に読む必要はありません。
本書は 4 部構成です。第 1 部は考え方と導入(Erya とは何か、インストール、画面の見方)、第 2 部は日常の編集(開く、入力、検索、元に戻す)、第 3 部は応用機能(文字コード、大容量ファイル、16 進数、比較)、第 4 部は設定と付録(キー変更、言語、早見表)です。
番号は「部-章」です。3.4 なら第 3 部の第 4 章、節はさらに 1 桁足して 1.1.1 のように書きます。本文で「4.1 参照」とあれば第 4 部第 1 章のことで、左のメニューから開けます。
3 通りの読み方
- Erya がはじめての方:1.1 から 1.3 を読み、続けて 2.1(開くと保存)へ。この 4 章で実務に入れます。
- 他のエディターを使ってきた方:1.3(画面)と 4.4(キー一覧)だけ読み、必要になったら戻ってください。nano や vim をお使いなら先に 4.1 を。慣れたキー配列に変えるほうが覚え直すより早道です。
- いますぐ 1 ファイル開きたいだけの方:起動は 1.2.5、画面は 1.3、終了は Ctrl+X。3 分で済みます。
左上の検索ボックス(または ⌘K / Ctrl+K)は 2 つのことをします。この章の本文で一致した箇所を黄色で示し Enter で順に移動できるようにすること、そして同じ話題を扱う他の章を一覧に出すことです。画面イメージの中の文字も検索対象です。
本書では Ctrl+S のような表記がキー、~/.config/erya/keymap.toml のような表記がファイルパスやコマンドです。注意していただきたいのは、Erya のショートカットはまるごと差し替えられるという点です(4.1 参照)。本書は内蔵の Erya Terminal Safe を基準にしています。プロファイルを変更した方は、画面 2 行目のヒント行と F1 ヘルプをご覧ください。そこに出ているのが実際に使えるキーです。
内容はすべて現在のソースコードに基づきます。計画中の機能も、「本来こうあるべき」という話も書きません。「既定ではキーが割り当てられていない」「このモードでは使えない」と書いてあれば、それが現状です。
Erya がすること・しないこと
一言でいえば、ターミナルの中で動き、CJK 文書を真剣に扱うテキストエディターです。
名前は「爾、近なり;雅、正なり」という古い訓詁に由来し、DOS 時代の中国語文書システム『漢書』を Rust で蘇らせたものです。仕様先行でゼロから書き直しており、オリジナルのソースコードや素材は一切含みません。当時の開発チームとの関係もありません。
ターミナル(Terminal.app、iTerm2、Windows Terminal、SSH 接続のいずれでも)の中で動き、実行中はウィンドウ全体を使い、終了すると元の画面に戻します。見た目はこうです:
| Erya がすること | Erya がしないこと |
|---|---|
| プレーンテキストを開く・編集する・保存する | レイアウト、フォント、太字や斜体(ワープロではありません) |
| UTF-8/UTF-8 BOM/Big5/GBK/Shift_JIS の判定と変換 | UTF-16・UTF-32(開いた時点で非対応と表示) |
| 複数タブ、検索と置換、元に戻す・やり直す | 画面分割、同じファイルの 2 か所を同時に表示 |
| ファイル名によるシンタックスハイライト | 静的解析、補完、定義へ移動(IDE ではありません) |
| TOML/YAML/JSON の整形 | その他の形式の整形(外部ツールは呼びません) |
| 16 進数表示と、バイナリファイルのバイト編集 | 逆アセンブル、構造解析(バイナリ解析ツールではありません) |
| 左右 2 ペイン比較と差分の双方向コピー | 3 方向マージ、バージョン管理連携(Git 機能はありません) |
| 64 MiB 以上のファイルの読み取り専用閲覧とログ追跡 | 大容量ファイルモードでの編集 |
| 定型文とキーボードマクロ | プラグイン、スクリプト言語、パッケージ管理 |
Erya には自動保存もクラッシュ復元もありません。Ctrl+S を押していない内容はメモリーの中だけにあります。タブを閉じるときと終了するときには確認しますが(2.1.8 参照)、ターミナルを閉じる・SSH が切れる・マシンが落ちる、といった場合は未保存の内容は失われます。
vim や nano との違い
短く言えば、モードを覚えなくてよいこと、そして CJK が主役であることです。
ターミナル用エディターは他にもあります。Erya が狙っているのは具体的な問題群です:CJK 文書がターミナルで揃わない、変換で文字コードが壊れる、古いファイルがいまだに Big5 である。設計の判断はそこから来ています。
| Erya | vim | nano | |
|---|---|---|---|
| モードの学習 | 不要。開いてすぐ入力できる | 必要(コマンド/挿入) | 不要 |
| キーの見つけ方 | 2 行目に常時表示、F1 に全一覧 | 先に覚える | 下 2 行に表示 |
| CJK 文字コード | 自動判定、常時表示、F7 で変換 | fileencoding を手動設定 | 扱わない |
| 全角の桁揃え | 端末の桁で計算し、全角は 2 桁 | おおむね可 | おおむね可 |
| 絵文字・結合文字 | 書記素クラスター単位で移動・削除 | ビルド次第 | 分割されがち |
| 矩形選択 | 内蔵。文字で埋める・まとめて動かす | あり(Ctrl+V ブロック) | なし |
| ファイル比較 | 内蔵(F4) | vimdiff を起動 | なし |
| 16 進数表示 | 内蔵(Ctrl+P) | xxd に通す | なし |
| キーの変更 | TOML 1 つ。12 種類同梱 | vimrc(強力だが要学習) | nanorc(限定的) |
keymap/ ディレクトリには nano・vim・emacs のプロファイルに加え、VS Code、Visual Studio、IntelliJ、Eclipse、macOS 版も入っています。F2 を押して選び Enter。設定ファイルは不要です(4.1.3 参照)。
全体像:5 つのブロック
Erya のどの画面も、この 5 つのどれかに属します。
ひとつ注意を。この 5 つにメニューはありません。Erya にはメニューバーがなく、すべての機能はキーで呼び出します。見つからないときは F1 を押してください。その一覧が機能の総目次です(1.3.8 参照)。
文書の一生
開いてから書き戻すまで、5 つの駅を通ります。
- 開く。コマンドラインでファイル名を渡すか、Ctrl+O でファイルダイアログを開きます。同じパスがすでにタブにあれば、Erya はそちらへ切り替え、二重には開きません(2.1.1)。
- 種別を判定する。サイズと先頭 8 KiB に NUL バイトがあるかを見てモードを決め、同時に文字コードを推定します(3.1.1)。
- 編集する。通常のテキストファイルはここで大半の時間を過ごします。各タブがカーソル位置・検索条件・最大 100 手の履歴を個別に保持します(2.4.1)。
- 変換する(任意)。古い Big5 を UTF-8 に、CRLF を LF に変えるなら保存前に F7/F8 を。変換は次回保存時に行われ、押した瞬間ではありません(3.1.2)。
- 保存する。Ctrl+S は同じディレクトリに一時ファイルを書き、原子的に差し替え、Unix では元の権限も戻します(2.1.6)。
3 種類の読者、3 つの道順
自分がどれかを決めてから、必要な章だけ読んでください。
文章を書く方
原稿、メモ、古い文書の整理
- 開く・タブ・保存
- 検索と置換、元に戻す
- 文字コードと改行の変換
- 段落の再整形、定型文
道順:1.2 → 1.3 → 2.1〜2.4 → 3.1
サーバーの設定を触る方
SSH で入り、conf を直し、ログを見て、2 つの設定を比べる
- オプションと環境変数
- ハイライトと TOML/YAML/JSON 整形
- 大容量ファイルとログ追跡
- 設定ファイル 2 つの比較
道順:1.2 → 1.3 → 2.1 → 3.1 → 3.2 → 3.4
自分の手になじませたい方
キーや言語を変える、チームで設定を揃える
- 同梱の 12 プロファイル
- キーマップエディターと保存
- 設定ファイルが読まれる場所
- 表示言語と自作翻訳
道順:1.3 → 4.1 → 4.2 → 4.4
3 つを兼ねているのが普通です。その場合は第 1 部と第 2 部を順に読み、第 3 部・第 4 部は必要になってから開いてください。
まず覚える 6 つのこと
どれも後の章で再登場しますが、出発点としてここに置きます。
- 自動保存はありません。Erya が勝手に保存することはなく、クラッシュ復元もありません。ディスクに書くのは Ctrl+S だけです(2.1.5)。
- 終了は Ctrl+X。Ctrl+C ではありません。既定では Ctrl+C はコピーで、中断ではありません。タブを閉じるのは F11 です(2.1.3)。
- ショートカットは差し替え可能なので、手引きと手元が違うことがあります。2 行目と F1 が常に実際のキーを示します(4.1)。
- 文字コードと改行は「次の保存」で反映されます。F7/F8 はステータス行を変えるだけです(3.1.2)。
- 編集できないモードが 3 つあります。大容量ファイル読み取り専用、テキストファイルの 16 進数表示、ストリーム読みのバイナリ。どれもステータス行に明記されます(3.2、3.3)。
- 矩形選択と折り返し表示は同時に使えません。座標の考え方が衝突するため排他で、片方が有効なときにもう片方を有効にしようとするとメッセージで止められます(2.2.5)。
用語はどの章にあるか
この章に出た用語です。全用語は 4.4.8 にあります。
| 用語 | ひとことで言うと | 参照 |
|---|---|---|
| タブ | 同時に開いている複数のファイル。カーソルや履歴を個別に持ちます。 | 2.1.3 |
| ヒント行 | 2 行目。その画面で使えるキーを常に並べています。 | 1.3.3 |
| ステータス行 | 下から 2 行目。ファイル名、行と列、モード、文字コード、改行。 | 1.3.5 |
| メッセージ行 | 最終行。操作の結果や確認の問いが出ます。 | 1.3.6 |
| キープロファイル | 操作とキーの対応を書いた TOML。まるごと差し替えられます。 | 4.1 |
| 書記素クラスター | 画面上で 1 文字に見える単位。何個のコードポイントでできていても 1 つ。 | 2.2.3 |
| 矩形選択 | 長方形の選択。文字で埋めたり、まとめて動かせます。 | 2.2.5 |
| 大容量ファイルモード | 64 MiB 以上で自動的に入る読み取り専用の閲覧モード。 | 3.2 |
| 16 進数表示 | 文書をバイト単位で見る画面。テキストファイルでは読み取り専用。 | 3.3 |
| バイナリファイル | NUL を含む、または復号できないファイル。開くと直接バイト表示になります。 | 3.3.5 |
| 一時コピー | 比較中の作業ファイル。適用するまで元のファイルは変わりません。 | 3.4.1 |
| 定型文 | 登録して繰り返し挿入する文字列。JSON に保存します。 | 2.4.3 |
| マクロ | 記録して再生するキー列。JSON に保存します。 | 2.4.6 |
| アトミック保存 | 一時ファイルを書いてから差し替える方式。半端なファイルが残りません。 | 2.1.6 |