# w3m HANDBUCH

Akinori Ito
aito@fw.ipsj.or.jp

## Übersicht

- Einführung
- Einstellungen
- Farbzuordnung im Dokument
- Funktionen und Tastaturbelegung
- Bedienung per Maus
- Lokale CGI-Skripte

## Einführung

w3m ist ein textorientierter Browser und Textbetrachter (Pager). In einem Terminalemulator können Sie damit lokale und andere Dokumente anzeigen lassen und Verknüpfungen (Hyperlinks) weiterverfolgen.

## Einstellungen

Der Aufruf per Befehlszeile lautet

      w3m [Option]… [Datei|Adresse]…

Wenn Sie Dateinamen oder Adressen in der Befehlszeile angeben, werden diese Dokumente angezeigt. Fehlen entsprechende Argumente, wird w3m ein Dokument aus der Standardeingabe erwarten und anzeigen. Erhält das Programm auch hier keine Daten, beendet es sich normalerweise selbstständig.

Optionen sind unter anderem:

### Allgemeine Optionen

-B

  starte mit einer Ansicht aller Lesezeichen (wenn kein anderes Zielobjekt angegeben ist)

-M

  monochrome Anzeige

-no-mouse

  Mausfunktion aus

-num

  zeige Zeilennummern an

-v

  begrüße den Benutzer mit einer eingebauten Seite (wenn kein anderes Zielobjekt angegeben ist)

-W

  wechsle zwischen umlaufendem und nicht umlaufendem Suchen

-X

  nach Beenden des Programms das Terminal nicht neu initialisieren.

+Zahl

  gehe zu Zeile Zahl. Wirkt nur, wenn Zahl größer ist als die im Terminal verfügbare Zeilenzahl

### Browser-Optionen

-cols Zahl

  bei für die Standardausgabe bestimmten Inhalten, nimm bei zur Umsetzung von HTML eine Länge von num Zeichen pro Zeile

-cookie

  verwende gespeicherte Cookies und akzeptiere neue

-no-cookie

  verwende weder gespeicherte Cookies noch akzeptiere neue

-F

  verarbeite Frames

-no-graph

  verwende bei der Umsetzung von Tabellen und Frames keine grafischen Zeichen

-header Zeichenkette

  füge der HTTP(S)-Anfrage Zeichenkette an. Diese muss der Kopfdaten-Syntax "Variable: Wert" entsprechen

-m

  arbeite im Internetnachrichten-Modus. Mit dieser Option entnimmt w3m den Typ eines Dokumentes dessen Kopfdaten. Dies ist nützlich beim Lesen von Mails und Usenet-Nachrichten.

-no-proxy

  verwende keinen Proxy

-post Datei

  verwende die Methode POST, um in Datei hinterlegte Daten hochzuladen. Hierbei wird die Syntax "var1=wert1[&var2=wert2]…" erwartet

### Textbetrachter-Optionen

-l Zahl

  Anzahl der Zeilen, die zwischengespeichert werden, wenn Text per Standardeingabe übergeben wurde. (Voreinstellung ist 10000)

-r

  verarbeite spezielle Escape-Zeichen (beispielsweise ANSI-Escape-Zeichen oder nroff-Rückwärtsschritte für fette und unterstrichene Zeichen) nicht, sondern zeige sie stattdessen mittels Caret-Notation.

-s

  mehrere leere Zeilen werden bis auf eine gelöscht

-t Zahl

  Tab-Zeichen so verwerten, dass Spalten mit einer Weite von Zahl Zeichen entstehen. Wirkt nicht auf Standardausgabe

### Datenart- und Datenkodierungs-Optionen

-I Zeichenkodierung

  zu benutzende Zeichenkodierung für erhaltene Daten

-O Zeichenkodierung

  zu benutzende Zeichenkodierung für auszugebende Daten

