NE(1)

名称
ne - テキストエディタ

書式
ne [-ejor] [-D name=val] [file ...] [+line]

解説
ne はモードレスなフルスクリーンのテキストエディタです。 主要な操作や編集方式を MS-DOS系OS で有名な Vz 互換にしていますので、MS-DOS系OS や Windows などで Vz、 Mifes など wordstar 系テキストエディタを使っていた方には使いやすいと思います。 オプションは以下の通り:

-j: メッセージを日本語にします。

-e: メッセージを英語にします。但し不完全です。

-o: オープニングを表示します。

-r: プロファイルが保存されていればその時の編集状態に戻します。

-Dname=val:
    内部変数 name に val を定義します。

+line:
    編集開始する時の行番号を vi 互換方式で指定します。

ファイルを指定しない場合はカレントディレクトリの untitled.txt というファイルを編集します。

画面構成
ne の画面は最上行以外は基本的にエディタ画面です。 最上行は編集ファイルに対する情報を表示するシステムガイド行です。 システムガイド行を左から説明します。 左端の一文字はページ切替えのキー操作でどういう挙動をするかを示しています。
P:	通常のページングモード
S:	文字列検索モード
次の一文字は文字を打ち込んだ時に上書きするのか、 挿入するのかを示しています。
i:	挿入モード
R:	上書きモード
次の "00001/ 1%" のような表示は現在編集中の行を示します。 / の前にある数字は、現在カーソルのある行を 1から数えた行番号で、 後ろの数字はその行がファイル全体の大体何％位の位置かを示します。 次の "001[0020]" のような表示は現在編集中の位置 (桁) を示します。 最初の数字がカーソルにある桁位置を 0から数えた桁番号で示します。 []の中の数字はカーソル位置の文字の文字コードを示し、 2ストローク入力の時はその一文字目のコードを示します。 次の数字は編集中のファイルサイズを示しています。 この数値は実際にバッファにある文字のバイト数なのですが、 EUC/LF の場合で計算しているので、 JIS/SJIS モードの場合や CRLF モードの場合にサイズは食い違ってしまいます。 最後の "1EL:/home/README.jp" のような表示は編集対象の情報を示します。 数字は編集しているファイルの番号で次の二文字が 編集中のファイルの文字コードと改行コードの種類を示します。
E:	EUC
S:	SJIS
J:	JIS
L:	LF
+:	CRLF
C:	CR
その次の一文字はそのファイルを既に変更したかどうかを示します。
::	まだ変更していない。
*:	既に変更している。
そして最後にフルパスで示したファイルネームが続きます。

機能説明
(大体が Vz と同じなので独自とは言えませんが) ne 独特のフィーチャーを説明します。 キー操作の説明に例示するキーは全て標準設定に従っています。 行の中で編集を行ってもその時点ではまだ修正した事にはなりません。 カーソル移動のキー操作等によりその行を離れたり、 ファイルセーブ等のキー操作を実行した時点で始めて その行が更新したのかを調べます。 つまり間違った文字入力や削除を行ってしまっても行移動するまでならば、 元の文字列に戻しさえすれば修正した事にはなりません。 この時、行編集の取り消しのキー操作 (^QL) により、 行編集前の状態に戻す事も可能です。 一連のキー操作をまとめて一つのキーに記憶させる機能です。 キーボードマクロ登録開始のキー操作 (^_) により登録を開始し、 覚えさせる一連のキー操作を行った後に、 キー操作として登録されていないキーを押した時点で、 そのキーにそのマクロを割り当てる事が可能です。 カーソルを上下に動かした時でカーソルが行末以降に来る場合、 フリーカーソルモードを有効にしているならば、 カーソルは行末を越えても同じ位置にあり、 あまりカーソルが左右に揺れて見にくい状態になる事を回避します。 フリーカーソルモードが無効の場合でも行末を越える場合以外でも、 なるべくカーソル位置が変わらないようになっています。 ページ移動のキー操作 (^R、^C) にはページングモードが存在します。 システムガイド行の左端の一文字はこのモードを指し、 P の場合は普通のページ切替えを意味し、 S の場合は、ページ移動のキー操作で前後への検索を行います。 ページングモード切替えのキー操作 (^@) によって、 P と S を切替える事が可能です。 文字を削除するキー操作 ([DEL]など) で削除した文字・文字列は、 削除文字バッファにスタックされていきます。 このバッファにスタックされた文字は 削除アンドゥーのキー操作 (^U) により復活させる事が可能です。 この場合、削除文字バッファが溢れない限りは全て復活できます。 ただし、上書きを行った文字はこの文字アンドゥーでは復活できません。 ne はブロックバッファもスタック構造を持っています。 つまり、ブロックカットのキー操作 (^Y)、 ブロックヤンクのキー操作 (^KK) は、 指定した行範囲をブロックバッファにスタックします。 このスタックされたブロックバッファは、 積んだ順序と逆の順序でテキストに張り付ける事が可能です。 バックアップ機能を有効にしている場合、ファイルを書き出す時に、 元のファイルのバックアップをとる機能です。 バックアップファイルには、元のファイル名 (拡張子含む) に、 ".bak" を付けたファイルにリネームされます。 任意の時点での編集状態 (編集しているテキストのファイル名・内容など) を、 編集対象のファイルとは別の、 プロファイル という保存形式で保存する事が可能です。 プロファイル保存のキー操作 ([ESC]W) や、 終了のキー操作 ([ESC]Q)、 そしてシグナル等による強制終了時にプロファイルが保存されます。 ne -r として起動するとこの保存された プロファイル
 を読みだし、保存された時点の編集状態に戻す事が可能です。 ファイルの読みだし時は自動的にそのファイルの漢字コードを判別し、 内部表現である EUC に変換します。(いわゆる) 半角カナの変換も対応しています。 ファイルセーブ時は読み出した元の漢字コードにより書き出し、 編集中にもこの漢字コードの変更が可能です。 ファイルオープンのキー操作 ([ESC]Oなど) でファイルを開く場合、 ファイル名を入力するプロンプトで、 そのままリターンキーを押すとファイラが立ち上がります。 UNIX のフリーソフトウェアでは FD clone や mc が有名ですがこれに似たような物と考えてください。 実際のところは Vz に内蔵のファイラに近いのですがメニューなどの問題で、 実際には PC-98x1 のフリーソフトウェア FL の FDモード に一番近いかもしれません。 端末の処理に TERMCAP を利用し、 エントリが足りない場合は VT200 相当のシーケンスを使用します。 それだけではどうしても対応できない環境の為に、 起動時に term.$NE_TERM と term.$TERM を読みだします。 現時点では作者の利用している rxvt 用の設定を付属していますが、 これは シフト+カーソルキー や コントロール+カーソルキー が使用できます。 みなさんも有効な設定ができましたら是非とも御一報ください。

