# w3m マニュアル

伊藤 彰則
aito@fw.ipsj.or.jp

## もくじ

- はじめに
- 起動オプション
- 文書の表示内容
- 起動後の使いかた(オリジナル)
- 起動後の使いかた(Lynx風)
- マウス操作
- キーの定義
- Local CGI

## はじめに

w3m は，テキストベースのページャ/WWWブラウザです．これを使うと，kterm などのキャラクタ 端末上で，ローカルファイルを見たり，WWWの内容を見たりすることができます．

## 起動オプション

起動時の引数は次の通りです．

        w3m [options] [file|URL]

引数にファイル名を指定すればそのファイルを表示し，URLを指定すればその内容を表示します． 何も指定しなければ，標準入力の内容を表示します．ただし，標準入力が tty である場合には， 何もせずに終了します．

オプションは次の通りです．

+番号
  起動後，指定の行番号に移動する．
-t 幅
  タブの幅を指定する．デフォルトは 8 ．
-r
  text/plain の文書を表示する場合，重ね打ちによる強調文字を表示しない． このオプションを付けない場合，``A^H_''はAのアンダーラインとして表示され， ``A^HA''はAのボールドとして表示される．
-l 行数
  標準入力の内容を表示するときに保存される最大行数を指定す る．デフォルトは 10000．
-s
  Shift_JIS コードで表示する．
-e
  EUC コードで表示する．
-j
  JIS(ISO-2022-JP) コードで表示する．
-O e|s|j|N|m|n
  表示に用いる文字コードを指定する．
-I e|s
  入力文書の文字コードを指定する．
-T タイプ
  表示する文書のタイプを指定する．この指定がない場合，ファイル 名の拡張子によって自動判別される．判別できない場合は text/plain とみなされる．

  例：
  標準入力から HTML ファイルを読んで表示する

         cat hoge.html | w3m -T text/html

  HTMLファイルのソースを表示する

         w3m -T text/plain hoge.html

-m
  Internet message モードで表示する．Internet messageモードの場合， ヘッダの内容を見て，Content-Type: があればそれを参考にする．電子メールや ネットニュースの記事を読むときに便利．
-v
  スタートアップページを表示する．
-B
  Bookmark を表示する．
-bookmark file
  Bookmarkのファイルを指定する．
-M
  カラー表示をしない．
-F
  フレームを自動表示する．
-S
  連続する空行を1行にまとめて表示する．
-X
  w3m終了時に，以前の画面に戻らない．
-W
  折り返しサーチを使うかどうかを切りかえる．
-o option=value
  オプションを指定する． オプションの名前や値は，~/.w3m/config で指定するものと同じ．
-no-proxy
  プロキシを利用しない．
-no-mouse
  マウスを利用しない．
-cookie
  クッキーを処理する．
-no-cookie
  クッキーを処理しない．
-num
  行番号を表示する．
-dump
  URLの内容を読みこみ，整形されたバッファの内容を標準出力に書き出す． 文書の幅は80桁と仮定される．この幅は，次の -cols オプションで変更可能．
-cols 幅
  -dump オプションを使う場合に，文書の幅を指定する．
-ppc ピクセル数
  文字の幅を指定する．デフォルトはウインドウの大きさから自動的に計算する．
-ppl ピクセル数
  文字の縦幅を指定する．デフォルトはウインドウの大きさから自動的に計算する．
-dump_source
  URLの内容を読みこみ，整形せずに標準出力に書き出す． 漢字コード変換もされない．
-dump_head
  URLにアクセスし，ヘッダ情報を出力する．
-dump_both
  URLにアクセスし，ヘッダ情報とHTMLソースを出力する．
-dump_extra
  URLにアクセスし，拡張情報とヘッダ情報とHTMLソースを出力する．
-post file
  ファイルの内容をPOSTする．
-header string
  HTTP要求ヘッダを追加する．
-config file
  configのファイルを指定する．

## 文書の表示内容

HTML文書を表示しているときには，次のような表示になります．

