Documentation Edbrowse, guide de l'utilisateur

Table des matières

Chapitre 1, préface

Chapitre 2, guide de référence rapide

Chapitre 3, l'éditeur

Chapitre 4, navigateur web

Chapitre 5, Javascript

Chapitre 6, scripts d'Edbrowse et le fichier de configuration

Chapitre 7, client de courrier

Chapitre 8, Accéder aux bases de données


Chapitre 1, Préface

Mainteneur

Le site de Edbrowse est Edbrowse.org Chris Brannon est l'actuel mainteneur du projet et le webmaster.

Auteur

Karl Dahlke a écrit la première version de Edbrowse en perl, en 2001, et reste le principal développeur du projet. Consultez SVP l'article wikipedia pour l'historique de Edbrowse, et un aperçu de ses possibilités.

Copyright

Ce programme est copyright (c) (c) Karl Dahlke (et d'autres auteurs et contributeurs), 2000-2015. Il est mis à disposition par les auteurs sous la licence publique générale GNU (GPL), définie par la Free Software Fondation. Il peut être utilisé dans n'importe quel but, et redistribué, à condition d'y adjoindre le présent copyright.

Avertissement

Edbrowse est fourni tel quel, sans garantie de fonctionnement dans tous les cas.  Il peut effacer vos précieux fichiers.  Il peut envoyer des données erronées sur l'Internet, provoquant l'achat d'un éléphant à 37000 dollars au lieu de fournitures d'impression à 37 dollars.  Il peut effacer toutes les lignes de votre table mysql clients.  C'est un projet développé par des bénévoles sur leur temps libre, qui (en principe) ne peut atteindre la qualité et la rigueur des logiciels institutionnels ou gouvernementaux. En utilisant ce programme, vous l'acceptez en l'état.

Remerciements

Chris Brannon a écrit ou modifié au moins 20% du code, et a fourni de bonnes idées pour l'architecture générale. Adam Thompson a porté l'interface javascript de C à C++, portage requis par les versions 2 de Mozilla JS, et il continue à superviser l'architecture générale du projet. Kevin Carhart a déchiffré les mystères de jquery, et mis à jour le DOM pour l'implémenter. Jeremy O'Brien a porté le programme sur Mac OS X. et Geoff McLane a fourni le portage Windows, une configuration cmake et un système de compilation généraux. Plusieurs personnes ont traduit les sorties et messages d'erreur en d'autres langues, et elles sont créditées de leur travail dans la section "Langages" ci-dessous.

Vue d'ensemble

Ce programme est, à première vue, un ré-implémentation de /bin/ed.  En fait vous pourriez utiliser quelques commandes d'Ed sans vous rendre compte que vous exécutez réellement mon programme. Mais à mesure que vous l'utiliserez, vous découvrirez quelques différences, secteurs où mon programme diffère de Ed. (Ceux-ci sont discutés ci-dessous.)

Réinventer ed semble être une perte de temps, jusqu'à ce que vous vous rendiez compte que ce programme fonctionne également comme un navigateur - un navigateur inclus dans ed.  Vous pouvez éditer une URL aussi facilement qu'un fichier local, et activer le mode navigation pour afficher le HTML d'une façon appropriée pour un programme en ligne de commande.  En d'autres termes, nous ignorons la majeure partie des informations de formatage, maintenons les liens et remplissons les formulaires.  Ceci permet aux utilisateurs aveugles d'accéder à l'Internet par l'intermédiaire d'une application qui est entièrement compatible avec la nature linéaire de la parole ou du braille. 

Si Edbrowse n'est pas fourni par votre distribution, il existe une version en Perl, avec des fonctionnalités moindres, que vous pouvez utiliser sur n'importe quel ordinateur : Linux, Unix, Mac, Windows, etc.   Essayez Edbrowse.pl, et si vous l'appréciez, vous pourrez récupérer le package git et compiler les sources pour construire la version C complète.

Si vous êtes un utilisateur de Linux, et que votre distribution de fournisse pas Edbrowse, vous pouvez - bien sûr - utiliser la version Perl mentionnée ci-dessus, mais vous pouvez égalemnt utiliser la version complète en C, en évitant les tracas de la compilation.  Des versions liées statiquement pour les architectures 32 bits et 64 bits sont maintenues sur la home page d'Edbrowse.

Cette documentation suppose que vous connaissez ed.  En fait, elle aide si vous êtes à l'aise dans ed.  Une expérience des navigateurs d'Internet et de la terminologie associée est également utile. 

Autres langues

D'abord, quelques mots sur les jeux de caractères. L'anglais est facilement géré par un flot d'octets, une lettre par octet.  En fait, chaque lettre tient sur 7 bits; le huitième bit, non utilisé, est mis à 0.  Ce système est appelé ASCII et, comme vous pouvez le voir, il est spécifique à l'anglais.

Les langues indo-européens comportent plus de caractères, comme ñ (espagnol), è (français), et ö (allemand). Ceux-ci peuvent tenir sur un octet, en mettant le 8ème bit à 1, selon le standard iso8859-1. D'autres langues, comme le tchèque et le hongrois, se conforment au standard iso8859-2, qui assigne d'autres caractères aux octets supérieurs à 127. Et ensuite il y a l'iso8859-3, et ainsi de suite.  Sélectionnez votre page de codes, et toutes les lettres de vore langue tiennent sur un octet. C'est le standard iso8859, rétro-compatible avec l'ASCII.  En d'autres termes, z est 122 en ASCII et dans toutes les pages de codes iso8859-x, mais les codes plus élevés, au-dessus de 127, peuvent représenter des lettres différentes dans des langues différentes.

Ceci a fonctionné pendant longtemps, mais que se passe-t-il si vous désirez écrire un paragraphe en français et un autre en tchèque ? Vous pouvez passer de l'iso8859-1 à l'iso8859-2 au milieu du document, ou bien utiliser un nouveau standard qui représente toutes les lettres dans toutes les langues simultanément. Ce jeu de caractères, qui ne code plus les caractères sur un seul octet, est connu sous le terme utf8, lequel est devenu le nouveau standard dans l'industrie informatique.  Les logiciels n'ont plus à sélectionner une page iso8859 et assigner des nombres aux lettres dans un synthétiseur vocal.  Ainsi, dans votre ordinateur, ñ est représenté par deux octets, et non un seul.  C'est transparent pour vous; vous voyez la même lettre sur l'écran, et vous entendez le même son (si votre lecteur d'écran envoie ces lettres à votre synthétiseur). Une façon simple de savoir sur quel système vous êtes est de faire "echo $LANG". Si la réponse contient la chaîne utf8, ou utf-8, en minuscules ou majuscules, votre console utilise utf8, et attend des séquences de 2 octets. Vos fichiers contiendront ces séquences, sans que vous en soyez (probablement) informé. Des systèmes plus anciens (pré utf-8) codent chaque caractère sur un seul octet, et utilisent une page de codes iso8859 pour les traduire.

Il y aurait beaucoup plus à dire sur les jeux de caractères : ceci est juste une brève introduction au sujet. Je n'ai pas besoin d'aller plus loin, parce que Edbrowse ne supporte actuellement que iso8859 ⇔ utf8 . Le chinois, par exemple, requiert des séquences de 3 ou 4 octets, intégrées dans unicode. Edbrowse, pour l'heure, ne peut gérer ce niveau de complexité.

Les sorties et messages d'erreur ont été "internationalisés", comme "chaîne recherchée non trouvée".  Positionnez la variable d'environnement LANG pour interagir avec Edbrowse dans votre langue.  Les langues acceptées sont listées ci-dessous.  Si vous pouvez traduire Edbrowse dans d'autres langues, prière de me le faire savoir.

Anglais: LANG=en (c'est la langue par défaut)

Français: LANG=fr par Erwin Bliesenick avec la documentation

Portuguais brésilien: LANG=pt_br par Cleverson Casarin Uliana

Polonais: LANG=pl_pl par Wojciech Gac

Allemand: LANG=de par Sebastian Humenda

Lorsqu'un message d'erreur est affiché, les lettres accentuées sont affichées sur un octet, c'est-à-dire en iso8859, à moins que la chaîne utf8 ou utf-8 soit présente dans $LANG, auquel cas les caractères non-ascii sont générés en utf8. LANG=fr_FR.UTF-8 est un réglage usuel en France. De même, le contenu d'un tampon, qu'il soit un fichier local ou un site internet, est affiché en séquences de 8 bits ou en séquences de 2 octets, conformément à $LANG.  Gardez à l'esprit que utf8 est devenu le standard, et Edbrowse ne pourra plus afficher de texte ou des messages d'erreur en iso8859 dans quelque temps.   En d'autres termes, iso8859 est obsolète.

Si Edbrowse lit un ancien fichier, c'est-à-dire qu'il le charge dans un tampon vide, et qu'il soit codé en iso8859, alors que votre ordinateur est configuré en UTF-8, ce fichier est alors converti à la volée, bien avant que vous vous en aperceviez. Ainsi, il aura l'air normal. Si j'ai tout fait correctement, vous ne verrez aucune différence. (Utilisez la commande iu pour désactiver cette fonctionnalité.)

Quand vous sauvegardez vos données dans le même fichier, c'est-à-dire si vous avez fait quelques ajouts ou modifications, je reconvertis le fichier dans son jeu de caractères original iso8859. Ainsi, vous pouvez renvoyer le fichier modifié à votre correspondant, et ce fichier sera dans son jeu de caractères, comme il l'escompte. Cependant, si vous sauvegardez vos données, ou une partie de vos données, sous un nouveau nom de fichier, il restera dans le jeu de caractères utilisé par votre ordinateur.

Ces conversions ne devraient jamais intervenir sur des fichiers zip, ou des exécutables, ou d'autres types de données binaires. Si vous voyez les mots "conversion en iso8859" ou "conversion en utf8", alors que le fichier n'est pas du texte internationalisé, il y a un problème. N'essayez pas de lancer l'exécutable converti; cela ne marchera pas.

Si votre environnement est en utf8, la fonction de recherche peut amener à quelques confusions. Considérons le mot espagnol niño (petit garçon). Si vous recherchez ni.o, vous ne trouverez pas la ligne contenant ce texte. Le point remplace un caractère, et devrait correspondre à ñ, mais cette lettre accentuée tient sur deux octets. Ironiquement, vous devrez chercher ni..o, et vous trouverez ce que vous cherchez. Nul besoin de dire que ceci est vraiment déroutant.

La recherche/remplacement est effectuée par la librairie pcre et, heureusement pour nous, la dernière version supporte l'utf8. En d'autres termes, je peux passer à pcre l'option qui lui dira de rechercher certaine séquence sur deux octets comme un caractère unique, et pcre se comportera comme attendu.   La recherche de ni.o fonctionnera de nouveau.  Pour désactiver temporairement l'utf8 dans la recherche/remplacement, utilisez la commande su8.

Quelques pages internet peuvent s'afficher en plusieurs langues. Par exemple, twitter.com a une version anglaise, une version française, et ainsi de suite. Il est possible de sélectionner la langue à l'appel d'une page. Edbrowse l'implémente via le mot-clé localizeweb dans son fichier de configuration. Par exemple, la ligne qui suit dans .ebrc indique que vous désirez la version française, si elle est disponible.

localizeweb = fr


Chapitre 2, Guide de référence rapide

Guide de référence rapide

Liste de toutes les commandes d'ed et d'Edbrowse, toutes regroupées.  C'est un guide de référence rapide.  La plupart de ces commandes n'auront pas de sens si vous ne lisez pas le reste de la documentation. 

Quitter le programme

q : quitte la session courante
qt : quitte le programme complètement, que vous ayez sauvegardé vos fichiers ou non
bw : tampon sauvegardé; vous pouvez quitter n'importe quand
!commande : commande shell
! : shell interactif
cd : change de répertoire

Entrées

rl : utilise readline() en entrée (bascule)

Affichage des lignes dans le tampon

p : affiche la ligne courante
4,7p : affiche les lignes 4 à 7
+3p : avance de 3 lignes et affiche
3 : idem +3p, print est la commande par défaut
- : ligne précédente
--- : recule de 3 lignes
'a,'bp : affiche les lignes repérées par les étiquettes a et b
kb : marque la ligne courante avec l'étiquette b
l : liste la ligne courante, affichant les caractères invisibles et les marqueurs de fin de ligne
eo : marqueurs de fin désactivés
el : affiche les marqueurs de fin ^$ quand une ligne est listée
ep : affiche les marqueurs de fin quand une ligne est listée ou affichée
lna : affiche les caractères nonascii en hexadécimal uand une ligne est listée (bascule)
n : affiche la ligne courante avec son numéro de ligne
z22 : affiche les 22 prochaines lignes
z : affiche encore 22 lignes
= : affiche le nombre de lignes du fichier en cours
.= : affiche le numéro de ligne courante
B : trouve la ligne contenant le crochet correspondant
B( : trouve la ligne contenant la parenthèse correspondante

Messages d'aide

h : aide, explique le dernier point d'interrogation H : affiche tous les messages d'erreur (bascule)

Recherche et remplacement

s/x/y/ : remplace x par y dans la ligne courante
s/x/y : remplace x par y dans la ligne courante et affiche le résultat
s//y/ : utilise la dernière chaîne de substitution, dans ce cas x
s/x/%/ : utilise la dernière chaîne de substitution
s : répète la dernière opération de substitution
s/x/y/2 : remplace la deuxième occurrence de x par y dans la ligne courante
4,7s/x/y/g : remplace toutes les occurrences de x par y, dans la ligne courante
s, : remplace virgule espace par un retour-chariot, divise la ligne en deux
s. : replace point espace par un retour-chariot, divise la ligne en deux
s?2 : divise la ligne à l'emplacement du 2ème point d'interrogation
bl : découpe une très longue ligne en phrases
/x/ : recherche la ligne contenant x
/x: idem que /x/
/x/i: cherche la ligne contenant x ou X
?x? : recherche x en arrière
ci : les recherches et les substitutions sont insensibles à la casse
cs : les recherches et les substitutions sont sensibles à la casse
sg : les chaînes de substitution sont globales pour toutes les sessions
sl : les chaînes de substitution sont locales à leurs sessions
su8: Utiliser utf-8 dans recherche et remplacement (bascule)
g/x/ p : affiche toutes les lignes contenant x x
v/x/ p : affiche toutes les lignes ne contenant pas x
v/x/i l : liste toutes les lignes ne contenant ni x ni X
lc : conversion de la ligne courante en minuscules
mc : majuscules en début de mot dans la ligne courante
uc : conversion de la ligne courante en majuscules
s/foo/uc: conversion de foo en FOO dans la ligne courante
s/\bfoo\b/mc/g : convertit foo en Foo, mas pas foobar

Fichiers et sessions

f : affiche le nom du fichier courant
f foo : renomme le fichier courant en 'foo'
f/ : ne conserve que la dernière partie du nom de fichier courant
e : affiche le numéro de la session courante
e3 : va à la session numéro 3
e foo : édite le fichier 'foo'
r foo : lit le contenu du fichier 'foo' dans le tampon courant
w foo: sauvegarde le tampon courant sous le nom 'foo'
w+ foo : ajoute au fichier 'foo' le contenu du tampon courant
w/ : sauvegarde sous le nom de la dernière partie du nom de fichier courant
e ~/projets/edbrowse/src/buf*.c : expanse les méta-caractères s'il y a correspondance exacte
e $EBSRC/buf*.c : expansion de variable
bd : bascule entre détection/non détection des fichiers binaires du répertoire
iu : convertit automatiquement entre iso8859 et utf8 (bascule)

Edition de texte, très semblable à ed

u : annuler la dernière commande
d : supprimer la ligne courante
1, $d : supprimer toutes les lignes, de 1 à la fin du fichier
D : supprimer la ligne courante et afficher la prochaine ligne
i : insérer le texte, suivi d'une virgule, avant la ligne courante
c : remplacer la ligne courante par un nouveau bloc du texte, terminé par une virgule
a : ajouter le texte après la ligne courante, terminé par une virgule
a+ : inclure la ligne que vous vous venez de taper, si vous pensiez être en mode ajout
4,7m11 : déplacer les lignes 4 à 7 à la ligne 11
4,7t11 : copier les lignes 4 à 7 à la ligne 11
3,4j : fusionner les lignes 3 et 4
3,4J : fusionner les lignes 3 et 4, séparées par un espace

Parcours de répertoire

dr : le répertoire est en lecture seule
dw : on peut écrire dans le répertoire, et d déplace les fichiers dans la corbeille
dx : on peut écrire dans le répertoire, et d supprime le fichier
hf : basculer entre montrer/cacher les fichiers cachés du répertoire
lsl : affiche la taille du fichier sur la ligne courante, en mode répertoire uniquement
lss : affiche la taille approximative du fichier, en ko, mo etc..
lst : affiche la date de modification du fichiers binaires
lsp : affiche le propriétaire, le groupe et les les permissions
lsi : affiche l'inode
lsk : affiche le nombre de liens en dur
lsm : affiche les nombres majeur et mineur
lsy : affiche le chemin d'un lien symbolique
ls : idem à lsst
ls=lt : affiche la longueur et la date de tous les fichiers du répertoire parcouru
ls= : affiche uniquement la liste des fichiers du répertoire parcouru

Parcourir un fichier html ou une page web

b : navigue dans le fichier courant, considéré comme étant du HTML
b foo.html : éditr et navigue dans le fichier foo.html
b URL : se connecte à URL et naviguer
ub : quitte le mode navigation du fichier courant
ft : affiche le titre de la page Web courante
fd : affiche la description de la page Web courante
fk : affiche les mots-clés de la page Web courante
rf : rafraîchit la page WEB ou la liste des fichiers
et : édite cette page Web en mode texte pur
hr : redirection HTTP (bascule)
vs : vérifie les connexions SSL (sécurisées)
sr : envoie le référent (bascule)
ua3 : se présente comme le troisième agent utilisateur dans votre fichier de configuration

Téléchargements FTP ou HTTP

pdd : indicateur d'avancement du téléchargement indiqué par des points
pdc : indicateur d'avancement du téléchargement indiqué par un nombre
pdq : pas d'indicateur d'avancement du téléchargement
fma : mode FTP actif
fmp : mode FTP passif
bg : télécharge les fichiers en tâche de fond (bascule)
bgl : liste les téléchargements en tâche de fond, terminés ou en cours

Interagir avec une page Web

g : suit le lien sur la ligne courante
g2 : suit le deuxième lien sur la ligne courante
g$ : suit le dernier lien sur la ligne courante
^ : retourne à la page à la page Web précédente
i=xyz : remplit le formulaire sur ligne courante avec 'xyz'
i2=xyz : place le deuxième formulaire de la ligne courante avec 'xyz'
i2* : appuie sur le 2ème bouton de la ligne courante, habituellement envoyer ou remettre à zéro
i$* : appuie sur le dernier bouton de la ligne courante
i3 ? : affiche la description du troisième formulaire de la ligne courante
M4 : déplace cette page web en session 4 et revient à la page précédente
js : activation javascript (bascule)
xhr : permet le XHR (bascule)
rr : rafraîchit l'écran, afin de refléter les modifications javascript asynchrones

Client Mail

sm : envoie le courrier [le numéro de compte]
re : répond à un courriel
rea : répond à tous

Plugins

pb : joue le tampon (typiquement de l'audio)
pb.mp3 : joue le tampon courant comme un fichier mp3
pg : plugins activés (bascule)

Accès aux bases de données

ds=source,login,password : définit la source de données
sht : montrer les tables
shc : montrer les colonnes (et la clé primaire) de la table courante
shf : montrer clés de la table courante
fbc : chercher colonnes blob

Fonctions Edbrowse

<foo arg1 arg2 ... appel de la fonction foo, définie dans votre fichier .ebrc
X : fait de cette ligne la ligne courante, souvent employé dans un script

Deboguage

db3 : niveau de déboguage (de 0 à 7)
jdb : débugger javascript : point pour le quitter

Trucs pour éviter les numéros de ligne

Si vous découvrez ed, vous pouvez trouver ce programme malcommode.  Il semble vous obliger à utiliser des numéros de ligne, lesquels se modifient toujours en cours d'édition de texte. Cependant, les numéros de lignes sont rarement nécessaires en pratique. Voici quelques astuces pour s'en passer.

Pour lire le document entier, tapez ',p'.  Evidemment, un long document débordera de l'écran, cependant, il y a une manière facile de sauter d'écran en écran.  Commencer par 0z24 pour obtenir les 24 premières lignes.  Ensuite, la commande 'z' donnera les 24 prochaines, et les 24 prochaines, et ainsi de suite.  Vous pouvez employer 22, ou 23, ou ce qui semble approprié à votre écran. 
Une autre approche est de simplement taper la touche entrée, à plusieurs reprises, pour aller de ligne en ligne. 

Une fois habitué aux expressions régulières, vous pouvez sauter à n'importe quelle partie du document, même un grand document, dans un temps record, simplement en recherchant un fragment unique de texte.  Ceci vient avec la pratique.  Parfois je devine mal, et ma chaîne de recherche ne donne pas un résultat unique.  Je reviens quelque part au début du document et je dois recommencer la recherche.  Ceci ne se produit pas très souvent.  J'arrive habituellement au bon endroit en un ou deux essais. 

Pour marquer certaines lignes de texte, n'essayez pas de vous rappeler les numéros de ligne.  Employez la commande 'k' pour les marquer.  Par exemple, utilisez 'ka' et 'kb' pour marquer le début et la fin d'un bloc de texte, alors que 'kc' marque cette zone.  La commande pour aller à cette zone est alors 'a,'bm'c – sans numéro de ligne.  C'est le standard de ed.

Pour rechercher des liens sur une page Web, rechercher l'accolade droite.  Certes, vous pouvez tomber sur une accolade littérale dans le texte, mais ceci ne se produit pas très souvent.  Vous pouvez accéder à un lien particulier en tapant « /{Next}/g ».  De même, vous pouvez rechercher des champs de saisie en recherchant le signe plus grand que (« > ».  Ceci s'explique si vous connaissez le codage particulier des pages web. Et naturellement, des opérations multiples peuvent être codées dans un script, une importante fonctionnalité de Edbrowse. 

Liste de discussion

Il existe une liste de diffusion pour les utilisateurs d'Edbrowse et d'autres utilitaires en ligne de commande.  Vous pouvez vous y abonner en envoyant un courrier à commandline-subscribe@yahoogroups.com.

Wiki Edbrowse

Il existe un wiki dévolu à Edbrowse, incluant des trucs et astuces, et des exemples de fichiers de configuration. Voyez edbrowse.org pour plus d'informations.


Chapitre 3, l'Editeur

Différences importantes par rapport à /bin/ed

Certaines recherches/commandes de remplacement se comportent différemment sous cet éditeur.  C'est parce que les expressions régulières sont interprétées par la bibliothèque compatible avec Perl (pcre), plutôt que par la bibliothèque traditionnelle de regexp.  Par conséquent les expressions régulières ont plus de possibilités, et plus de puissance, que les expressions régulières utilisées par /bin/ed.  La syntaxe est également quelque peu différente.  Par exemple, Perl emploie des parenthèses nues là où Ed emploie des accolades échappées - pour délimiter les sections de texte satisfaisant aux conditions.  Et Perl utilise $1… $9 pour référencer les sous-chaînes trouvées, tandis que Ed utilise \1… \9.  En outre, le Perl emploie le suffixe « i » pour la recherche insensible à la casse, avec le suffixe traditionnel « g » pour indiquer le remplacement global sur tout le texte.  Il n'y a aucune raison de décrire toutes les nuances ici.  Veuillez lire la page de manuel de perlre « man perlre  » pour une description complète des expressions régulières sous Perl.  Une fois accoutumés à leur puissance et flexibilité, vous ne reviendrez jamais à Ed. 

Super ! Vous avez lu la page de man de perlre, et vous voilà de retour.  Voici quelques changements par rapport aux expressions régulières de Perl.  J'ai constaté que « (and) » est presque toujours considéré comme un littéral, comme en recherchant maFunction (), aussi j'ai inversé la signification des parenthèses échappées dans Perl.  C'est-à-dire, « (and) » maintenant matche les caractères littéraux, et « \ (and \) marque les sous-chaînes correspondant à l'expression.  Ces sous-chaînes sont alors référencées, dans le texte de remplacement, de $1 à $9.  De même, « | signifie le littéral |, » alors que « \| » signifie l'alternative.  Je change également la signification de « & » du côté droit, pour reprendre ce qu'il signifie dans Ed.  Je garde ^ $ .[] + * ? et {m, n} comme interprété par Perl, suivant la description de la page du manuel de perlre.  Cependant, si * est le premier caractère, il est traité comme le caractère étoile.  Ceci s'explique, par le fait qu'il n'y a aucun caractère précédent à modifier.  Certaines versions de ed font ainsi, mais pas toutes.  Mais je le trouve commode ; quand je veux remplacer * + ou ? , je n'ai pas besoin de les échapper, juste parce que ce sont des modificateurs.  De même, une parenthèse ouvrante est traitée comme un littéral.  Ces changements à regexp, pour ressembler à ed, peuvent vous gêner si vous êtes expert de Perl.  Désolé pour cela, mais je pense que ces changements facilitent l'utilisation de l'éditeur, surtout pour les utilisateurs de ed expérimentés.  Ci-dessous quelques différences supplémentaires entre ce programme et /bin/ed. 

Les sections suivantes décrivent de nouveaux dispositifs, totalement étrangers à ed.  Ceux-ci incluent l'édition simultanée de fichiers comme dans emacs et vi, la navigation dans un document HTML et « l'édition» des formulaires de saisie. 

Equilibrage des parenthèses

La commande B majuscule intéresse les programmeurs, et ne sera pas probablement pas employée par les autres utilisateurs.  Elle localise la ligne avec une parenthèse, une accolade, ou un crochet.  Exemple:
  
if(x == 3 &&
  y == 7) {
    printf("bonjour\n");
  } else {
      printf("monde\n");
      exit(1);
  }

La commande B majuscule, sur la deuxième ou dernière ligne, se déplace à la ligne du milieu « } else { », laquelle équilibre l'accolade ouvrante.  Sur la première ligne, B se déplace à la deuxième ligne, qui équilibre la parenthèse ouverte.  La deuxième ligne équilibre {, plutôt que ), parce que les accolades ont la priorité sur les parenthèses, qui ont la priorité sur les crochets.  Vous pouvez forcer un match de parenthèses par « B) », laquelle revient de la ligne 2 à la ligne 1. 

La commande B sur la ligne du "else" est ambiguë - je ne sais pas s'il faut regarder en arrière ou vers l'avant.  Tapez plutôt « B{« ou « B} ». 

Vous pouvez explicitement équilibrer le <>, pour les tags multilignes de HTML, ou «`», utilisé dans des certains préprocesseurs tels que m4. 

Des commentaires ou des chaînes littérales contenant des ponctuations ouvrantes/fermantes vont faire sortir Edbrowse de ses gonds. si vous êtes l'auteur du source, essayez d'éviter des parenthèses dans les commentaires, ou bien équilibrez les parenthèses dans un commentaire.

static char openstring[] = "{block"; /* parenthèse } fermante ici dans le commentaire */

Changement de contexte

Ce programme permet l'édition simultanée de fichiers multiples, et autorise le transfert de texte entre eux. C'est semblable aux terminaux virtuels (Linux), où vous changez de session par l'intermédiaire d'alt-f1, alt-f2, jusqu'à alt-f6.  Ici, vous basculez sur une session d'édition différente par l'intermédiaire des commandes « e1 », « e2 », jusqu'à « e6 ».  Notez que « e 2 » (avec un espace entre e et 2) édite le fichier dont le nom est « 2 », tandis que « e2 » (sans espace) bascule sur la session 2.  De même, vous pouvez lire le contenu de la session 3 dans le tampon courant en tapant « r3 », et vous pouvez sauvegarder le tampon courant dans la session 5 par l'intermédiaire de « w5 ».  La dernière commande vous avertira si la session 5 existe déjà, et vous avez modifié son contenu sans l'avoir sauvegardé.  En d'autres termes, vous êtes sur le point de perdre votre travail en session 5.  Taper « h » vous expliquera : « 'w' attendu sur la session 5 ». 

Si vous quittez une session, vous allez à la prochaine session d'édition valide, revenant à la session 1 si besoin.  La sortie du programme s'effectue lorsqu'on quitte la dernière session. 

Attention, le programme contient un bogue concernant la commande « undo » (annuler).  Si vous changez de session, puis revenez en arrière, vous ne pourrez pas annuler vos derniers changements.  On peut penser qu'il est facile de corriger cette bogue, mais c'est plus subtil qu'il n'y paraît, je n'y ai donc pas touché.  J'ai simplement voulu vous en avertir.  Assurez-vous que tout est correct avant de changer de session. 

Voyons un exemple de copier/coller.  Vous éditez le fichier « essai » en session 1, et vous vous rendez compte qu'un paragraphe du fichier « toto » s'adapterait parfaitement bien ici.  Voici comment cela pourrait se présenter.  Les lignes commençant par « < » sont l'entrée de l'utilisateur, et des lignes commençant par « > » sont les réponses du programme.  Le signe « # » représente mes commentaires, qui normalement n'apparaîtront pas au milieu d'une ligne. 

< e2 # bascule sur la session 2
> new session # nouvelle session
# contrairement à ed, la commande « r » ne crée pas un nouveau fichier, 
# même si le tampon est vide. 
# ainsi, « r toto» est plus sûr que « e toto ». 
# après tout, nous ne voulons pas modifier toto, 
# nous voulons juste y voler quelque chose. 
< r toto
> 28719 
< /start/ 
> ceci est le début du joli paragraphe que vous voulez copier. 
< 1,-d # on n'a pas besoin de ce qu'il y a avant 
< /end/ 
> ceci est la fin du joli paragraphe que vous voulez copier. 
< +,$d # on n'a pas besoin de ce qu'il y a après 
< e1 
> essai 
< r2 
> 3279 # taille du texte lu de la session 2 
< q2 #, on fait le ménage, en se débarrassant de la session 2 
< W # sauvegarde de essai, avec le nouveau paragraphe inclus 
> 62121 

Ci-dessous, comment transférer une portion de texte d'un fichier à un autre

< e2 
> new session # nouvelle session
< e toto # cette fois je vais modifier le fichier
> 28719 
< /start/ 
> c'est le début du joli paragraphe frais que vous voulez déplacer. 
< ka # marque le paragraphe 
< /end/ > ceci est la fin du joli paragraphe que vous voulez déplacer 
< kb 
< 'a,'bw3 
> 3279 
< 'a, 'bd 
< w # sauvegarde toto sans le joli paragraphe
> 25440 
< q 
> no file # aucun fichier, on est maintenant en session 3 
< e1 
> essai # de retour en session 1 
< r3 
> 3279 
< q3 on arrête la session 3, bien qu'étant toujours en session 1 
< w # sauvegarde de essai, avec le nouveau paragraphe inclus 
> 62121 

La commande « e », indique la session courante, au cas où vous l'oublieriez.  Elle ressemble à la commande « f », qui indique le fichier courant. 

Utilisation

Tapez « Edbrowse -h » pour lire les conseils d'utilisation.  Vous verrez les options « -f », « -fm », et « -m »,utilisées de différentes manières.  Ignorez-les pour l'instant.  Ces trois options lancent Edbrowse en tant que client interactif de courrier.  Nous y reviendrons. 

L'option « -dx » place le niveau de déboguage à x, où x est entre 0 et 9.  Le défaut est « -d1 », qui affiche les tailles des fichiers lorsqu'ils sont lus ou sauvegardés.  Certains préfèrent « -d2 », qui affiche l'URL lorsque vous allez à de nouvelles pages Web ou remplissez des formulaires en ligne.  À moins que vous soyez un développeur, vous n'irez probablement pas plus haut que « -d3 ».  Rappelez-vous, le niveau de déboguage peut être modifié en cours en employant la commande « dbx » (x entre 0 et 9). 

L'option « -e » force Edbrowse à quitter en cas d'erreur.  Ceci est habituellement employé par des scripts de traitements par lots.  S'il y a un problème, vous ne voudriez pas continuer ainsi en exécutant le reste des commandes de Edbrowse. 

Utilisez « -c » pour désactiver et éditer, le fichier de configuration « .ebrc ».  (Ce fichier de config sera décrit plus tard).  Pourquoi le faire? Supposez que vous avez modifié ce fichier, avec une erreur de syntaxe, de telle sorte que Edbrowse ne puisse même pas démarrer.  Vous ne pourriez plus employer Edbrowse pour fixer votre fichier de configuration.  Naturellement vous pourriez renommer le fichier de configuration, fixer l'erreur, et revenir en arrière ; mais alors vous pourriez découvrir une autre erreur de syntaxe, et ainsi de suite.  Au lieu de cela, l'option « -c » permet d'éditer le fichier de configuration directement.  Il est automatiquement chargé dans le tampon 1.  Noter que « -c » doit être la première option. 

Les arguments sont les fichiers à éditer.  Edbrowse lit ces fichiers dans les sessions correspondantes, et vous commencerez en session 1.  S'il n'y a aucun argument, vous commencez en session 1, mais il n'y a aucun texte et aucun fichier associé. 

Si vous aimez ce programme, et vous voulez qu'il soit votre éditeur principal, vous pouvez placer l'alias Unix suivant :

alias e= " /usr/bin/Edbrowse "

Si vous le faites, vous pouvez employer «e nom_de_fichier», pour éditer un nouveau fichier, que vous soyez dans Edbrowse ou dans le shell Unix.  Très commode. 

Caractères binaires

À tout moment, même lorsqu'on tape un nom de fichier, le programme balaye l'entrée à la recherche de codes binaires.  Employez la séquence triple « ~bd » pour écrire le caractère non-ASCII 0xbd, valeur unicode de « 1/2 ».  En utf8, vous devrez entrer ~c2~bd pour obtenir 1/2.  De même, si vous listez une ligne, avec la commande « lna », le caractère « 1/2 » est affiché ~c2~bd.  Tout ce qui non ASCCI et la plupart des caractères de contrôle sont entrés et affichés de cette manière.  La tabulation et le retour-chariot doivent être tapés directement au clavier.  Tabulation et retour arrière sont affichés respectivement « > » et « < ».  Si la ligne ci-dessous est tapée,

« Hello~07 ~x is ~bd of y »

Et ensuite listée, vous verrez ce texte, mais il y a un bip sonore et « 1/2 » à l'intérieur.  Le ~x n'est pas codé , parce que x n'est pas un caractère hexadécimal.  Si vous voulez forcer un ~, même s'il y a des caractères hexadécimaux qui suivent, employez deux t