w3m

ブラウザー w3m を統合環境に使う

  1. はじめに

    w3mLynxと比べても動作が軽く、Lynxで表現できないTABLEを表示する機能があります。また標準入力からのHTML文書をレンダリングして表示することができます。

    この w3m を使っても快適な統合型HTML文書情報システムを作ることができます。ここで、統合と言う意味は、HTML文書の作成、編集、閲覧、ファイル管理、検索が一連の作業として、円滑に行うことができることです。

    w3mはVine Plusにも収録さ れています。

  2. 準備作業

    最初にw3mでエディターを起動できるようにカスタマイズする必要があります。

    $ w3m .

    とコマンドラインから入力して w3m を起動します。'o'(小文字の o )キーを押すとオプションメニューが現れます。「外部プログラム」のセクションの、「利用するエディター」を /usr/bin/emacs に変更します。Tab キーでカーソルを移動させ、[OK]を選択して Enter キーを押すと w3m の画面に戻ります。'q' 'y' と押して、w3mを終了させます。

    w3m の操作方法を調べるためには、w3mのヘルプファイルを使います。w3m . でw3mを起動した後、H(大文字)を押すと、ヘルプファイルが表示されます。

    次にツール、文書、検索用インデックスを入れるディレクトリーを作ります

    $ mkdir ~/bin
    $ mkdir ~/myhtml
    $ mkdir ~/index

  3. ツールを作る

    統合環境を整えるためのツールを作ります。第1はHTML文書のテンプレートを作成するスクリプト。第2はディレクトリー内の文書の検索をするスクリプト。第3は namazu を利用した検索のためのスクリプトです。

    1. HTML文書テンプレート作成スクリプト tmplt.pl

      #!/usr/bin/perl
      $title=$ARGV[0];
      if ( $title eq '' ) {
          print "Usage: tmplt.pl <titlename>\n";
          exit;
      }
      open( FILE, "> $title.html" );
      print FILE << "EOF";
      <html>
      <head><title>$title</title></head>
      <body>
      $title
      </body>
      </html>
      EOF
      close( FILE );
      
    2. ディレクトリー内文書検索スクリプト wgrep
      #!/bin/sh
      exec grep $@ | lf.pl | w3m -T text/html

      grep->html変換スクリプト: lf.pl

      #!/usr/bin/perl
      while (<>) {
      /^(.*?):(.*)/;
      print "<A HREF=\"$1\">$1</A><BR>\n$2<BR><BR>\n";
      }

    3. namazu 用検索スクリプト srnmz
      #!/bin/sh
      namazu -h $@ ~/index/ | w3m -T text/html

    これらのコマンドは ~/bin に入れておきます。~/bin は環境変数 PATH に登録してコマンドサーチパスに登録します。

    $ PATH=$PATH:~/bin

  4. 各アプリケーションの切替え

    HTML文書を管理するいろいろな作業のためにはアプリケーションを円滑に切替えて使う必要があります。どういう作業にどういうアプリケーションを使うかは、下記のようになります。

    1. HTML文書のテンプレートの作成:shell( tmplt.pl スクリプト )
    2. HTML文書の閲覧(ブラウズ):w3m
    3. HTML文書の編集:emacs
    4. HTML文書の検索:shell( wgrep スクリプト)、shell( namazu、srnmz スクリプト )
    5. ファイル管理:shell

    したがって、w3mから emacsshell への切替えが必要です。w3m から shell へ切替えるには、Ctrl-z を押します。shellから再びw3mへ戻るには、コマンドラインで fg と入力します。w3mから Emacs へ移るには'E'(大文字の E )キーを押します。Emacsを終了すると w3m へ戻ります。

  5. HTML文書作成の流れ

    HTML文書作成の流れは、次のようになります。まずHTML文書を作成したいディレクトリーに移動します。

    $ cd ~/myhtml

    HTML文書のテンプレートを index.html の名前で作成します。

    $ tmplt.pl index

    w3m を index.htmlを引数にして起動します。

    $ w3m index.html

    画面にはタイトル名の index しか表示されていません。'E'(大文字のE)を押すと Emacs が起動します。HTML文書の<body>の内容を次のように変更します。

    <body>
    <h1>目次</h1>
    <p><a href="page1.1">文書1</a>
    </body>

    Ctrl-x Ctrl-c y で Emacs を終了すると画面が変わっています。ここで Ctrl-z を押して w3m を止めてバックグラウンドに移し、shell に戻ります。tmplt.pl を使って、page1.htmlを作ります。それから fg とタイプして w3m に戻ります。

    $ tmplt.pl page1
    $ fg

    Tab キーを押して、カーソルをリンクに移します。Enter キーを押すとpage1に移動します。'E'(大文字のE)を押してEmacsを起動し<body>の部分を次のように変更します。

    <body>
    <p>w3m を利用した文書編集</p>
    <body>

    Ctrl-x Ctrl-c y で Emacs を終了します。's'キーを押すとバッファーリストが表示されるので'j'キーまたは'h'キーでカーソルを移動させ、index.html を選択しリターンキーを押すと目次のページへ戻ります。

    ここで、q y で w3m を一旦終了します。次に 検索スクリプト wgrep で「編集」と言う言葉を検索します。wgrep は検索結果を HTML 形式で出力し、w3m で表示する、grep の拡張になっています。wgrep のコマンドラインの引数はそのまま grep に渡されますから、操作法は grep そのままです。

    $ wgrep 編集 *

    編集と言う語句を含む文書のリストが表示されます。リンクをたどると元の文書を表示することができます。

  6. namazu でHTML文書をデータベース化する。

    namazu で全文検索データベースを作ります。まずインデックスを作るディレクトリーに移動します。

    $ cd ~/index

    mknmz でHTML文書を納めたディレクトリー ~/myhtml を指定してデータベースを作ります。

    $ mknmz ~/myhtml

    この操作は次の1行を .bashrc に追加しておくと、コンソールから updatenmz と入力するだけで実行できます。

    alias updatenmz='mknmz -O ~/index ~/myhtml'

    データベースの更新ができたら、検索用スクリプト srnmzで検索します

    $ srnmz 文書編集

    上記の方法では検索結果は1番から20番までしか表示しません。キーワードと一緒に -a コマンドラインオプションを渡してやると検索結果を全部表示します。

    $ srnmz -a 文書編集

    検索結果の11番から20件(30番まで)表示したいときは、-w 10 -n 20 を渡します。

    $ srnmz -w 10 -n 20 文書編集