一括表示

− 野ざらし言 −

[2015] 指定した複数行を消す

でがらし 2007/06/05(Tue) 20:10
 >#2013 (注:スレッドを分割しました:めざら)

 これってこういうのに使えますか?

 次の文章があるとします。

=======================================
 本文
 ZZZZ
 本文本文本文
 本文本文本文
 XX
 本文本文本文
 本文本文本文
 XX
 YYY
=======================================

 ここで本文以外の行、すなわち、

=======================================
 XX
 YYY
 ZZZZ
=======================================

 をすべて消す。ちょっと的をはずしちゃったかな?

[2016] Re: 指定した複数行を消す

めざら 2007/06/05(Tue) 20:46
[2015]へのコメント http://homepage3.nifty.com/mezala/
 うーん、全然違うのですが、でがらしさんのもくろんでいるマクロで指定する条件というのは、きっちり正規表現でマッチさせられるものなのですか?
 削除したい行が正規表現でマッチするなら、そういうマクロを作るのは5分でできます。
 例の通りなら、^.+$ だけでOKなのでしょうかね。

[2018] 複数行を指定して一括削除

でがらし 2007/06/05(Tue) 21:10
[2016]へのコメント
 あらー、やっぱりとんでもないところで木刀を振り回したみたい
ですね。削除したい行は正規表現で当然マッチさせることができる
んですけど、どんなとき使いたいかというと次の通り。

 あちこちのサイトからDLすると、そのDLしたページごとに、
不要な行が複数出てくることがあります。そしてこれらの不要な行
の多くは反復的に出てきます。

 たとえばゴーグルのニュースのページを全部指定してDLすると、
「トップニュース」とか「話題のニュース」が出てきます。

 一方、 マイヤフーのページを全部指定してDLすると 「国内 -
Yahoo!ニュース」とか、「海外 - Yahoo!ニュース」が出てきます。

 これらのページをそれぞれ数日間、DLしてそれぞれに異なった
ファイルにためていくと、ファイルにこれらの行が複数たまります。

 そこでそれぞれのファイルで不要な行を、複数、指定し、やおら
削除のキーを押すと、あーら不思議、指定した不要行がすべてなく
なるというものです。

 今度の部品はひょっとして複数の不要行を指定するのに使えるの
かなと思っちゃったわけです。

[2019] Re: 複数行を指定して一括削除

めざら 2007/06/05(Tue) 23:14
[2018]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 どういったインターフェイスを考えてらっしゃるのか全然解らないのですが,
それは正規表現というよりも,改行を含む絶対的文字列を指定して空置換する
ことの繰り返しではいけないのでしょうか。

>  今度の部品はひょっとして複数の不要行を指定するのに使えるの
> かなと思っちゃったわけです。

 どの辺がそう見えたのでしょう。

 でがらしさん,もしかして GUI に近い…というより GUI そのものの…イン
ターフェイスを想像してらっしゃらないですか?

[2021] こういう感じの行(文字列)指定

でがらし 2007/06/06(Wed) 06:34
[2019]へのコメント
 おはようさんどす。

 いやー、おっしゃる通りで、こういうんだと正規表現でなくてい
いですね。

 ある単語が含まれる行はすべて一括して削除するという場合に正
規表現を使うと思いますけど、 syo さんの stool.def にそういう
機能があります。 ただ stool.def だと1つずつしか単語を指定す
ることができないので、複数の単語を指定して、それらが含まれる
行を一括削除できると便利だとは思いますが。

 「カーソル位置から次の空行まで取得して参照型メニュー表示」
というのを読んで、カーソル位置にある行を順にメニューに蓄積表
示していくのかと想像しちゃったんです。こんな感じで。

-------------------------------------------------------------------------------
1。削除行指定

 削除したい行の上で起動すると、それを下記のようなリストに追加する。

=======================================
1:話題のニュース
2:国内 -Yahoo!ニュース
3:海外 - Yahoo!ニュース
4:トップニュース
=======================================

2。指定行一括削除

 別の起動キーを押すと、上記のリストに表示された行すべて(フ
ァイル内にある複数行すべてということ)を一括削除する。
-------------------------------------------------------------------------------

 正規表現を利用する場合だと、上記の1。の部分が下記のようになります。

1+1。削除文字列指定

 削除したい行に含まれる文字列を順に下記のリストに追加する。
で、その文字列が含まれる行を一括削除するのは上と同じです。

=======================================
1:ニュース
2:国内
3:海外
4:旅行
=======================================

 GUI は嫌いなんですわ。窓用のエディターのファイラーってたま
りませんね。VZのファイラーがいいです。

[2022] Re: こういう感じの行(文字列)指定

めざら 2007/06/07(Thu) 21:34
[2021]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 外部ファイルに登録した文字列にマッチする行を削除するというのは,それ
だけなら,まぁ簡単な部類ですね。こういうのはインターフェイス部分が難し
くなるんです。

>  「カーソル位置から次の空行まで取得して参照型メニュー表示」
> というのを読んで、カーソル位置にある行を順にメニューに蓄積表
> 示していくのかと想像しちゃったんです。こんな感じで。

 メニューに「蓄積表示」というのが GUI っぽいですね。
 別ファイルに登録してあるなら,そのテキストをオープンすれば済むことだ
と思うのですが,メニュー表示の要求レベルでどのくらいなのでしょう。

