第 3 部・応用機能 / 3.1

文字コード・改行・シンタックス

Erya は中国語文書のために書かれたので、文字コードの扱いが前面に出ています:開いた時点で自動判定し、ステータス行に常時表示し、F7 で切り替え、そして表現できない文字があるときは変換を拒否します——「?」で潰したりはしません。

所要時間 約 14 分 対象 古いファイルを扱う人 前提知識 2.1 バージョン v1.0 ・ 2026-08-26
3.1.1

開いたときの文字コード判定

Erya が推定し、その結果をステータス行に出し続けます。

バイトを読む 先頭に UTF-8 BOM → UTF-8 BOM 全体が正しい UTF-8 → UTF-8 判定器に渡す → Big5/GBK/Shift_JIS 判定不能、または NUL → エラー、またはバイト表示 判定結果はそのままステータス行へ 報告.txt │ 5:24 │ 挿入 │ Big5 │ CRLF 触らなければ、保存も同じ文字コードで行われます
図 3.1.1 判定順序。まず BOM、次に「全体を UTF-8 として読めるか」、それでも駄目なときに Big5・GBK・Shift_JIS のあいだで統計的に推定します。
  • 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」のように報告し、無理に復号して文字化けさせたり、編集可能なバイト列として見せたりはしません。
3.1.2

F7 で保存時の文字コードを変える

1 回押すごとに、5 つの循環を 1 つ進みます。

UTF-8 UTF-8 BOM Big5 GBK Shift_JIS もう 1 回押すと UTF-8 に戻ります
図 3.1.2 循環の順序。ステータス行の後ろから 2 番目のマスが変わり、メッセージ行に「Big5 に切り替えました;保存すると文字コード変換が完了します」と出ます。
F7 を押してもファイルはすぐ変わりません

変わるのは「次の保存で使う文字コード」です。実際の変換は Ctrl+S のときに行われます。押したあと、変換するなら保存、やめるなら押して一周させるか Ctrl+Z で戻せます。文字コードの切り替えも 1 手として元に戻せます。

いちばん多い使い方は、古い Big5 の文書を UTF-8 にすることです。開いて(ステータス行に Big5)、F7 で UTF-8 にし、Ctrl+S。Big5 しか受け付けない古いシステムへ渡すときも手順は同じです。

3.1.3

変換できないとき

その文字コードを飛ばします。「?」で文字を潰したりはしません。

Big5 に「𠮟」は無く、Shift_JIS に絵文字はありません。多くのツールは黙って ? や □ を書き、後から気づくことになります。Erya は違います:

  1. まず変換を試みます。文書中のすべての文字を表現できたときだけ成功です。
  2. 1 文字でも表現できなければ、その文字コードを飛ばして次を試します。F7 を 1 回押しただけで UTF-8 から GBK へ飛ぶのはこのためです。間の Big5 が本文の何かを表現できなかったのです。
  3. 5 つとも駄目なら「… に切り替えられません:表現できない文字が文書に含まれています」と出て、元の文字コードのままです。
内容を壊すくらいなら変換しない

これが文字コードに関する Erya の中心的な原則です。保存されたファイルは、完全であるか、元の文字コードのままか、どちらかです。半分正しく半分「?」になることはありません。どの文字が原因か分からないときは、いったん UTF-8 で保存して別のツールで比べてください。

3.1.4

F8 で LF/CRLF を切り替える

文字コードと同じく、次の保存で反映されます。

表示内容よく使われる場所
LF改行 \nLinux、macOS、多くの言語や設定ファイル
CRLF復帰+改行 \r\nWindows のテキスト、古いシステムの出力
  • Erya は開いた時点でどちらかを判定し、ステータス行の最後のマスに出します。
  • F8 で切り替え、「CRLF に切り替えました;保存すると改行コード変換が完了します」と出ます。
  • Ctrl+Z で元に戻せます。
  • 末尾の改行の有無も保たれます。元が改行で終わっていなければ、勝手に足されることはありません。
Git が「ファイル全体が変わった」と言うとき

たいていは改行コードです。開いてステータス行の最後のマスを見て、F8 で元に戻して保存すれば、差分はきれいになります。

3.1.5

シンタックスハイライトの決まり方

まずファイル名全体、次に拡張子。分からなければプレーンテキストです。

  • 認識できた言語はステータス行の 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 参照)。

3.1.6

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 つだからです。

3.1.7

Ctrl+T で文書を整形する

対象は 3 形式だけ:TOML、YAML、JSON。

メッセージ行意味
ドキュメントを整形しました。Ctrl+Zで元に戻せます成功。まとめて1 手です(2.4.2 参照)。
ドキュメントはすでに整形されていますもともと整っており、何も変わりませんでした。
現在、TOML、YAML、JSONドキュメントの整形に対応していますこのファイルはその 3 つではありません。拡張子で判断します。
整形に失敗しました。ドキュメントは変更されていません:…構文エラーです。たいてい行番号が示され、文書はそのまま残ります。
TOML と YAML のコメントは保たれます

コメントを捨ててしまう整形ツールは少なくありませんが、Erya は残します。設定ファイルでは「なぜこの値なのか」を書いた唯一の記録がコメントであることが多いからです。

構文チェック代わりに使えます

.yaml を直したら Ctrl+T を 1 回。何も言われなければ構文は正しく、間違っていれば場所を教えてくれます。デプロイして気づくよりずっと速いです。

3.1.8

段落の再整形と段落幅

段落を指定幅に折り直します。既定ではキーがありません。

操作名Classic のキー内容
set_paragraph_widthAlt+M再整形の幅を設定します。範囲は 20〜500 桁、既定は 80。
reflow_paragraphAlt+Qカーソルのある段落を、その幅で折り直します。
  • 段落の境目は空行です。カーソルから上下に、いちばん近い空行までを 1 段落とみなします。
  • 空行の上で実行すると「カーソルは段落内にありません」と出ます。
  • 成功すると「段落を 80 桁で再整形しました」。まとめて1 手です。
  • 20〜500 の範囲外だと「段落幅は 20〜500 の整数で指定してください」と出ます。
  • 再整形は端末の桁で計算するので、全角は 2 桁として扱われ、右端が実際にそろいます。
この 2 つも既定では空です

定型文やマクロと同様です(2.4.8 参照)。Erya Classic に切り替えるか、キーマップエディターで自分で割り当ててください(4.1.4 参照)。

再整形は中身を変え、折り返しは見た目だけ変えます

Ctrl+L の折り返しは画面だけの話で、ファイルは 1 バイトも変わりません。段落の再整形は実際に改行を入れます。人に渡すプレーンテキストは再整形、自分で長い行を読むだけなら折り返しを使ってください。

3.1.9

よくあるつまずき

文字コードと書式まわりで多い 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)。