ユーザー・カスタマイズ
ne が使用する設定ファイルでパスが指定されていない場合、 まずホームディレクトリの下の .ne ディレクトリ (~/.ne/) を調べます。 次にシステム標準のディレクトリ (/usr/local/etc/ne/) を調べます。 つまり、各ユーザーのホームの下の .ne ディレクトリが優先されます。 これを設定ファイルの検索パスと呼びます。 パスを含めた場合は、設定ファイルの検索パスは調べられません。 ne は起動時に設定ファイルのパス検索の nerc を読みます。 つまり最初に ~/.ne/nerc を探し、無ければ /usr/local/etc/ne/nerc を探します。 ne の標準の設定は Vz ライクな /usr/local/etc/ne/nerc です。 これを ~/.ne/nerc にコピーしてから設定の変更をしてみてください。 この設定ファイルではオプション設定のみを行い、 キー操作の設定や端末設定を行うファイルを呼び出すだけにしています。 もちろん nerc のみにこれら全ての設定をいれる事も可能ですがお勧めはしません。 使用する設定ファイル群を ~/.ne の下にコピーしてから、設定の変更を行い、 nerc から呼び出すだけにする方がいいでしょう。 設定ファイルの基本的な記述方法はUNIXでよくある行指向の物です。 # 以降行末までをコメントとします。 制御命令は以下の通り:

!I file:
    file で示されたファイルを読み込みそれを設定として使います。 そのファイルを処理し終った後はこの次の行から再開します。 この時パスが指定されていない場合はまず ~/.ne/file を読もうとし、 見つからなければ次に /usr/local/etc/ne/file を読みにいきます。

!R V:
    次の行以降でオプション設定を行います。 ."

!R D:
    次の行以降で [BS] や [DEL]、[UP] などの特殊文字を定義します。 これにより termcap で吸収しきれない端末依存の問題に対処できます。

!R K[:region]:
    次の行以降でキーアサイン、つまりキー操作の設定を行います。 region を省略した場合、エディタのメインでのキーアサインで、 sys を指定した場合、メニューなどで使用されるキーアサインで、 eff を指定した場合、ファイラーで使用されるキーアサインを意味します。

変数は以下の通り:

$(name):
    内部変数 name に置換します。

$*(name):
    環境変数 name に置換します。

$?(hex):
    16進数の値 hex をそのままキャラクタコードとして置換します。

オプション
オプション設定で設定できるオプションです。 []の中に省略した場合のデフォルトを示します。

AnsiColor
    ANSIエスケープシーケンスによる色を用います。

AutoIndent
    オートインデントを使用します。

Backfile
    バックアップファイルを作成します。

CRMark
    各行の終りのリターンコードを見えるように表示します。 ただし、AnsiColor が Off の場合は見づらくなるでしょう。