> 1。削除行指定
>
>  削除したい行の上で起動すると、それを下記のようなリストに追加する。

 これは解ります。行頭の番号はまったく必要ないと思いますけど,何か意味
があるのでしょうか。選択的に実行するためのショートカットとして必要??

> 2。指定行一括削除
>
>  別の起動キーを押すと、上記のリストに表示された行すべて(フ
> ァイル内にある複数行すべてということ)を一括削除する。

 これも解ります。ただ,単独の起動キーを与えると,とても危険な感じがし
ます。何故なら,置換というのは必ず有るものが無くなるという結果をもたら
すから。よほどマッチしにくい条件なら…本当に特定のファイルの中身にしか
マッチしないという文字列なら…大丈夫でしょうけど。

> 1+1。削除文字列指定
>
>  削除したい行に含まれる文字列を順に下記のリストに追加する。
> で、その文字列が含まれる行を一括削除するのは上と同じです。

 これがよく解らないのです。1とどこが違うのでしょう。もしかして複数の
キーワードを含む行を削除するという意味でしょうか。(これは難しい。)

[2023] こういうつもり

でがらし 2007/06/08(Fri) 21:46
[2022]へのコメント
上村さんの JENGA.DEF や Emmett さんの STKMENU.DEF ではテキス
トスタックの全ブロックが一覧表示されますが、そのイメージだっ
たんです。

 行の冒頭の番号は不必要です。JENGA.DEF では数字がついている
ので、こういう数字がつくのが普通なのかな、と素人考えしちゃっ
ただけです。でも確かに選択して削除することができるなら、便利
なことがあるかもしれませんね(もともとの考えは複数行を一括し
て削除なんで、選択して削除というのは頭に浮かびませんでしたけ
ど)。

「削除したい行に含まれる文字列を順に下記のリストに追加する」
というのは、行全部を登録しなくても、行の中の特定の文字列だけ
を登録すれば、その文字列を含む行をすべて削除するというつもり
だったです。その行まで行って登録するのが面倒なことがあると思
ったもんですから。それと行が長いときとか。たとえば下記の行を
登録する代わりに「無料で」を登録して、下記の行を消すつもりで
いました。文字列は1つだけを考えており、複数のキーワードが含
まれる行を指定するつもりではありません。

プレミアム会員になって、無料でウイルス対策を始めよう

[2025] 仕様の確定を