| カラー表示時 | 白黒表示時
--- | --- | ---
リンク | 青色 | 下線
インライン画像 | 緑色 | 反転表示
FORMの入力部分 | 赤色 | 反転表示

カラー表示時の色は，オプション設定パネル "o" で変更することができます．

## 起動後の使いかた(オリジナル)

起動した後は，1文字のコマンドをキーボードから入力することでw3mを操作します． コマンドには次のようなものがあります．以下の記述では，C-x はコントロールx を表します．また，SPC はスペースバー，RET はリターンキー，ESC はエスケープキーです．

ここで書いてあるのは，オリジナル版のキー操作です．Lynx風のキー操作用に コンパイルしてあるものについては，起動後の使い方(Lynx風) をごらんください．

### ページ/カーソル移動

SPC,C-v | 次のページを表示します．
b,ESC v | 前のページを表示します．
l,C-f,右矢印キー | カーソルを右に移動します．
h,C-b,左矢印キー | カーソルを左に移動します．
j,C-n,下矢印キー | カーソルを下に移動します．
k,C-p,上矢印キー | カーソルを上に移動します．
J | 画面を1行上にスクロールします．
K | 画面を1行下にスクロールします．
^,C-a | 行頭に移動します．
$,C-e | 行末に移動します．
w | 次の単語に移動します．
W | 前の単語に移動します．
> | 画面全体を右にずらします．(表示内容を左にずらす)
< | 画面全体を左にずらします．(表示内容を右にずらす)
. | 画面全体を1文字右にずらします．(表示内容を左にずらす)
, | 画面全体を1文字左にずらします．(表示内容を右にずらす)
g,M-< | 文書のいちばん上の行に移動します．
G,M-> | 文書のいちばん下の行に移動します．
ESC g | 画面下で行番号を入力し，そこで指定した行に移動します． ここで $ を入力すると，最終行に移動します．
Z | カーソルのある位置を行の中央に移動します．
z | カーソルのある行を画面の中央に移動します．
TAB | 次のリンクに移動します．
C-u, ESC TAB | 前のリンクに移動します．
[ | 最初のリンクに移動します．
] | 最後のリンクに移動します．

### ハイパーリンク操作

RET | 現在カーソルがあるリンクが指す先の文書を読みこみます．
a, ESC RET | 現在カーソルがあるリンクが指す先の文書をファイルに保存します．
u | 現在カーソルがあるリンクが指す先のURLを表示します．
i | リンクに関連付けられた画像へのURLの表示します．
I | 現在カーソルがあるリンクに対応する画像を表示します．
ESC I | 現在カーソルがあるリンクが指す 画像をファイルに保存します．
: | URL風の文字列をリンクにします．この機能は，HTMLでない文書を 読んでいるときにも有効です．
ESC : | Message-ID風の文字列を，news: のリンクにします．この機能は，HTMLでない文書を 読んでいるときにも有効です．
c | 現在の文書のURLを表示します．
= | 現在の文書に関する情報を表示します．
C-g | ページ中での現在位置を表示します．
C-h | URL履歴を表示します．
F | <FRAMESET>を含む文書を表示しているときに，<FRAME> タグの指す複数の文書を1つの文書に変換して表示します．
M | 現在見ているページを，外部ブラウザを使って表示します． 2M, 3M で2番目と3番目のブラウザを使います．
ESC M | 現在のリンク先を，外部ブラウザを使って表示します． 2ESC M, 3ESC M で2番目と3番目のブラウザを使います．

### ファイルとURL関係の操作

U | URLを指定して開きます．
V | ローカルファイルを指定して開きます．
@ | コマンドを実行し，結果を全部読んでから表示します．
# | コマンドを実行し，結果を読みこみながら表示します．

### バッファ操作