-T Typ

  legt den MIME-Typ erhaltener Daten fest. Ohne diese Option bestimmt ihn das Programm anhand der Dateinamen-Erweiterung. Wenn dies fehlschlägt, wird text/plain als Typ angenommen. Zum Beispiel:

  Übernimm HTML-Dokument von der Standardeingabe und zeige es an

         cat beispiel.html | w3m -T text/html

  Zeige HTML-Quelltext an

         w3m -T text/plain beispiel.html

### Optionen zur Datenausgabe, mit sofortigem Verlassen des Programms

-dump

  lies das per URL angegebene Dokument und leite es verarbeitet der Standardausgabe zu. Wenn mit der Option -cols nichts anderes eingestellt ist, erhält es eine Breite von 80 Zeichen

-dump_source

  leite den Seitenquelltext der Standardausgabe zu

-dump_head

  leite die Antwort einer HEAD-Anfrage für eine URL der Standardausgabe zu

-dump_both

  leite Antwort auf HEAD-Anfrage und Seitenquelltext der Standardausgabe zu

-dump_extra

  leite Antwort auf HEAD-Anfrage, Seitenquelltext und Extrainformation der Standardausgabe zu

### Optionen, die Standards für Einstellungen und Datenquellen außer Kraft setzen

-bookmark Datei

  benutze anstelle der Standarddatei bookmark.html für Lesezeichen die Datei Datei

-config Datei

  benutze Datei anstelle der Standard-Konfigurationsdatei

-o Option=Wert

  arbeite mit einer Konfiguration, bei der die Einstellung Option mit Wert belegt ist. Ohne Option=Wert gleichwertig mit -show-option

## Farbzuordnung im Dokument

Links und Bildelemente werden wie folgt angezeigt:

| Farbmodus | Monochrom-Modus
--- | --- | ---
Hyperlinks | blau | unterstrichen
Bilder | grün | invertiert
Formular-Eingabefelder | rot | invertiert

Diese Farben können nach Eingabe von o im Einstellungs-Dialog anders zugeordnet werden.

Bilder können auch als Bitmaps direkt im Terminal dargestellt werden; siehe README.img für weitere Details.

## Funktionen und Tastaturbelegung

Wenn w3m läuft, bedienen Sie das Programm, indem Sie Funktionen anhand ihres Namens oder der ihr zugeordneten Tastenkombination aufrufen. Es gibt voreingestellte Tastaturbelegungen.

Sie können die Tastaturbelegungen (abgesehen von jenen des Menü- und des Texteingabe-Modus) in einer Datei ~/.w3m/keymap anpassen. Beispielsweise bindet

       keymap C-o NEXT_PAGE

die Funktion NEXT_PAGE (die normalerweise mit SPC und C-v verknüpft ist) mit C-o. Siehe die Liste verfügbarer Funktionen in README.func. Original- und Lynx-artige Tastaturbelegungen enthalten die Beispieldateien keymap.default und keymap.lynx.

Im Folgenden stehen C- und M- für die Eingabe-Modifikationen mit der Steuerungs- und der Meta-Taste. Die letztere ersetzt die ALT-Taste, wohingegen Drücken der ESC-Taste zwischen Meta-modifiziertem und einfachen Tastendruck wechselt. Das Minus-Zeichen bedeutet das gleichzeitige Drücken von Tasten; der Leerraum dagegen steht dafür, dass eine Taste nach der anderen gedrückt wird. Mit 2 M ist also gemeint, die 2 und dann M zu drücken.