めざら 2007/06/09(Sat) 19:08
[2023]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 スレッドを独立させるときに,間違って1行消してしまいました。(^^;
 後で読んだら意味が通じないので,あれれと思ったのですが,確かあんな文
面でしたよね。とにかく「無料で」が入っていればよいかと。


 一括か選択かどちらかにしないと,マクロはひどく複雑になります。マクロ
として簡単なのは圧倒的に一括です。シンプルならバグも入りにくいですし,
面倒なインターフェイスに悩む必要もありません。それなら冒頭の番号のよう
な余計なものも必要ありませんね。

> 「削除したい行に含まれる文字列を順に下記のリストに追加する」
> というのは、行全部を登録しなくても、行の中の特定の文字列だけ
> を登録すれば、その文字列を含む行をすべて削除するというつもり
> だったです。

 わたしが心配したのは,短い語句の指定だけでは,本来残すべき部分にその
語句が含まれるだけでごっそりと削除される可能性があることです。それでも
構わなければ,そういう仕様で作るのもアリでしょうね。

> その行まで行って登録するのが面倒なことがあると思
> ったもんですから。それと行が長いときとか。たとえば下記の行を

 登録方法はシンプルな方が簡単ですけどね。
 登録側マクロの起動時に,入力窓に書き込む方が面倒がないと思われるなら,
常にそうするのが簡単です。ブロックしていればそれを登録し,非ブロックな
ら入力窓を出すというのが親切ですけどね。

> 文字列は1つだけを考えており、複数のキーワードが含
> まれる行を指定するつもりではありません。

 AND 検索はやめておいた方が賢明な選択だと思います。

 ところでどんな仕様にすればよいのでしょうね。
 手続きを順に箇条書きにしてくだされば,その通り作りますが。

 おおまかには,こんな感じ?
マクロ1(語句登録)
・起動すると入力窓を出して対象語句の記入を促す
・窓に記入された語句を別ファイルに登録
(文字ブロックで起動されたら,ブロック部分を登録)
マクロ2(一括置換)
・起動するとオープンしているテキストを対象に登録語句を含む論理行を削除
マクロ0(処理選択)
・マクロ1,マクロ2,登録語句表示,の3項目メニュー表示

[2045] 一括置換はこんな感じ

めざら 2007/06/14(Thu) 07:25
[2025]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 一括置換のサンプルを書いてみました。
 あらかじめ元ファイルの拡張子と語句ファイルを合わせておく必要がありま
す。 例えばニュースなら hoge.nws が元ファイル,語句ファイルが news.rpl
という感じになります。

----------^ IKKATSU.DEF ( date:2007-06-14 time:05:39 ) -----< cut here
= ikkatsu = by H_ear
#if 0
外部ファイルの項目にマッチする行を一括削除
#endif
* mad for vz!
1 ^\ "" ?. &s
        (tc>wc)??{ &m(6) . }            ;'オープンできません'
        a=id,                           ;編集ファイルのテキストidを記録
        ; ---- Customize ----
        (ne=='NW')?{ f="NEWS.RPL", >f } ;neは拡張子の先頭2文字
        (ne=='BL')?{ f="BLOG.RPL", >f } ;f:削除語句ファイル
        (ne=='ET')?{ f="ETC.RPL", >f }  ;いくつでも指定可,複数拡張子指定可
        &Sc(pa,wa+146) &Sy(pa)          ;パス名を解析
        p=bx, (r&2)?cx.0-,              ;ファイル名抽出
        &Sx(p,"NEWS") (r)??{ f="NEWS.RPL", >f }
        &Sx(p,"BLOG") (r)??{ f="BLOG.RPL", >f }
        f="ETC.RPL",                    ;どれにも当てはまらない雑多なものとか
 :f     ; ---- open file ----
        mx[+, #R &?("%s%s",pi,f) #m (s)?{ 'n' f-, } mx],        ;pi指定推奨
        (f)??>z                         ;オープンできなければ終了
        b=id, RX[+, mp[, ps[=pa, mi[=mb-,
 :l     ; ---- main loop ----
        (ct<2)?>n
        #b #> #G
        &#T(-a)
        &m(20)                          ;'全部一度に置換します'
        #56 #e ".*" #< ".*" #m #m "ay"  ;一括削除置換
        &#T(-b)
 :n     #d (r==0 || ct)?>l
        mx[+, #C mx], &#T(-a)
 :z     ; ---- exit ----
        (f)??{ &m(41) }                 ;'準備ができていません'
        mi], ps], mp], RX],
        &d #] .
*
[Variables]
        a,b     text id
        f       filename/flag
        p       ptr
        bx,cx,si        &Sy() rtn
[Buffers]
        pa      as ps
[History]
2007/06/14 0.10 初版
[Notes]
・正規表現の行バッファが心配
・改行が残る
----------$ IKKATSU.DEF ( lines:47 ) -----------------------< cut here

 名前が安易だなぁ…(笑)

[2047] 一括置換成功

でがらし 2007/06/14(Thu) 21:02
[2045]へのコメント
 うまく作動しました。ありがとさんです。STK という拡張子のフ
ァイルがいくつかあったので、それで試しました。ほとんどのファ
イルの拡張子は TXT なんで、それをどうするか、迷います。

 削除したい行を登録して、その行が目的のファイルになければ、
その分は空振りになるだけだから、それで使っちゃってよさそうな
気もしますが。

 このマクロは便利なんで、いっそファイルを複数指定して、一括
で同じように、複数の指定行削除ができないかと思いついたんです
が、これは置換ソフトがあるんで、それでやればよさそうですね。
昔、昔の置換ソフトだとファイル形式が違うと問題があるのか気に
なりますが、これはいずれ、別だてで尋ねることにします。

[2048] Re: 一括置換成功

めざら 2007/06/14(Thu) 22:57
[2047]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
> ほとんどのファイルの拡張子は TXT なんで、それをどうするか、迷います。

 一応,拡張子が txt でもファイル名が指定できるように作ってあります。

&Sx(p,"NEWS") (r)??{ f="NEWS.RPL", >f }
 ここ↑でファイル名を指定してやってみてください。
 この例では,news.txt 用の語句ファイルが news.rpl ということになります。

[2049] どういう意味かな?

でがらし 2007/06/14(Thu) 23:22
[2048]へのコメント
 おー、それはありがたいですが、TXTの拡張子の場合でも、
NEWSのところにファイル名(例えばXX.TXT)を入れてやれば
いいってことですか?

 下記の2つの関係がわかりません。上のほうが下のほうへ
利いてくるんだと思ったけど、上はこのままにして、下のほう
だけファイル名を書けばいいのでしょうか?

(ne=='NW')?{ f="NEWS.RPL", >f } ;neは拡張子の先頭2文字

&Sx(p,"NEWS") (r)??{ f="NEWS.RPL", >f }

 拡張子がSTKのファイルで試したときは

(ne=='ST')?{ f="STK.RPL", >f }

 を上の行の下に追加しました。あれこれ、試せばいいんでし
ょうが、今日は眠くなったので、またにします。

[2051] 狭義のファイル名、拡張子

めざら 2007/06/15(Fri) 08:20
[2049]へのコメント http://homepage3.nifty.com/mezala/
>  おー、それはありがたいですが、TXTの拡張子の場合でも、
> NEWSのところにファイル名(例えばXX.TXT)を入れてやれば
> いいってことですか?

 「ファイル名」を求めているところに拡張子を付けないでください。ここで言っている「ファイル名」とは、狭義のファイル名です。

>  下記の2つの関係がわかりません。上のほうが下のほうへ
> 利いてくるんだと思ったけど、上はこのままにして、下のほう
> だけファイル名を書けばいいのでしょうか?

 上から順に拡張子、ファイル名と評価していき、条件に合うものがあった時点で主処理にジャンプしています。
 条件に合うものがなければ、etcという語句ファイル名を与えてやるという手順になっています。

 つまり、語句ファイル「news.rpl」に向かって削除語句を送りつける元ファイルは、xxx.nws, yyy.nws, zzz.nws, news.txt, news.jwx などなど、条件に合うファイルです。

>  拡張子がSTKのファイルで試したときは
>
> (ne=='ST')?{ f="STK.RPL", >f }
>
>  を上の行の下に追加しました。

 それで結構です。

[2052] この件、了解です。

でがらし 2007/06/15(Fri) 23:23
[2051]へのコメント
 この件、了解しました。私の性格を見越してもらったのか、
とってもていねいな作りで、感激です。重宝しそうです。あ
りがとうございました。

[2054] 性格と言うよりも

めざら 2007/06/16(Sat) 06:48
[2052]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 環境に思いを致すという感じはあります。
 これで色々なところに .rpl が作られなければいいけど…。(^_^;

 心配なのは,消そうとする行が非常に長い場合です。
 使えているということは VWX は正常に組込まれているようですが,
行バッファがどのくらいあるか分かりませんし,そもそも行バッファ
の上限を越えるような長さの行があった場合,最悪ハングアップです。

 もしもそのような事が起こるようになった場合は,置換ではなく,
(検索・削除)+ …ということになって,速度面に問題が出てくる
ことになるでしょうね。

 あと,空行が大量に残るようになります。これが気になる場合は,
(-1){ #56 "\n\n\n" #m "\n\n" #m "ay" (r)??{} }
…のような一文をマクロの最後に入れるとよいでしょう。

 これは2行以上連続した空行を1行にまとめるものです。
 3行以上を2行にまとめるには,\n をそれぞれひとつずつ増やして,
(-1){ #56 "\n\n\n\n" #m "\n\n\n" #m "ay" (r)??{} }
…のようにします。

[2055] 行バッファ・空行削除

でがらし 2007/06/16(Sat) 11:46
[2054]へのコメント
 行バッファは下記の通りです。かなり余裕があるんでないでしょうか。

Bl1024*4 ;行バッファサイズ (256..(Bt*1024/8))

 空行削除は自分で作っていました。さすがにこれくらいはできた
んですけど、マクロの後に付けるというのは自信がなかったんで、
これもありがたいです。

[2060] Re: 行バッファ・空行削除

めざら 2007/06/17(Sun) 07:25
[2055]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
 舌足らずでした。ここで言う行バッファとは,VWX の行バッファです。
 次のような VWX の引数に -l(-L) でどのくらい取っているか見てください。

vwx -z2 -x1 -v3 -l8192

 なお,空行削除は1回だけでは削除しきれない場合があるので,
繰り返し置換するのがポイントです。それができていれば問題ありません。

 普段はなかなか使う機会のないかもしれない #57(直前の置換の再実行)を
使うという別法もあります。

マクロFAQ:「置換を利用して編集テキストの空行を削除するには」
http://homepage3.nifty.com/mezala/vz/faq/search.html#search_006

[2061] VWXの行バッファ:印刷ソフト

でがらし 2007/06/17(Sun) 09:53
[2060]へのコメント
 VWXのほうは下記の設定です。これだけあれば、おそらく不都合
がなさそうです。

c:\tool\vwx -z2 -l4096 -x -v3

 高橋さんの改良版 VWX があるので、 そっちを使ってみようかな
とも思っています。

 マクロ FAQ は前と表示が変わりましたか? 見易くていいです
ね。ご紹介のページ、下記の部分、「を」がだぶってました。

テキストの余分な空行▼をを▲削除するためには

 この頃、またまたXTRを使ってみようかなと思っているので、
マクロ FAQ にあるコマンドラインの利用法の説明、 勉強になりま
した。印刷ソフトにPPMを使っていますが、ヘッダー、フッター
を使いたいですが、PPMでは出ません。そこでファイルをXTR
にかけてヘッダー、フッターを作った後、PPMで印刷することを
考えています。コマンドラインからいろいろなオプションを指定で
きるのって、いいですね。

 ところで皆さん、印刷はどうされてんでしょう? xyzzyを
使う方法とかありましたけど、私はこの頃、PPMがほとんどです。
窓用の、VZから使えるフリーの印刷ソフトで便利なもの、あるん
でしょうか? 何度か探していますが、あんまり見当たりません。
これは別建てにしたほうがいいかな?

[2062] Re: VWXの行バッファ

めざら 2007/06/18(Mon) 20:24
[2061]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
 行バッファが 4KB あれば,まぁ大丈夫でしょうね。

 高橋さんの vwxt は開発が中途で終わってますからねぇ。正規表現の拡張に
期待していたのですが,もう少し食い付きが必要だったかな。自分としては,
vwx の or 仕様に違和感があったので,それが修正されていれば十分だったの
かもしれないのですが。

>  マクロ FAQ は前と表示が変わりましたか? 見易くていいです
> ね。ご紹介のページ、下記の部分、「を」がだぶってました。

 ご指摘ありがとうございます。表示はずっと変っていなませんが,そのうち
アクセシビリティを向上させるためにリニューアルする予定でいます。

> これは別建てにしたほうがいいかな?

 スレッド表示式掲示板のメリットを生かすためにも,ぜひともそういう事で
お願いします。1発言は雑談の部分をのぞき1テーマにしてくださると,大変
助かります。

[2063] VWXTは開発途上とは

でがらし 2007/06/18(Mon) 21:12
[2062]へのコメント
 VWXTが開発途上とは知りませんでした。ニフティの
最後の頃の事情がよくわからないんですわ。ひょっと
すると、もうニフティから退会していたのかもしれま
せん。で、このサイトに置いてあるいろいろなマクロ
を見ると、いや、あれもこれもいいものがありますね。
と同時に、もう少し、議論が進んで、この先の機能が
ついていると、と思うものがあります。なんだったか、
覚えていませんけど。

 では印刷ソフトは別だてに。

[2026] 語句の登録はこんな感じ

めざら 2007/06/10(Sun) 07:13
[2023]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 語句の登録ってこんな感じですかね。
 何度も同じ入力は面倒なので,いくつかの登録語句を \n で区切っていれば
一度に登録できるようにしました。

----------^ KILLWORD.DEF ( date:2007-06-10 time:06:41 ) ----< cut here
= KILLWORD = by H_ear
#if 0
語句登録
#endif
* mad for vz!
1 ^\ "" ?.
        pa.0-, mx[+,
        (mb-2)?{
                pw[=pa, &g("登録語句",40) &Cr pw],
        }?{
                ps[=pa, mp[, #G mp], ps],
        }
        (pa.0)??>z                      ;取得されていなければ終了
        &s
        #R "nul" #m (s)?"y"             ;一旦作業ファイルを開く
        #n &?("%s",pa)                  ;行単位登録のため#n必須
        ps[=pa, #56 "\\n" #m "\n" #m "ay" ps],  ;\nで区切れば複数登録可
        mb-, pr[=pa, #A                 ;全アペンド
        &?("%s",pi)                     ;pi:defファイルの参照パス\つき
        "KILLWORD.RPL"                  ;※ファイル名と拡張子のみ
        #m (s)?"y" pr], #C              ;出力したら作業ファイルを閉じる
 :z     ; ---- exit ----
        mx],
        &d #] .
*
[Variables]     -
[Buffers]       pa      as pw/ps/pr
[History]       2007/06/10 0.10 初版
[Notes]         #Aを使ってみたかったわけ
----------$ KILLWORD.DEF ( lines:29 ) ----------------------< cut here

[2027] 要望

でがらし 2007/06/10(Sun) 11:29
[2026]へのコメント
 おはよさんどす。

 昨夜、レスつけてもらったの気付いていたんですが、くたびれて
たんで、今日になって考えようと思ってました。すばやい対応、あ
りがとうございます。さっそく KILLWORD.DEF を試してみました。
これは後で述べる単語帳用に使いみちがありそうですが、削除行登
録はもうちょっと手間が省けるとありがたいです。前に書いた話と
ダブりますが、使い方の例を挙げます。

 私はメーラーを使っていないので、ヤフーメールをウェブで開き、
CTRL+Aで全部指定してテキスト・ファイルにDLすることが
多いです。そうすると下記のような部分が常にファイルに入ります
(長くなるんで、かなりの部分を省略)。(なおメーラーの利用は
検討中。EDMAX にしようかな、それとも電八にしようかなとか)

=======================================
* 迷惑メール[空にする]
* ゴミ箱[空にする]

削除 返信 転送 迷惑メール報告 移動
印刷モード このメールにはフラグがついていません。[ フラグを付ける - 未読にする ]
 本文

削除 返信 転送 迷惑メール報告 移動
前 | 次 | 受信箱 メール本文を保存 | 詳細ヘッダー
=======================================

 おもしろいと思ったブログの記事をDLするときも、同じような
常套文字列がファイルに入ります。

 いずれの場合も本文以外の部分は余分なんで、これを一括削除し
たいわけですが、それぞれの行をブロックするのが面倒です。それ
ぞれの行の上で起動すると、削除したい行を自動登録すると便利で
す。ただ今の機能もほしいです(今の機能は単語帳で使いみちを考
えました。)。

 削除したい行はファイルごとに異なります(メール用のファイル
とブログなどを保存するファイルを分けている)。そこで行を登録
するファイル(削除行登録ファイル)を複数作るようにして、それ
をリストで表示してどの削除行登録ファイルを利用するか、選択で
きるほうがよさそうな気がします。

 複数の登録ファイルを作るというのは削除行登録と単語帳登録の
仕分けに利用できそうです。でもこれは killword.def の名前を変
えて、 それぞれごとに登録ファイルを変えればすみそうですね
(killword-1. def は killword. 001 に、 killword-2. def は
killword.002 に削除行を登録するということ)。 むしろそのほう
が面倒がないかな。

 ごちゃごちゃ書いたんで、めざらさんの手順書に希望を追加して
みます。

=======================================
マクロ1(語句登録)
・起動すると入力窓を出して対象語句の記入を促す
・シフト起動するとカーソル位置の論理行を取り込む。    ▼ここ追加▲
・窓に記入された語句とシフト起動で取り込んだ論理行を別ファイルに登録 ▼ここ修正▲
・別ファイルへの登録時に別ファイルのメニューが出て、追加するファイルを選択することを促す。   ▼ここ追加。でもdefを使い分けるなら不要。▲
(文字ブロックで起動されたら,ブロック部分を登録)
=======================================

 長くなったので、単語帳のほうは別だてにします。

[2031] 楽で確実な仕様を提案

めざら 2007/06/10(Sun) 23:22
[2027]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
>  昨夜、レスつけてもらったの気付いていたんですが、くたびれて
> たんで、今日になって考えようと思ってました。すばやい対応、あ
> りがとうございます。さっそく KILLWORD.DEF を試してみました。

 睡眠は大事ですから,じっくりのんびりやりましょう。わたしも先週は休み
が1日しかなかったため週の頭から疲れていて,コメントは2日遅れくらいだ
ったでしょ。

> (なおメーラーの利用は
> 検討中。EDMAX にしようかな、それとも電八にしようかなとか)

 電八はメールが1通1通テキストファイルになっているのでデータの扱いは
やりやすいのですが,インターフェイスが如何にも古いかなと思います。
 EdMax は新しい認証システムの仕様に対応していないため, 例えば  Gmail
で POP/SMTP を利用することができません。Yahoo mail は可能です。
 Thunderbird はかなり良いみたいですね。最近は相談されると Thunderbird
を勧めています。それなりにバグもあるようですが,フィルターが優秀で手間
がかからないようですね。

> それぞれの行をブロックするのが面倒です。それぞれの行の上で起動すると、
> 削除したい行を自動登録すると便利です。ただ今の機能もほしいです。

 これは簡単ですよ。単純に自動ブロックするだけですから。ただ,行全体だ
と長くなりますので一部でよいようにも思います。「今の機能」というのは,
どの部分なのでしょう。多重登録かしら。

>  削除したい行はファイルごとに異なります(メール用のファイル
> とブログなどを保存するファイルを分けている)。そこで行を登録
> するファイル(削除行登録ファイル)を複数作るようにして、それ
> をリストで表示してどの削除行登録ファイルを利用するか、選択で
> きるほうがよさそうな気がします。

 ファイルごとに分類してあって中身が異なるのであれば,ファイル名や拡張
子で自動判別するのがよいと思います。作製方面から見れば,拡張子が異なる
方が楽ですね。ファイル名の場合は特にディレクトリ名と切り分けて取り出す
必要があるので,いくつか余計にステップを踏むことになります。

>  複数の登録ファイルを作るというのは削除行登録と単語帳登録の
> 仕分けに利用できそうです。でもこれは killword.def の名前を変
> えて、    それぞれごとに登録ファイルを変えればすみそうですね

 いやー,それはどうなんでしょう。作製方面から見ると簡単ですが,美しく
ないと思います。ここはよい仕様を練るための思案のしどころだと思います。

 わたしが美しいと思う仕様は,現テキストの拡張子かファイル名で自動的に
語句ファイルに振り分け,削除置換する場合も同様に自動的に語句ファイルを
選択するというものです。これは単に拡張子かファイル名を固定すればよいこ
とですから,最も手間がかからず,コードも簡素になり,マクロも単一で済み
ます。

> ・シフト起動するとカーソル位置の論理行を取り込む。    ▼ここ追加▲

        pa.0-, mx[+,
        (ks&1)?{ mb-, #< #b #> (lh)?{ #< &x(78) } >g }  ;この行追加
        (mb-2)?{
                pw[=pa, &g("登録語句",40) &Cr pw],
        }?{
        :g      ps[=pa, mp[, #G mp], ps],               ;ラベル :g 追加
        }
        (pa.0)??>z                      ;取得されていなければ終了

 シフト起動で論理行登録は,こんな感じに修正すればできます。

[2035] 成功:でもシフト起動を通常起動に

でがらし 2007/06/11(Mon) 21:27
[2031]へのコメント
 さっそく試してみました。グーですが、まずは順番に。

(1)Thunderbird、いいかもしれませんね。私も Firefox を使っ
ているんで、それならこれがいいかなと思っていたところでした。
そのうち試してみます。

(2)拡張子の使い分けはほとんどしていませんが、TXT と一太郎
Ver.3 を使っていたときの名ごりの JXW がありますね (後は
Emmett さんのメモファイルの 000,001 とか)。 一太郎 Ver.3 に
は長い間、世話になりました。5インチFDで起動していて、入力
変換するのにFDを読みにいってましたね。あな、なつかしや。

 拡張子の使い分けなら簡単なんで、私でもできます。

(3)美しい仕様には魅力を感じますが、私のように不器用だとあ
んまり美しいとなんとなく気が引けちゃって。

 ただ拡張子で使い分けるとして、異なった拡張子のファイルが同
一フォルダの中になきゃまずいんですよね? 異なった拡張子のフ
ァイルがそれぞれ異なったフォルダにあるっていうのじゃ同じこと
ですもんね(stk の拡張子のファイルが c:\stk の中だけにあり、
txt が拡張子のファイルが c:\txt の中だけにあるということ)。

(4)シフト起動、うまくいきました。ありがとうございます。で、
やっぱり考えてみると、私の場合はこのシフト起動を普通の起動に
し、逆に今の通常起動をシフト起動にしてもらうと便利なんですけ
ど、この入れ替えは簡単にできますか?

[2039] シフト起動を通常起動に逆転するには

めざら 2007/06/12(Tue) 08:51
[2035]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
> (3)美しい仕様には魅力を感じますが、私のように不器用だとあ
> んまり美しいとなんとなく気が引けちゃって。

 美しいったって,コードの見通しがいいってだけのことですから,使う人は
何も考えずに定められたルールに則って実行すればいいだけですよ。(笑)

>  ただ拡張子で使い分けるとして、異なった拡張子のファイルが同
> 一フォルダの中になきゃまずいんですよね? 異なった拡張子のフ
> ァイルがそれぞれ異なったフォルダにあるっていうのじゃ同じこと
> ですもんね(stk の拡張子のファイルが c:\stk の中だけにあり、
> txt が拡張子のファイルが c:\txt の中だけにあるということ)。

 ??
 フォルダは関係ないですよ。どこのフォルダにあっても特定の拡張子であれ
ば特定の削除対象語句ファイルに追加されるだけです。削除対象語句ファイル
を pi で指示される特定のフォルダの拡張子別ファイルに作るのは,カレント
ディレクトリがどこでも分散しないようにするためです。
 でがらしさんの環境は,ディレクトリを絶対指定しないと,色々なところに
同一目的のファイルが散乱するようですので。

> (4)シフト起動、うまくいきました。ありがとうございます。で、
> やっぱり考えてみると、私の場合はこのシフト起動を普通の起動に
> し、逆に今の通常起動をシフト起動にしてもらうと便利なんですけ
> ど、この入れ替えは簡単にできますか?

 (ks&1)? を (ks&1)?? にするだけです。
        (ks&1)?{ mb-, #< #b #> (lh)?{ #< &x(78) } >g }  ;この行追加
       ↓
        (ks&1)??{ mb-, #< #b #> (lh)?{ #< &x(78) } >g } ;この行追加

 VZ の条件分岐はちょっと特殊で,if 条件を評価して分岐した直後に評価し
た値を逆転させるという特性があります。それで条件式を成立させています。

 (条件)?{ 条件が真のとき実行 }?{ 条件が偽のとき実行 }

 (条件)??{ 条件が偽のとき実行 }
    ↑
 { 条件が真のとき実行 } がすっぽり抜けていますので, 条件が真なら何も
しません。これは最重要ですので,きちんと覚えておきましょう。

[2041] ??の意味、理解しました

でがらし 2007/06/12(Tue) 22:55
[2039]へのコメント
>  (条件)?{ 条件が真のとき実行 }?{ 条件が偽のとき実行 }
>
>  (条件)??{ 条件が偽のとき実行 }
>     ↑
>  { 条件が真のとき実行 } がすっぽり抜けていますので, 条件が真なら何も
> しません。これは最重要ですので,きちんと覚えておきましょう。

 ここのところ、しばらく頭をひねりましたが、ようやく理解しました。こ
れは覚えておくと便利そうですね。ありがたいです。でもこういうのを自分
一人で探し当てるのって、大変そう。黒本にも??なんてなさそうです。

 コードがどうなってるかは気にならないんですけど、私、はにかみ屋で、
美人に弱いもんですから、美しいときくとぎくっとしました。

 拡張子の件、なんとなくわかったような、わからないような。これはもっと
具体例が出てきたときに考えます。

[2038] 今の機能はこの機能

でがらし 2007/06/12(Tue) 06:28
[2031]へのコメント
1つ、レスを忘れてました。今の機能というのは、下記の部分です。

・起動すると入力窓を出して対象語句の記入を促す
・窓に記入された語句を別ファイルに登録
(文字ブロックで起動されたら,ブロック部分を登録)

 このままでとっても便利です。

[2028] 単語帳の登録

でがらし 2007/06/10(Sun) 13:54
[2026]へのコメント
 単語帳のほうはこんな感じです(こっちもさっきアップしたつも
りだたけど、し損ねていたんでしょうか? ダブりになりませんよ
うに)。

C:\A\TANGO.TXT

 に下記のような単語リストを作っています。1単語1論理行です。
将来、それぞれの行の上で起動すると、その訳を画面表示する(あ
るいは別のファイルに訳を記入する)マクロを作りたい(作ってほ
しい)と思っています(ここで K.TAM さんの進展が気になります)。

=======================================
rung
commonweal
crack
dork
=======================================

 単語登録は今はこのファイルを開けて逐一手入力しています。手
入力の部分はともかくとして、このファイルを開けるのが面倒なん
で、KILLWORD.DEF を利用して単語登録したいです。仕様は

=======================================
(1)起動すると文字列入力画面が出現する(単語がブロックされていると、それを追加するというのもあるとよさそうです)
(2)そこへ単語を入力すると、それを単語帳ファイルへ1論理行として追加する(冒頭でも末尾でもかまわない)。
=======================================

 この2つが基本です。実は KILLWORD.DEF の登録先ファイル名を
C:\A\TANGO.DEF に変えて試してみましたが、C:\NUL とかいう新し
いファイルへ単語が記録されて、 C:\A\TANGO.DEF への追加は失敗
しました。

 今はウェブで知らない単語を見つけることが多いので、それを自
動で登録できると便利なんですけど、これはちょっとむずかしそう
ですね(窓のソフトでなら、こういうことできるのってあるんです
かね)。

[2032] Re: 単語帳の登録

めざら 2007/06/10(Sun) 23:51
[2028]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
>  単語登録は今はこのファイルを開けて逐一手入力しています。

 VZ を使いながら,なんでそんなことに労力を使っているのか理解不能。
 ぜひともマクロで不精者になって楽をしまくりましょう。

> (1)起動すると文字列入力画面が出現する
> (単語がブロックされていると、それを追加するというのもあるとよさそうです)

 これ,そのまんまですね。

> (2)そこへ単語を入力すると、それを単語帳ファイルへ1論理行として追加する
> (冒頭でも末尾でもかまわない)。

 これも,そのまんまですね。

>  この2つが基本です。実は KILLWORD.DEF の登録先ファイル名を
> C:\A\TANGO.DEF に変えて試してみましたが、C:\NUL とかいう新し
> いファイルへ単語が記録されて、 C:\A\TANGO.DEF への追加は失敗
> しました。

 あー,やっちゃいましたか。(きっとやると思ってました。(^^;)
 見てのとおり,フルパスで指定しちゃダメです。

        &?("%s",pi)                     ;pi:defファイルの参照パス\つき
        "KILLWORD.RPL"                  ;※ファイル名と拡張子のみ

 pi は def ファイルを探すディレクトリで,末尾に \ も付きます。 例えば
これが続けて出力されると,c:\vz\KILLWORD.RPL になるのです。明示的に
「※ファイル名と拡張子のみ」と書いておいたんですけどね。ファイル名部分
をフルパスで記述すると,c:\vz\C:\A\TANGO.DEF のようになってしまいます。
失敗してあたりまえということです。c:\nul は作業ファイルで,実行途中で
停止したため残ってしまったのでしょう。

>  今はウェブで知らない単語を見つけることが多いので、それを自
> 動で登録できると便利なんですけど、これはちょっとむずかしそう
> ですね(窓のソフトでなら、こういうことできるのってあるんです
> かね)。

 コンテキストメニューに入れることができれば可能でしょうけど,そういう
需要もないでしょうから,やっぱり VZ でやるのが楽でしょうね。特にマウス
などで選択したものは改行が付かないので,1行1単語のファイルを作るなら
必ずひとつ改行を挿入しなければなりません。選択コピーしてから実行。

----------^ CLBD2TNG.DEF ( date:2007-06-10 time:20:53 ) ----< cut here
= clbd2tng = by H_ear
#if 0
クリップボードの単語追加
#endif
* mad for vz!
1 ^\ "" ?. &s
        #E &?("Clppst.exe /W tango.tmp") #m #[
        mx[+,
        #O "tango.tmp" #m
        #> Je[=mi[-, #m Je], mi],       ;必ず改行が必要
        mb-, #A "tango.txt" #m (s)?'y'
        mr-, #C
        mx],
 :z     ; ---- exit ----
        &d #] .
*

[Variables]     -
[Buffers]       -
[History]       2007/06/10 0.10 初版
[Notes]         カレントとか path に注意,Clppst が必要
----------$ CLBD2TNG.DEF ( lines:21 ) ----------------------< cut here

[2036] とっても感激:拍手2回

でがらし 2007/06/11(Mon) 21:37
[2032]へのコメント
 こっちも成功、ベリーグーですが、また順番に。

(1)マクロで簡単にできそうだとは思っても、あな、悲しや、そ
こがなかなか敷居が高くて、ずっと単語帳を手で開いて入力してい
ました。ワープロが出はじめたとき、使いなれていないので、ワー
プロで作業するより結局、昔通りの手作業のほうが速いという話が
あったのと同じです。累積時間を考えると、マクロがずっと速いん
ですけどね。

(2)フルパスの失敗、最初は確かにフルパスでやったんですが、
次はちゃんとメモを見て、 ファイル名だけで試しました。ただ vz
のフォルダの中に tango. txt というファイルがないのでうまくい
かんかったんでしょう。

 pi を使って def のあるフォルダを指定することに意味があるん
でしょうか? フォルダをパスで指定できると融通がききそうです
が。

(3)クリップボードの単語追加、これ感激。とっても感謝です。
とらじさんにも感謝です。画面の前で、ちゃんと柏手を打って頭を
下げました。今まではステップが多かったんで、おっくうだったん
ですよね。とってもうれしい。こっちはフルパスで指定していいみ
たいですね。

[2043] Re: とっても感激:拍手2回

めざら 2007/06/12(Tue) 23:58
[2036]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
> 累積時間を考えると、マクロがずっと速いんですけどね。

 面倒かどうかというのも,人によって差がありますからね。

> ただ vz
> のフォルダの中に tango. txt というファイルがないのでうまくい
> かんかったんでしょう。

 それも,ない,ですね。新規ファイルでもオープンできるようになってます
から。フルパスはよいと思います。環境が固定していれば,ですが。

 pi の話に関係しますが…

>  pi を使って def のあるフォルダを指定することに意味があるん
> でしょうか? フォルダをパスで指定できると融通がききそうです
> が。

 絶対パスで指定するのはとても良いことです。しかし,人それぞれで環境が
違うのでマクロの動作を共有することは困難です。 しかし,VZ を使う以上,
必ず pi の指すディレクトリは存在しますので,マクロの動作を共有すること
ができるようになります。仕様を練りながら作り込んでいくという時点では,
動作を共有することは絶対に必要です。そういう訳です。

> とらじさんにも感謝です。画面の前で、ちゃんと柏手を打って頭を
> 下げました。

 そうそう。寅次さんにたくさん感謝しましょう。 clppst は VZer だけでな
く,窓使用者にとってとても意義の有るアプリケーションです。うちの職場で
もみんなに(知らず知らずのうちに)使ってもらってますよ。

> とってもうれしい。こっちはフルパスで指定していいみたいですね。

 絶対パスで指定しなければ,カレントに作成されます。登録先を単一の辞書
ファイルにしたければ,環境に応じたフルパスで指定してください。ここでも
pi を使うことを推奨します。

↑ このページの先頭