B | 現在見ているバッファを削除し，一つ前のバッファを表示します．
v | HTMLのソースを表示します．
s | バッファ選択モードに入ります．
E | 現在見ているバッファがローカルファイルの場合，そのファイルをエディタ で編集します．エディタを終了した後，そのファイルを再度読み込みます．
C-l | 画面を再描画します．
R | バッファを再度読み込みます．
S | バッファの表示内容をファイルに保存します．
ESC s | HTMLのソースをファイルに保存します．v でソースを表示して S で 保存するのとほぼ同じですが，ESC s で保存したファイルは漢字コードがオリジナルの ままであるのに対して，v S で保存すると現在表示に使っている漢字コードに変換され て保存されます．
ESC e | 現在表示されているバッファを，表示されている形式のまま エディタで編集します．

### バッファ選択モード

"s" でバッファ選択モードに入ったときのキー操作です．

k,C-p | 一つ上のバッファを選択します．
j,C-n | 一つ下のバッファを選択します．
D | 現在選択しているバッファを削除します．
RET | 現在選択しているバッファを表示します．

### ブックマーク操作

ESC b | ブックマークを読み込みます．
ESC a | 現在見ているページをブックマークに追加します．

### 検索

/,C-s | 現在のカーソル位置からファイル末尾に向かって正規表現を検索します．
?,C-r | 現在のカーソル位置からファイルの先頭に向かって正規表現を検索します．
n | 次を検索します．
N | 前を検索します．
C-w | 折り返し検索モードを切り換えます．

### マーク操作

C-SPC | マークを設定／解除します．マークは反転表示されます．
ESC p | 一つ前のマークに移動します．
ESC n | 一つ後のマークに移動します．
" | 正規表現で指定された文字列を全てマークします．

### その他

! | シェルコマンドを実行します．
H | ヘルプファイルを表示します．
o | オプション設定パネルを表示します．
C-k | クッキー一覧を表示します．
C-c | 文書の読み込みを中断します．
C-z | サスペンド
q | w3mを終了します．オプションの設定によって，終了するかどうか確認します．
Q | 確認せずにw3mを終了します．

### 行編集

画面の最下行で文字列を入力する場合に有効なキー操作です．

C-f | カーソルを右に移動します．
C-b | カーソルを左に移動します．
C-h | カーソルの直前の文字を削除します．
C-d | カーソル位置の文字を削除します．
C-k | カーソル位置から後を削除します．
C-u | カーソル位置から前を削除します．
C-a | 文字列の先頭に移動します．
C-e | 文字列の最後に移動します．
C-p | ヒストリから一つ前の文字列を取り出します．
C-n | ヒストリから次の文字列を取り出します．
TAB,SPC | ファイル名入力時に，ファイル名を補完します．
RETURN | 入力を終了します．

## 起動後の使いかた(Lynx風)

Lynx風キーバインドでコンパイルした場合の使いかたです．

### ページ/カーソル移動

SPC,C-v,+ | 次のページを表示します．
b,ESC v,- | 前のページを表示します．
l | カーソルを右に移動します．
h | カーソルを左に移動します．
j | カーソルを下に移動します．
k | カーソルを上に移動します．
J | 画面を1行上にスクロールします．
K | 画面を1行下にスクロールします．
^ | 行頭に移動します．
$ | 行末に移動します．
> | 画面全体を右にずらします．(表示内容を左にずらす)
< | 画面全体を左にずらします．(表示内容を右にずらす)
C-a | 文書のいちばん上の行に移動します．
C-e | 文書のいちばん下の行に移動します．
G | 画面下で行番号を入力し，そこで指定した行に移動します． ここで $ を入力すると，最終行に移動します．
Z | カーソルのある位置を行の中央に移動します．
z | カーソルのある行を画面の中央に移動します．
TAB, C-n, 下矢印 | 次のリンクに移動します．
ESC TAB, C-p, 上矢印 | 前のリンクに移動します．
C-g | ページ中での現在位置を表示します．

### ハイパーリンク操作