FreeCursor
    カーソルが行末尾以降にも移動するフリーカーソルモードを使用します。

Japanese
    メニューやメッセージを日本語で表示します。

NoCase
    検索の際、大文字・小文字の区別を行いません。

Number
    行番号を表示します。

OverWrite
    カーソル位置に上書きをします。

TabMark
    タブコードを見えるように表示します。

TabStop
    タブカラムを設定します。

キーアサイン

^KW [F02]
    現在編集中のファイルをトグル切替えます。

^KT [F03]
    現在編集中のファイルをメニューで選択して切替えます。

[ESC]O
    テキストをオープンします。 この時にファイルネームを聞いてくるのですが、 ここで何も入力せずにリターンを押すとファイラーモードに移ります。 既にオープンしたファイルを指定した場合は、 そのテキストが編集対象のテキストになります。

[ESC]C
    対象のテキストをクローズします。 この時、修正フラグが立っている場合はセーブするかどうか聞いてきます。 Y もしくはリターンを押せばセーブし、 N もしくはスペースでセーブしません。 この時 ESC を押すとこの操作を取り消して、編集に戻ります。

[ESC]L
    現在編集中のファイルを閉じ、新しく別のファイルを開きます。 ただし、新しいファイルを開く事ができない場合、 元のファイルは閉じられません。

[ESC]S
    現在編集中のファイルを保存します。 この時ファイルネームを変更する事が可能です。

[ESC]Q
    プロファイル情報をセーブした後そのまま終了します。

[ESC]P
    現在編集中のテキストのファイルネームを変更します。 変更を行うとファイルの変更フラグが立ちます。

[ESC]W
    プロファイルを保存します。

[ESC]U
    編集を放棄して同じファイル名のファイルを再度オープンします。 Vzと違いカーソル位置は移動しません。

[ESC]I
    カーソルのある行にファイルを挿入します。

[ESC]X
    全てのファイルを一括クローズします。 変更フラグの立っているファイルのみ保存するかを確認をします。

^E [UP]

^X [DOWN]

^S [LEFT]

^D [RIGHT]
    カーソルを上下左右へ移動します。

^A

^F  カーソルを前、次の単語の先頭へ移動します。

^QS [HOME]

^QD [END]
    カーソルを行の先頭、最後へ移動します。

^W

^Z  表示しているテキストをそのまま上下にスクロールさせ、 カーソルの表示位置を変えずに行を移動させます。

^R [PGUP]

^C [PGDN]
    ページングモードによってかわりますが、通常のページモードの場合は、 カーソルの表示位置を変えずにテキストを 1ページ上下に移動します。 この時 1ページとは行の数 -1 を意味します。 サーチモードの場合はそれぞれ上方向・下方向への検索を行います。

^QE

^QX カーソルを画面の上端、下端へ移動します。

^QR

^QC カーソルをテキストの先頭、末尾に移動します。 行ジャンプ

^QP 直前に記憶したカーソル位置に移動します。 このカーソル位置の記憶は、^QR ^QC ^QF ^QM ^QP ^QJ ^Q1〜4で行われます。

^QM 今のカーソル位置を記憶します。

^QJ 指定した行番号にカーソルを移動します。

^K1〜4
    今のカーソル位置をそれぞれ1番〜4番のマークスロットに登録します。

^Q1〜4
    それぞれ1番〜4番のマークスロットに登録された位置にカーソルを移動します。

^QG カーソルの指してる行にタグ情報が含まれている場合、 そのタグ情報の指すファイル・行番号に移動します。

^M [CR]
    カーソルの位置でその行を切ってリターンコードを挿入し、 残りを次の新しい行にします。 アートインデントが有効ならば次の新しい行には、 元の行の先頭のスペース・タブが移されます。

^U  直前に削除した文字や単語をカーソルの位置に挿入させます。

^P  制御文字を入力します。

^N  カーソルの位置 (正確にはカーソルのある行の直前) に新しい行を挿入します。

^QL 行編集を取り消し、編集前の状態にします。

^H [BS]
    カーソルの直前の一文字を削除します。

^G [DEL]
    カーソルの位置の一文字を削除します。

^QH

^T  それぞれカーソルの直前・位置の単語を削除します。

^QT

^QY それぞれカーソルから行頭・行末までを削除します。 ブロック処理

^B [F10]
    カーソル位置 (正確にはその行の直前) を基準とした ブロック指定モードになります。

^Y [F08]
    カーソルの行もしくは、ブロック指定モードの場合そのブロックを、 編集テキストから削除し、ブロックバッファにスタックしていきます。

^J [F09]
    ブロックバッファにスタックされた文字列があるならば、 カーソルの位置に挿入し、そのスタックを破棄します。