Funktion | Tastenkombination | Beschreibung
--- | --- | ---
Standard | Lynx-ähnlich
### Navigation innerhalb von Seiten
NEXT_PAGE | SPC, C-v, +, PGDN | SPC, C-v, + | Scrolle eine Seite abwärts
PREVIOUS_PAGE | b, M-v, -, PGUP | b, M-v, - | Scrolle eine Seite aufwärts
MOVE_RIGHT | l, C-f, RIGHT | l | Bewege Cursor nach rechts (mit Verschiebung um halbe Bildschirmbreite an dessen Rand)
C-b, LEFT | h, C-b, LEFT | h | Bewege Cursor nach links (mit Verschiebung um halbe Bildschirmbreite an dessen Rand)
MOVE_DOWN | j, C-n, DOWN | j | Bewege Cursor abwärts (scrolle eine Zeile am Bildschirmrand)
MOVE_UP | k, C-p, UP | k | Bewege Cursor aufwärts (scrolle eine Zeile am Bildschirmrand)
UP | J | J | Scrolle den Anzeigebereich eine Zeile aufwärts
DOWN | K | K | Scrolle den Anzeigebereich eine Zeile abwärts
LINE_BEGIN | ^, C-a | ^ | Gehe zum Zeilenanfang
LINE_END | $, C-e | $ | Gehe zum Zeilenende
NEXT_WORD | w | w | Gehe zum nächsten Wort
PREVIOUS_WORD | W | W | Gehe zum vorherigen Wort
SHIFT_RIGHT | > | > | Anzeigebereich nach rechts versetzen
SHIFT_LEFT | < | < | Anzeigebereich nach links versetzen
RIGHT | . | . | Anzeigebereich um eine Spalte nach rechts verschieben
LEFT | , | , | Anzeigebereich um eine Spalte nach links verschieben
BEGIN | g, M-<, HOME | C-a, M-< | Gehe zur ersten Zeile
END | G, M->, END | C-e, M-> | Gehe zur letzten Zeile
GOTO_LINE | M-g | G | Gehe zur angegebenen Zeile
LINE_INFO | C-g | C-g | Zeige aktuelle Position im Dokument an
CENTER_H | Z | Z | Bildschirm rechts und links des Cursors zentrieren
CENTER_V | z | z | Bildschirm ober- und unterhalb des Cursors zentrieren
NEXT_LINK | TAB | TAB, C-n, DOWN | Gehe zum nächsten Hyperlink
PREVIOUS_LINK | M-TAB, C-u | M-TAB, C-u, C-p, UP | Gehe zum vorangegangen Hyperlink
LINK_BEGIN | [ | [ | Gehe zum ersten Hyperlink
LINK_END | ] | ] | Gehe zum letzten Hyperlink
MOVE_LIST_MENU | M-m | M-m | Öffne Menü mit vorhandenen Hyperlinks
### Umgang mit Hyperlinks
GOTO_LINK | C-j, C-m, RET | C-f, C-j, C-m, RET, RIGHT | Folge dem aktuellen Hyperlink in neuem Puffer
LIST_MENU | M-l | M-l | Öffne Menü mit Hyperlinks und folge dem ausgewählten
SAVE_LINK | a, M-RET | d, M-RET | Speichere Ziel des Hyperlinks
PEEK_LINK | u | u | Zeige Zieladresse
PEEK_IMG | i | i | Zeige Adresse des Bildes
VIEW_IMAGE | I | I | Zeige Bild in Betrachter
SAVE_IMAGE | M-I | M-I | Speichere Bild
MARK_WORD | ; | ; | Wandle aktuelles Wort in Hyperlink um
MARK_URL | : | : | Wandle URL-artige Zeichenketten um in Hyperlinks
MARK_MID | M-: | M-: | Wandle Nachrichten-ID-artige Zeichenketten um in Hyperlinks
PEEK | c | c | Zeige aktuelle Adresse an
INFO | = | = | Zeige Informationen über dieses Dokument
HISTORY | C-h | C-h | Chronik aufgesuchter Dokumente
EXTERN | M | M | Zeige das aktuelle Dokument mit einem externen Browser (wird eine Taste von 2 bis 9 gedrückt, also beispielsweise 3 M, eingegeben, kommt ein anderer, in der Konfiguration hinterlegter Browser zum Einsatz)
EXTERN_LINK | M-M | M-M | Bringe das Linkziel mit einem externen Browser zur Anzeige (vorangestellte Zahlen wirken sich wie oben beschrieben aus)
### Verwalten von Lesezeichen
BOOKMARK | M-b | v, M-b | Lesezeichen ansehen
ADD_BOOKMARK | M-a | a, M-a | Lege für aktuelle Seite Lesezeichen an
### Umgang mit Dateien und Datenströmen
GOTO | U | g, U | Öffne angegebenes Dokument in neuem Puffer
GOTO_RELATIVE | M-u | M-u | Öffne relative Adresse in neuem Puffer
LOAD | V | V | Öffne lokale Datei in einem neuen Puffer
READ_SHELL | @ | @ | Führe einen Shell-Befehl aus und zeige Ausgabe in einem neuen Puffer
PIPE_SHELL | # | # | Führe einen Shell-Befehl aus und zeige Ausgabe in einem neuen Puffer
### Arbeit an Seiteninhalten
VIEW | v | \ | Wechsle zwischen HTML-Quellcode und verarbeitetem Dokument
LIST | L | L | Liste Link-Elemente, Hyperlinks und Bilder auf
FRAME | F | F | Wechsle zwischen Kennung und Umsetzung von HTML-Frames
REDRAW | C-l | C-l, C-w | Bildschirmanzeige neu aufbauen
RELOAD | R | R, C-r | Aktuelles Dokument erneut laden
EDIT | E | E | Bearbeite lokales Quelldokument
EDIT_SCREEN | M-e | M-e | Bearbeite eine Kopie des verarbeiteten Dokuments
PIPE_BUF | | | | | Leite aktuellen Pufferinhalt einem Shell-Befehl zu und zeige Ausgabe an
DOWNLOAD | M-s | M-s | Dokument-Quellcode speichern
SAVE_SCREEN | S | S, p | Speichere verarbeitetes Dokument
### Navigation zwischen Puffern und Reitern
BACK | B | B, C-b, LEFT | Schließe aktuellen Puffer und kehre zu dem im Stapel darunterliegenden zurück
GOTO_HOME | C-_ |  | Zurück zur Startseite (die Variablen HTTP_HOME oder WWW_HOME spezifiziert wurden)
SELECT_MENU | s | s, C-h | Öffne Pufferstapel-Menü
TAB_MENU | M-t | M-t | Öffne das Reiter-Auswahl-Menü
NEW_TAB | T | T | Öffne neuen Reiter (mit aktuellem Dokument)
TAB_LINK | C-t | C-t | Folge dem aktuellen Hyperlink in einem neuen Reiter
NEXT_TAB | } | } | Schalte zum nächsten Reiter
PREV_TAB | { | { | Schalte zum vorherigen Reiter
CLOSE_TAB | C-q | C-q | Schließe aktuellen Reiter
### Suchfunktionen
SEARCH | / | /, C-s | Suche vorwärts
SEARCH_BACK | ? |  | Suche rückwärts
ISEARCH | C-s |  | Inkrementelle Suche vorwärts
ISEARCH_BACK | C-r |  | Inkrementelle Suche rückwärts
SEARCH_NEXT | n | n | Setze Suche vorwärts fort
SEARCH_PREV | N |  | Setze Suche rückwärts fort
WRAP_TOGGLE | C-w | w | Wechsle zwischen umlaufendem und nicht-umlaufendem Suchen
### Arbeit mit Textmarken
MARK | C-SPC | C-SPC | Setze/Lösche Markierung
PREV_MARK | M-p | P | Gehe zur vorherigen Markierung
NEXT_MARK | M-n | N | Gehe zur nächsten Markierung
REG_MARK | " | " | Markiere alle Vorkommen eines Zeichenmusters
### Verschiedenes
COMMAND | M-c | M-c | Rufe eine oder mehrere durch Strichpunkt getrennte w3m-Funktionen auf
HELP | H | H, ? | Zeige Hilfe-Übersicht
OPTIONEN | o | o | Einstellungs-Dialog öffnen
SET_OPTION | M-o | M-o | Setze Option
DEFINE_KEY | M-k | M-k | Definiere eine Verbindung zwischen einer Tastenkombination und einem Kommando
MOUSE_TOGGLE | m | m | Schalte Mausbedienung an oder ab
DOWNLOAD_LIST | D | D | Übersicht heruntergeladener Dateien anzeigen
COOKIE | C-k | C-k | Zeige die gespeicherten Cookies
UNDO | ( | ( | Nimm die letzte Cursorbewegung zurück
REDO | ) | ) | Den letzten Rücknahmebefehl zurücknehmen
EXEC_SHELL | ! | ! | Shell-Befehl ausführen
DICT_WORD | M-w | M-w | Führe eine Wörterbuch-Funktion aus (siehe README.dict)
DICT_WORD_AT | M-W | M-W | Benutze Wörterbuch für Wort unter Cursor
VERSION | r | r | Zeige die Version von w3m an
SUSPEND | C-z | C-z | w3m zum Hintergrundprozess machen. (Wird mit dem Shell-Befehl fg zurückgenommen.)
QUIT | q | q | Mit Bestätigungsfrage beenden
EXIT | Q | Q | Sofort beenden

Darüber hinaus gibt es die folgenden Bedien-Modi mit fester Tastaturbelegung für die entsprechenden Funktionen. Diese sind nicht durch die Funktion DEFINE_KEY oder Einträge der keymap-Datei veränderbar.

Funktion (interner Name) | Tastenkombination | Beschreibung
--- | --- | ---
### Menü-Auswahl-Modus
N/A | j, C-n, DOWN | Nächster Eintrag
N/A | k, C-p, UP | Vorheriger Eintrag
N/A | D | Lösche Eintrag
N/A | SPC, RET, RIGHT | Wähle Eintrag aus
N/A | < | Schiebe Eintrag runter
N/A | > | Schiebe Eintrag hoch
### Popup-Menü-Modus
MENU:SELECT | SPC, RET, RIGHT | Wähle Punkt aus
MENU:CLOSE | C-c | Schließe Menü
MENU:CANCEL | LEFT, BKSPC, C-h | Einen Auswahlschritt zurück
MENU:DOWN | j, C-n, DOWN | Gehe zum nächsten Punkt
MENU:UP | k, C-p, UP | Gehe zum vorherigen Punkt
MENU:LINE_UP | K | Scrolle einen Punkt aufwärts
MENU:LINE_DOWN | J | Scrolle einen Punkt abwärts
MENU:TOP | C-a | Gehe zum ersten Punkt
MENU:LAST | C-e | Gehe zum letzten Punkt
MENU:NEXT | C-v, C-f | Gehe zur nächsten Seite
MENU:PREV | ESC v, C-b | Gehe zur vorherigen Seite
MENU:SEARCH_FORE | C-s, / | Suche vorwärts
MENU:SEARCH_BACK | C-r, ? | Suche rückwärts
MENU:SEARCH_NEXT | n | Suche weitere Übereinstimmung
MENU:SEARCH_PREV | N | Suche frühere Übereinstimmung
### Eingabezeile-Bearbeitungs-Modus
LINEEDIT:FORWARD | C-f, RIGHT | Bewege Cursor vorwärts
LINEEDIT:BACK | C-b, LEFT | Bewege Cursor rückwärts
LINEEDIT:BS | C-h, BKSPC | Vorheriges Zeichen löschen
LINEEDIT:DEL | C-d | Aktuelles Zeichen löschen
LINEEDIT:KILL_AFTER | C-k | Lösche alles nach dem Cursor
LINEEDIT:KILL_BEFORE | C-u | Lösche alles vor dem Cursor
LINEEDIT:TOP | C-a | Gehe zum Zeilenanfang
LINEEDIT:BOTTOM | C-e | Gehe zum Zeilenende
LINEEDIT:PREV | C-p, UP | Hole den vorherigen Chronik-Eintrag
LINEEDIT:NEXT | C-n, DOWN | Hole den nächsten Chronik-Eintrag
LINEEDIT:COMPLETE | TAB, SPC | Versuche, den Dateinamen zu komplettieren
LINEEDIT:EDITOR | C-o | Bearbeite mit externem Editor
LINEEDIT:ACCEPT | RET | Eingabezeile übernehmen

## Bedienung per Maus

Wenn w3m mit Mausfunktionen kompiliert wurde und Sie das Programm entweder in einer Konsole mit GPM oder in einem X-Terminal-Emulator starten, ist ein Navigieren mit der Maus möglich. (Im Falle von rxvt müssen Sie die Umgebungsvariable TERM mit xterm oder kxterm belegen.)

Die Datei README.mouse erklärt, wie die Bedienung per Maus an eigene Vorlieben angepasst werden kann.

Handlung | Beschreibung
--- | ---
Linksklick | Zuerst: Der Cursor wird an die Mauszeigerposition versetzt. Dann: Dem Hyperlink, auf dem der Cursor momentan steht und auf den sich der Mauszeiger richtet, wird gefolgt.
Mittelklick | Zurück zum vorherigen Puffer.
Rechtsklick | Öffne Menü. Sie können Menüpunkte durch Anklicken auswählen.
Linksziehen | Dokument scrollen. Standardmäßig wird das Dokument im Fenster verschoben. Ein Verschieben des Fensters über dem stehenden Dokument erreichen Sie über den Einstellungs-Dialog.

## Lokale CGI-Skripte

w3m ist in der Lage, CGI-Skripte direkt laufen zu lassen. Dies bedeutet, dass sich das Programm wie ein HTTP-Server verhält und das CGI-Skript ausführt und dessen Ausgabe anzeigt. Beispielsweise wurden die Lesezeichen-Registrierung und der Verzeichnis-Browser als lokale CGI-Skripte programmiert. Darüber hinaus kann w3m durch solche Skripte als Schnittstelle zum Einholen von Daten aller Art fungieren.

Aus Sicherheitsgründen kommen für von w3m benutzte CGI-Skripte nur folgende Verzeichnisse in Frage:

- Das Verzeichnis, in dem w3m-bezogene Dateien abgelegt sind (typischerweise /usr/local/lib/w3m). Auf dieses Verzeichnis kann mit der Variblen $LIB referenziert werden.
- Das Verzeichnis /cgi-bin/. Sie können /cgi-bin/ im Feld Verzeichnis für ausführbare Skripte des Einstellungs-Dialogs jedem gewünschten Verzeichnis zuordnen. Mehrere Pfade lassen sich durch Doppelpunkt getrennt angeben, also in der Form /usr/local/cgi-bin:/home/aito/cgi-bin. Es wird davon abgeraten, das aktuelle Verzeichnis hier mitaufzunehmen. Zum Zugriff auf Skripte im Verzeichnis /cgi-bin/ erwartet w3m eine URL folgender Art:

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

Das CGI-Skript kann zur Steuerung von w3m die spezielle Kopfzeile w3m-control: enthalten. Darin können alle Funkionen (siehe README.func) eingetragen sein. Die angegebene Funktion wird aufgerufen, nachdem das Dokument angezeigt wird. Beispielsweise, wird eine Skriptausgabe

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

eine leere Seite anzeigen und den Puffer sofort löschen. Dies ist nützlich, wenn es nicht gewünscht ist, die Seite nach Aufrufen des Skriptes anzuzeigen. Das nächste Beispiel

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

führt zum Übergehen des aktuellen Puffers.

Jede w3m-control-Kopfzeile kann nur eine Funktion aufrufen. Jedoch können Sie im Kopfteil einer HTTP-Kommunikation mehr als eine w3m-control-Anweisung hinterlegen. Überdies ist es möglich, die GOTO-Funktion mit einem Argument aufzurufen:

    Content-Type: text/plain
    W3m-control: GOTO http://www.example.org/

Sie bewirken damit das gleiche wie mit der Anweisung Location: im Kopfteil:

    Content-Type: text/plain
    Location: http://www.example.org/

Beachten Sie, dass diese Anweisung wirkungslos ist, wenn das CGI-Skript durch einen HTTP-Server angesprochen wird.