RET, C-f, 右矢印 | 現在カーソルがあるリンクが指す先の文書を読みこみます．
d, ESC RET | 現在カーソルがあるリンクが指す先の文書をファイルに保存します．
u | 現在カーソルがあるリンクが指す先のURLを表示します．
i | 現在カーソルがあるリンクを含む画像そのもののURLを表示します．
I | 現在カーソルがあるリンクに対応する画像を表示します．
ESC I | 現在カーソルがあるリンクが指す画像をファイルに保存します．
: | URL風の文字列をリンクにします．この機能は，HTMLでない文書を 読んでいるときにも有効です．
ESC : | Message-ID風の文字列を，news: のリンクにします．この機能は，HTMLでない文書を読んでいるときにも有効です．
c | 現在の文書のURLを表示します．
= | 現在の文書に関する情報を表示します．
C-h | URL履歴を表示します．
F | <FRAMESET>を含む文書を表示しているときに，<FRAME> タグの指す複数の文書を1つの文書に変換して表示します．
M | 現在見ているページを，外部ブラウザを使って表示します． 2M, 3M で2番目と3番目のブラウザを使います．
ESC M | 現在のリンク先を，外部ブラウザを使って表示します． 2ESC M, 3ESC M で2番目と3番目のブラウザを使います．

### ファイルとURL関係の操作

g, U | URLを指定して開きます．
V | ローカルファイルを指定して開きます．
@ | コマンドを実行し，結果を全部読んでから表示します．
# | コマンドを実行し，結果を読みこみながら表示します．

### バッファ操作

B, C-b, 左矢印 | 現在見ているバッファを削除し，一つ前のバッファを表示します．
\ | HTMLのソースを表示します．
s | バッファ選択モードに入ります．
E | 現在見ているバッファがローカルファイルの場合，そのファイルをエディタで編集します．エディタを終了した後，そのファイルを再度読み込みます．
C-l, C-w | 画面を再描画します．
R, C-r | バッファを再度読み込みます．
S, p | バッファの表示内容をファイルに保存します．
ESC s | HTMLのソースをファイルに保存します．v でソースを表示して S で 保存するのとほぼ同じですが，ESC s で保存したファイルは漢字コードがオリジナルの ままであるのに対して，v S で保存すると現在表示に使っている漢字コードに変換され て保存されます．
ESC e | 現在表示されているバッファを，表示されている形式のまま エディタで編集します．

### バッファ選択モード

"s" でバッファ選択モードに入ったときのキー操作です．

k,C-p | 一つ上のバッファを選択します．
j,C-n | 一つ下のバッファを選択します．
D | 現在選択しているバッファを削除します．
RET | 現在選択しているバッファを表示します．

### ブックマーク操作

v, ESC b | ブックマークを読み込みます．
a, ESC a | 現在見ているページをブックマークに追加します．

### 検索

/,C-s | 現在のカーソル位置からファイル末尾に向かって正規表現を検索します．
n | 次を検索します．
w | 折り返し検索モードを切り換えます．

### マーク操作

C-SPC | マークを設定／解除します．マークは反転表示されます．
P | 一つ前のマークに移動します．
N | 一つ後のマークに移動します．
" | 正規表現で指定された文字列を全てマークします．

### その他

! | シェルコマンドを実行します．
H, ? | ヘルプファイルを表示します．
o | オプション設定パネルを表示します．
C-k | クッキー一覧を表示します．
C-c | 文書の読み込みを中断します．
C-z | サスペンド
q | w3mを終了します．オプションの設定によって，終了するかどうか確認します．
Q | 確認せずにw3mを終了します．

### 行編集

画面の最下行で文字列を入力する場合に有効なキー操作です．

C-f | カーソルを右に移動します．
C-b | カーソルを左に移動します．
C-h | カーソルの直前の文字を削除します．
C-d | カーソル位置の文字を削除します．
C-k | カーソル位置から後を削除します．
C-u | カーソル位置から前を削除します．
C-a | 文字列の先頭に移動します．
C-e | 文字列の最後に移動します．
SPC | ファイル名入力時に，ファイル名を補完します．
RETURN | 入力を終了します．

## マウス操作

