= 文字列探索
{FINd | IFInd | EXClude | IX | FNX | INX}
[!] {探索文字列 | * | *e | *ec | *g | *L | *=Mn | *u | *=[n] | \esc | P'pics'}
[探索位置] [& [!] 探索文字列2 [探索位置2] [-d[<|>]n]
[-g]
[U[B|L|8|4]]
[all | next | + | prev | - | first | last]
[-a[-]n] [-b[-]n] [-c[{L|R}m][{T|B}n]] [-j|-je]
[-Llcmd] -m[n] [-nx] [.lab1 .lab2]
探索位置:[l-column | LM | RM [r-column] | eol | maxeol]
FIN :大文字/小文字 区別有
IFI :大文字/小文字 区別無(case Insensitive)
EXC :Find後その行を非表示化
IX :IFind後その行を非表示化
FNX :非表示行を除くFINd.
INX :非表示行を除くIFInd.
! :探索文字を含まない行を探索。
探索文字列:スペースを含む場合や以下に示す特殊用途の
文字列自身を探索する場合は引用府を使用して下さい
例えば "F '.exe'", "F 'set up'".
全行非表示化する時は省略可能("EXC all"でOK)
行末に限定する時は "F word\n"の様に\nを付ける。
F "a b"\n ではなく F "a b" eol としてください。
行末を探すときは "F *\n"とする。
行末の "*" を探すときは F "*"\nとする。
& :2つの文字列を含む行の探索。例えば word1 & word2。
* :直前の探索コマンドと同じ文字列を探索
探索方向を変えて再探索する時等に使います
例えば f * prev.
探索範囲は前のは継承されません.
&(AND)探索の第二探索文字においてはこの意味を持ちません。
*u :更新行を探索します
*e :エラー行を探索します
シフトエラー,行コマンドエラーなど.
行に適当にラベルをつけて目印とし "f *e" で探すことが出来ます。
*ec : CPU8 で開いた時の変換エラー文字位置を探します
変換エラー行は 更新でエラーがリセットするまでの間は *e で探せます。
*g :現表示画面上でGREp コマンドで選択された行を探索。
-g オプションサポートで GREpコマンドを編集画面で現在表示しているファイルに
使用することはないと思いますが使用は可能です。
*L :行コマンド "="で比較した結果の一致行(! と組み合わせれば
不一致行)、TCコマンドの "=="によるフィールド比較の
不一致行を探すときに使用できる。
例) "=" 行コマンドで比較した後
"x *l all; del x all" で 一致行を全て削除する
*=[n] :同じ内容の行がn+1行以上続く個所を探索する。
比較桁も指定可能。nの省略値は1。
例えば、"x *= all" の後 "drop x all"とすれば重複の多い
ファイルのファイルサイズを縮小できる。
"x *="コマンドでは最初の1行だけ表示のまま残すが
これも非表示にするときは /b0 を指定する。
-aでマイナスを指定すると下方の行も残すことができる。
例えば -a-1 は 1行目と下から1行を残して間を非表示化。
*=Mn :画面分割で開いた2つのファイルで照合する。
(コマンド入力画面のファイルのキーが別の画面のファイル
にあるか調べる)。
n:第二画面の照合キーカラム。
現画面のキーは探索範囲桁位置パラメータで指定する。
一度でも照合した第2画面の行はエラー表示
行番号欄が反転,"f *e"で探せる。
例)"f *=M6 10 18; del x all"
現画面のカラム10-18が第二画面のいずれかの行のカラム6-14に
一致する行を探す。
"x"と"del"でマッチングした行を全て削除する
\esc :次の1文字エスケープシーケンスとヘキサ指定が可能.
\a (ベル=0x07),\b (後退=0x08),\t (水平タブ=0x09)
\n (改行=0x0a),\v (垂直タブ=0x0b), (改頁=0x0c)
\r (復帰=0x0d),\x(偶数桁のヘキサ文字列)
ヘキサ指定の例. \x8281 , \x09 , \x0c ,
但し ファイル読み込み時に行区切り文字として取り
扱われた \x0d0a や \n は見つかりません.
\aX などと他の文字と一緒には使えません.
またテキストファイルではタブ(\x09)はー\x0920などと
他の文字と一緒には出来ません.
IFIndでもFINd(大文字/小文字 区別有)と扱われます。
Esc解釈をさせたくない場合は "\t" 等と引用符を使用。
(注) UTF8ファイルでは \x__指定の場合文字境界を意識します
\x 指定は探索文字列も置換文字列も4桁の倍数です。
\xaabbのaaは u-xxyy の yyとはマッチしません。xxとのみマッチします。
例) c \x30003000 \x20202020
P'pics' :picsに以下の1文字対応の文字クラス指定文字を指定します
クラス指定文字以外はその文字で探索します。
IFIndコマンドでは大文字小文字指定をしても区別されません
タブ(0x09)はスペースとマッチします。(タブ拡張後に探索)
文字クラス指定文字。
= 全ての文字とマッチ。
. 非表示文字(正規表現で[^[:cntrl:]], 0x00-0x1f,0x7f,0x80但し0x09は除く)
@ アルファベット ( [[:alpha:]] )
- 非数字 ( [^[:digit:]] )
# 数字 ( [[:digit:]] )
< 英小文字 ( [[:lower:]] )
$ 特殊文字 ( [[:punct:]] )
> 英大文字 ( [[:upper:]] )
^ 非ブランク(EBCDIC の ¬ の代わりに ^ を割り当て)
(ISO Latin1の 0xacもOK)
( [^[:space:]] )
例) P'z.@#'
スペース,カンマ、セミコロンを含む場合は "P'ABC== ###'" のように全体を 引用符 で囲んでください。
文字クラス指定文字自身を探す時は P'ABC\=\=##\.##\\' のように "\"でエスケープしてください。
-g :探索文字列が正規表現形式であることを指示。(grep 探索)
"&" 指定の時(両方が正規表現形式である必要はないですが)、
探索文字列2も正規表現とみなします。
タブ(0x09)はスペースとマッチします。(タブ拡張後に探索)
例) f abcd|efg -g で 次の "abcd" か "efg" を探索。
(注) UTF8ファイルでは内部的なデータ表現上から正しく機能しない可能性があります
承知の上使用してください
行がASCII 文字列のみなら問題ないでしょう。
APIはGNU(re_compile_pattern,re_search)を使用し以下のオプションを指定しています。
(Windows版はGNU regex v2.7をポーティングしました)
RE_BACKSLASH_ESCAPE_IN_LISTS :off: [ ] 内の \ はそのまま \
RE_BK_PLUS_QM :off: 繰り返しは \+, \* ではなく +, * をそのまま指定
RE_CHAR_CLASSES :on : [:alpha:]などのクラス指定を使用する。
RE_CONTEXT_INDEP_ANCHORS :off: ^, $ (アンカー)は適切な位置にあるときのみ意味を持たせる。
RE_CONTEXT_INDEP_OPS :off: +, * は適切な位置にあるときのみその意味を持たせる。
RE_CONTEXT_INVALID_OPS :off: +, * は適切な値にない時は通常文字の扱い。
RE_DOT_NEWLINE :on : . は改行文字ともマッチさせる。
RE_DOT_NOT_NULL :off: . は塗る文字ともマッチさせる。
RE_HAT_LISTS_NOT_NEWLINE :on : [^...] のような指定は改行文字とマッチさせない。
RE_INTERVALS :on : 間隔指定({ と })を使用する。
RE_LIMITED_OPS :off: +, *, | を使用する
RE_NEWLINE_ALT :off: 改行文字は通常文字と同じ扱い。
RE_NO_BK_BRACES :on : 間隔指定は \{, \} ではなく {, } をそのまま指定。
RE_NO_BK_PARENS :on : サブグループ指定は \(, \) ではなく (, ) をそのまま指定。
RE_NO_BK_REFS :on : \1 などの後方参照は使用しない。
RE_NO_BK_VBAR :on : Alternation(OR) は \| ではなく | をそのまま使用。
RE_NO_EMPTY_RANGES :on : [ ]内で a-b 形式が逆順のときエラーとする。
RE_UNMATCHED_RIGHT_PAREN_ORD :on : ( ) がペアをなしていない時通常文字として扱う。
IFIndコマンドではRE_ICASE(大文字小文字区別無し)を指定。
#ifdef UTF8SUPP_XE
U[B|L|8|4]:UCS2/UTF8コードを探索
U : オプションプレフィックス。
B/L : BigEndian/LittleEndian UCS2探索。省略値はOSに従う(Intel系は"L")。
例えば 0x'003100320033' を探す時 "F 123 UB"、
0x'310032003300' を探す時 "F 123 UL" とする。
8 : UTF8 コードで探します。
コマンド行の入力は A+u キーでどちらのコードでも入力できます。
すなわち、コマンド行が "=u=>" で表示されていればUTF8、
そうでなければロケールコード入力状態です。
ロケールコード入力状態で U8を指定すればUTF8コードで探します。
UTF8ファイルが無変換で開かれている時などに使用します。
例. F xx U8
ここで xx は ロケールコード、例えばその値が 0xa0 とすると
0xa0 の UTF8 コード値 0xc2a0 を探します。
4 : FINd コマンドで探索文字列がUCS4 Hexコードであることの指定。
&(AND)サーチの場合はそれぞれのオペランドに指定すること
(例) f Micro U4 UL & Vender U4 UL
CHAnge コマンドで置換文字列がUCS4 Hexコードであることの指定。
例. C abc \x10fffd u4
U4を指定しない場合はUTF8ファイル上の置換はUCS2指定とみなします(2の倍数桁)
例. C abc \x30203021
#endif
all :ファイル全体を探索
allkx :KeepX。ファイル全体を探索。
見つかった行が非表示行でも表示行にしない。
next :カ−ソル位置より下を探索,これが省略値
+ :nextと同じ
prev :カ−ソル位置より上を探索
- :prevと同じ
first :ファイルの最初から探索,見つかった所にカーソルを移動
last :ファイルの最後から探索,見つかった所にカーソルを移動
.lab1/2 :行番号欄に設定したラベルを対で指定して探索行範囲を
限定する.行番号を使用しての範囲指定も可.
l-column:探索範囲の左端桁位置.
r-column:探索範囲の右端桁位置.
LM :探索範囲を左マージンに限定
RM :探索範囲を右マージンに限定
eol :行末のみ探す。
探索文字がスペースを含むときに使用する。
("a b"\n はエラーとなる)
maxeol :最長行(複数行ありうる)の行末のみ探す。
-a[-] :探索文字列を含む行の後n行を表示化/非表示化する。
& 探索の時は 2 番目の文字列を含む行を基準とする。
"-"は前のn行を意味する, このとき -b を指定し
&探索なら間の行数も加え合計が正でなければならない。
-b[-] :探索文字列を含む行の前n行を表示化/非表示化する。
& 探索の時は 1 番目の文字列を含む行を基準とする。
"-"は前のn行を意味する, このとき -a を指定し
&探索なら間の行数も加え合計が正でなければならない。
-c[{L|R}m][{T|B}n]
左(L)からあるいは右(R)からm桁目、上(T)からあるいは
下(B)からn行目に探索文字列が表示されるように
画面スクロールする。
-cのみは -cR の意味。
省略値は現在の表示画面にあるときはスクロルしない、
ない時は行が中央に来るようにスクロールする。
-d[<|>]n:& のとき2つの文字列の間隔を指定する。n は行数。
-dn:ちょうどn行目に第二文字列がある。
-d>n:n+1行以上離れている。
-d<n:n-1行以内にある。
-dの指定が無い時は -d0即ち同一行にあるとなる。
-j :-a/-b パラメータの範囲、或いは -d 指定の&(and)探索で
見つかった 2ワード間の行を連結する。
-je :& 探索で第1文字列があり第2文字列が見つからない時
第1文字列行から最終行までを連結する。
例えば "i StartID & StratID -d>1 -a-1 -j
だと最後に非連結行が残るが -j を -je にすれば全て
連結される。
-Llcmd :見つかった行の行番号欄に指定の文字列をセットする。
例えば "f StartLineID -Lcc;f EndLineID -Lcc;
rep partialfile" とすると StartLineID と EndLineID
の間をpartialfileに複写する。
カーソル移動が省略できるので EXE コマンドファイル内
での使用が考えられる。
-m[n] :反転表示を継続する。
前のFindコマンドの探索文字反転表示をリセットせずに
今回のコマンドの探索文字を追加反転表示する。
次の再探索(PF5)のときも反転表示が継続される。
"n"指定があると次のRFind(PF5)コマンドからそうする。
-nx :非表示行は対象外。(INX/FNXに同じ)
-同じ語の再探索/反転再探索は機能キー(F5/Shift+F5)を使用.
見つからずにファイルの最後/最初に達した後続いて同じ機能キーを
押せばファイルの最初/最後に戻って再探索します.
-オペランド値のみをコマンド行に入力し再探索/反転再探索の
機能キー(F5/Shift+F5)を押せば それぞれ 大文字/小文字区別無の
next/prev 探索となる.コマンド動詞(省略形のみ認める)から入力
して機能キーを押した場合は大文字/小文字区別はそのコマンド動詞
に従います
-タブとそのタブによるスペースは空白文字と一致すると見なされます
-探索文字列の指定のしかたについては,先の"語について"の記述を
参照