^KK カーソルの行もしくは、ブロック指定モードの場合そのブロックを、 編集テキストを変更せずに、ブロックバッファにスタックしていきます。 ^Y block_cut と違うのは編集テキストを変更しない点です。

^KC ブロックバッファにスタックされた文字列があるならば、 カーソルの位置に挿入します。 ^J block_paste と違う点は、挿入したスタックはそのまま変更しない点です。

^KY ブロックバッファの全てのスタックを破棄します。

^KY ブロックの先頭と末尾を交換し移動します。

^KD カーソルの行もしくは、ブロック指定モードの場合そのブロックを、 そのまま複写し編集テキストに挿入します。

^@  ページングモードを切替えます。 通常のページモードとサーチモードのみがあります。 ハーフページやタイトルサーチなどの機能はありません。

^QF [F06]
    検索する文字列を指定します。 この時文字列を指定するのみで検索はしません。 文字列が指定された場合はページングモードをサーチモードにします。

^QA [F07]
    文字列を置換します。

^QO 直前に行った文字列置換を再実行します。

^L [F05]
    カーソル位置の単語を検索文字列として取得します。

search_prev

search_next
    上方向・下方向への検索を行います。

^_  キーボードマクロの設定を開始します。

^V [INS]
    挿入モードと上書きモードを切替えます。

[ESC]E
    子プロセスを実行します。

[F01]
    ファイル操作のメニューを出します。

[F04]
    オプション設定・確認のメニューを出します。

^KI タブのカラム数を指定します。

[ESC]D
    画面を際描画します。

[ESC]
    メニューなどを終了します。

[CR]
    メニューの選択、文字列入力の決定などをします。

^E [UP]

^X [DOWN]
    メニューの場合はメニューカーソルを上下に移動します。 文字列入力時はヒストリーの選択を行います。

^S [LEFT]

^D [RIGHT]
    文字列入力時は、カーソルを左右に移動します。

^R

^C  メニューの場合、上下にページ移動します。

^W

^Z  メニューの場合、上下にロール移動します。

^QR

^QC メニューの場合、メニューの上端・下端に移動します。

^QS [HOME]

^QD [END]
    文字列入力時、カーソルを左端・右端に移動します。

^H [BS]
    直前の文字を一文字削除します。

^G [DEL]
    カーソル位置の文字を一文字削除します。

^P  制御文字を入力します。

[ESC]
    ファイラを終了します。

[CR]
    ファイルを指す場合そのファイルをオープンし、 ディレクトリを指す場合そのディレクトリに移動します。

^E [UP]

^X [DOWN]
    カーソルを上下に移動します。

^R

^C  カーソルを上下にページ移動します。

^W

^Z  カーソルを上下にロール移動します。

^QR

^QC カーソルを上端・下端に移動します。

^QE

^QX カーソルを画面の上端・下端に移動します。

w   ウィンドーの数を1枚と2枚に切替えます。

[TAB] [LEFT] [RIGHT]など
    ウィンドーが2枚ある場合、他方のウィンドーにカーソルを移します。

x h 子プロセスを実行します。

@   ディレクトリを再読み込みし再表示します。

k   ディレクトリを作成します。

l   ディレクトリを指定して移動します。

c   ファイルを複写します。

m   ファイルを移動します。

v   ファイルを環境変数 PAGER で指定されたページャーで参照します。

d   ファイルを削除します。

r   ファイル名を変更します。

[SPACE]
    ファイル・ディレクトリをマークします。 一つでもマークがある状態だと、ファイルの複写・移動・削除は、 それぞれマークに対して処理を行います。

*   マークが一つでもある状態だとマークを全て消して、 マークがない状態だと全てのファイルのみをマークします。

環境変数

HOME
    nerc ファイルを捜し出す為に利用されます。

SHELL
    ne から外部プロセスを呼び出す際に使用されます。

NE_TERM
    ne 独自の端末設定を行う場合に使用されます。

TERM
    termcap を用いて端末エントリを読み出す際に使用されます。 NE_TERM が指定されていない場合は、 ne 独自の端末設定を行う場合にも使用されます。

シグナル

SIGALRM
    プロファイル保存 (のみ) を行います。

関連ファイル

~/.ne/, /usr/local/etc/ne/
    パス指定しない設定ファイルの読み込み時に検索するディレクトリ

~/.ne/nerc, /usr/local/etc/ne/nerc
    起動時に読み込まれる設定ファイル

~/.ne/.neTmp/
    プロファイル保存ディレクトリ

~/.ne/.neprof
    プロファイル管理ファイル

~/.ne/ne_lock
    ロックファイル

関連事項
sh(1), termcap(5)

バグ
いろいろな部分が未完成で、 Vz との互換性の低さ、設定ファイルの仕様が確定していない、 編集中の文章が消える可能性が (多分無いとは思うが) あるなど、 バグや仕様ミスなどがあると思います。