マウス機能をONにしてコンパイルしてあれば，マウスを使って w3mを操作することができます．マウスが使えるのは，xterm/kterm/rxvt を使っている場合(この場合には，環境変数TERMを xterm か kterm に 設定する必要があります)，または GPM が動いている環境を使っている場合 です．

左クリック | カーソルをマウスカーソルの位置に移動します． もしカーソルとマウスカーソルの位置が同じで，カーソルが リンクの上にあったときは，そのリンクをたどります．
中クリック | 前のバッファに戻ります．
右クリック | メニューを開きます．メニューの項目もマウスで選ぶことができます．
左ドラッグ | ページをスクロールします．デフォルトの動作では， マウスのドラッグに合わせて文書の方をスクロールします． オプション設定パネルの設定で，この動作を逆にすること ができます(マウスのドラッグに合わせて，ウィンドウの方を スクロールする)．

## キーの定義

~/.w3m/keymap を記述すると，キーの割りあてを変えることができます (行編集のキー定義を除く)．例えば，

       keymap C-o NEXT_PAGE

と記述すると，NEXT_PAGE機能(通常スペースと C-v)に割りあてられて いるもの)を C-o に割りあてることができます． 利用可能な機能と，その名前については， README.funcを参照してください． 例として，オリジナルとLynx風のキー定義ファイル (keymap.default とkeymap.lynx)が置いてあります．

## Local CGI

w3mを使えば，HTTPサーバなしでCGIスクリプトを起動することができます． このとき，w3mがサーバのふりをしてスクリプトを起動し，その出力を 読みこんで表示するわけです． ブックマークの登録と 外部ビューアの編集 は，local CGIのスクリプトとして実現されています． local CGIを使えば，w3mを汎用のフォーム入力インタフェースとして 使うことができます．

セキュリティ上の理由により，起動するCGIスクリプトは，次のどれかの ディレクトリにある必要があります．

- w3mのヘルプファイルなどが置いてあるディレクトリ (典型的には /usr/local/lib/w3m)．このディレクトリは， $LIB で参照することができます．
- /cgi-bin/ ディレクトリ．このディレクトリは，任意の場所に 割りあてることができます(オプション設定パネルの「/cgi-binで表される ディレクトリ」の項目)．ここには，: で区切って複数のディレクトリを 指定することができます(例えば /usr/local/cgi-bin:/home/aito/cgi-bin など)． /cgi-bin/ を使う場合は、

        w3m -o cgi_bin=/path/to/cgi-bin file:/cgi-bin/script.cgi

  のように file:/cgi-binというURLを使う必要があります。 この中にカレントディレクトリを入れることは，セキュリティ上の理由により 薦められません．

Local CGIとして使われるスクリプトでは，w3mをコントロールするために， 特殊なヘッダ `w3m-control:' を使うことができます．このヘッダには， w3mの任意の機能 (README.func参照)を書く ことができます．文書が表示された後，その機能が呼び出されます． 例えば，

    Content-Type: text/plain
    W3m-control: BACK

というヘッダを出力した場合，w3mは空のページを表示し，その直後に そのバッファを削除します．これは，CGIを実行した後で，何もページを 表示したくない場合に有効です．また，

    Content-Type: text/plain
    W3m-control: DELETE_PREVBUF

    contents.....

は，新しいバッファで直前のバッファを置きかえます．

一つの w3m-control: ヘッダには，一つの機能だけを指定することができます． ただし，HTTPレスポンスの中に複数の w3m-control: を入れることができ， そこで指定された機能は順番に実行されます． さらに，GOTO には引数を指定することができます．

    Content-Type: text/plain
    W3m-control: GOTO http://www.yahoo.com/

この例は，Location: を使った次の例と同じように動作します．

    Content-Type: text/plain
    Location: http://www.yahoo.com/

ただし，w3m-control: ヘッダはw3mがスクリプトを直接呼びだした時だけに 有効です．同じスクリプトを HTTPサーバ経由で呼びだした場合， w3m-control: ヘッダは無視されます．