開いたときの文字コード判定
Erya が推定し、その結果をステータス行に出し続けます。
- Erya が扱う文字コードは 5 つ:UTF-8、UTF-8 BOM、Big5、GBK、Shift_JIS。
- 開くだけではファイルは変わりません。判定結果は「次の保存で使う既定値」にすぎません。
- 判定は統計的な推定なので、短いファイルでは外れることがあります(数文字しかない Big5 が GBK と判定されるなど)。文字化けしていたら F7 で次を試してください(3.1.2 参照)。
- UTF-16・UTF-32 は対応範囲外です。「detected unsupported text encoding: UTF-16LE」のように報告し、無理に復号して文字化けさせたり、編集可能なバイト列として見せたりはしません。
F7 で保存時の文字コードを変える
1 回押すごとに、5 つの循環を 1 つ進みます。
変わるのは「次の保存で使う文字コード」です。実際の変換は Ctrl+S のときに行われます。押したあと、変換するなら保存、やめるなら押して一周させるか Ctrl+Z で戻せます。文字コードの切り替えも 1 手として元に戻せます。
いちばん多い使い方は、古い Big5 の文書を UTF-8 にすることです。開いて(ステータス行に Big5)、F7 で UTF-8 にし、Ctrl+S。Big5 しか受け付けない古いシステムへ渡すときも手順は同じです。
変換できないとき
その文字コードを飛ばします。「?」で文字を潰したりはしません。
Big5 に「𠮟」は無く、Shift_JIS に絵文字はありません。多くのツールは黙って ? や □ を書き、後から気づくことになります。Erya は違います:
- まず変換を試みます。文書中のすべての文字を表現できたときだけ成功です。
- 1 文字でも表現できなければ、その文字コードを飛ばして次を試します。F7 を 1 回押しただけで UTF-8 から GBK へ飛ぶのはこのためです。間の Big5 が本文の何かを表現できなかったのです。
- 5 つとも駄目なら「… に切り替えられません:表現できない文字が文書に含まれています」と出て、元の文字コードのままです。
これが文字コードに関する Erya の中心的な原則です。保存されたファイルは、完全であるか、元の文字コードのままか、どちらかです。半分正しく半分「?」になることはありません。どの文字が原因か分からないときは、いったん UTF-8 で保存して別のツールで比べてください。
F8 で LF/CRLF を切り替える
文字コードと同じく、次の保存で反映されます。
| 表示 | 内容 | よく使われる場所 |
|---|---|---|
| LF | 改行 \n | Linux、macOS、多くの言語や設定ファイル |
| CRLF | 復帰+改行 \r\n | Windows のテキスト、古いシステムの出力 |
- Erya は開いた時点でどちらかを判定し、ステータス行の最後のマスに出します。
- F8 で切り替え、「CRLF に切り替えました;保存すると改行コード変換が完了します」と出ます。
- Ctrl+Z で元に戻せます。
- 末尾の改行の有無も保たれます。元が改行で終わっていなければ、勝手に足されることはありません。
たいていは改行コードです。開いてステータス行の最後のマスを見て、F8 で元に戻して保存すれば、差分はきれいになります。
シンタックスハイライトの決まり方
まずファイル名全体、次に拡張子。分からなければプレーンテキストです。
- 認識できた言語はステータス行の 4 番目のマスに出ます(Markdown、TOML など)。マスが無ければハイライトも無しです。
- 主要な言語は網羅しています:Rust、C/C++、Go、Python、Java、JavaScript/TypeScript、シェル、SQL、Markdown など。
- 構造化フォーマットも同様:TOML、YAML、JSON、XML、.ini、.conf。
- 選択の灰色は色の上に重なるので、互いに干渉しません。
1 行が 64 KiB を超える場合や、カーソルが一度に大量の行を飛び越えた場合、Erya は範囲を限定したハイライトに切り替え、解析で画面が固まらないようにします。一時的に色の付かない行が見えることがありますが、内容は無事です。大容量ファイルモードではハイライトを完全に無効にします(3.2.2 参照)。
Linux の設定ファイルも対象
拡張子の無い設定ファイルが多いので、ファイル名全体で判定します。
| 分類 | 認識するファイル名・拡張子 |
|---|---|
| 一般の設定 | .conf、.ini、.editorconfig |
| systemd unit | .service、.socket、.timer、.mount、.target、.network |
| 環境変数 | .env、.env.* |
| 構造化フォーマット | TOML、YAML、JSON、XML |
| シェル起動ファイル | .bashrc、.profile、.zshrc、/etc/default/* |
| システム設定 | .gitconfig、sshd_config、ssh_config、sudoers、fstab、hosts、resolv.conf |
| サービス設定 | nginx.conf、Apache の設定、crontab、Dockerfile/Containerfile、Makefile |
この一覧は偶然ではなく必須要件です。SSH でサーバーに入り設定ファイルを直すことが、Erya の想定用途の 1 つだからです。
Ctrl+T で文書を整形する
対象は 3 形式だけ:TOML、YAML、JSON。
| メッセージ行 | 意味 |
|---|---|
| ドキュメントを整形しました。Ctrl+Zで元に戻せます | 成功。まとめて1 手です(2.4.2 参照)。 |
| ドキュメントはすでに整形されています | もともと整っており、何も変わりませんでした。 |
| 現在、TOML、YAML、JSONドキュメントの整形に対応しています | このファイルはその 3 つではありません。拡張子で判断します。 |
| 整形に失敗しました。ドキュメントは変更されていません:… | 構文エラーです。たいてい行番号が示され、文書はそのまま残ります。 |
コメントを捨ててしまう整形ツールは少なくありませんが、Erya は残します。設定ファイルでは「なぜこの値なのか」を書いた唯一の記録がコメントであることが多いからです。
.yaml を直したら Ctrl+T を 1 回。何も言われなければ構文は正しく、間違っていれば場所を教えてくれます。デプロイして気づくよりずっと速いです。
段落の再整形と段落幅
段落を指定幅に折り直します。既定ではキーがありません。
| 操作名 | Classic のキー | 内容 |
|---|---|---|
| set_paragraph_width | Alt+M | 再整形の幅を設定します。範囲は 20〜500 桁、既定は 80。 |
| reflow_paragraph | Alt+Q | カーソルのある段落を、その幅で折り直します。 |
- 段落の境目は空行です。カーソルから上下に、いちばん近い空行までを 1 段落とみなします。
- 空行の上で実行すると「カーソルは段落内にありません」と出ます。
- 成功すると「段落を 80 桁で再整形しました」。まとめて1 手です。
- 20〜500 の範囲外だと「段落幅は 20〜500 の整数で指定してください」と出ます。
- 再整形は端末の桁で計算するので、全角は 2 桁として扱われ、右端が実際にそろいます。
定型文やマクロと同様です(2.4.8 参照)。Erya Classic に切り替えるか、キーマップエディターで自分で割り当ててください(4.1.4 参照)。
Ctrl+L の折り返しは画面だけの話で、ファイルは 1 バイトも変わりません。段落の再整形は実際に改行を入れます。人に渡すプレーンテキストは再整形、自分で長い行を読むだけなら折り返しを使ってください。
よくあるつまずき
文字コードと書式まわりで多い 6 つ。
| 症状 | 原因と対処 |
|---|---|
| 全体が文字化けしている | 判定が外れています。F7 で正しく読めるものを探し、保存します(3.1.2)。 |
| F7 を押したのにファイルが変わらない | 変換は保存時です(3.1.2)。 |
| F7 がある文字コードを飛ばした | 本文に表現できない文字があり、飛ばされました(3.1.3)。 |
| Git の差分がファイル全体になる | 改行コードが変わっています。F8 で戻します(3.1.4)。 |
| 設定ファイルに色が付かない | 認識リストに無い(3.1.6)か、大容量ファイルです(3.2.2)。 |
| Ctrl+T が非対応と言う | 整形は TOML/YAML/JSON の 3 つだけです(3.1.7)。 |