----------------------------------------


 
          BSD-DK / SSLUG / DKUUG


	Editor Celebrity Deathmatch


	           ed(1)


	    Poul-Henning Kamp


                2004-12-16
 

----------------------------------------
    
  Systemkrav (hardware):


    CPU:
	Minimum PDP11/20.

    Lager:
	Minimum 56 kilobyte.

    Terminal:
	ASR33 eller nyere.

    Luxus:
	Diskdrev.
	Video Display Terminal


----------------------------------------
    
  Systemkrav (software):



    Second Edition UNIX (eller nyere)


    ed(1) er skrevet i det 
    ultraportable 'C' sprog.


    Kan porteres til alle systemer
    der har en C-compiler
    (evt. krydskompilering).



----------------------------------------

  ed(1) - De forskellige varianter


  1.  Original AT&T UNIX ed(1).

      (Primært for fantiske purister.)


  2.  BSD (Open Source) ed(1).

      (100% kompatibel.)


  NB: Vogt dem for efterligninger!
 


----------------------------------------

  ed(1) - Download & Installation





      % time which ed
      /bin/ed
      0.01 real  0.00 user 0.00 sys
      % 







----------------------------------------

	  Brugerinterface

   * Brugere lærer hurtigt det
     moderne, systematiske,
     konsistente og intuitive
     brugerinterface.

   * Brugeren har fuld kontrol
     over alle grafiske elementer.

   * Fuld support for "accessibility"
     (braille, voice synthesis,
     voice recognition).

   * ed(1) giver ikke museskader.


----------------------------------------

	  Brugerinterface


addresse[,addresse]kommando[argumenter]













----------------------------------------

	      Addresser


  /reg.xp/ -- fremad regexp
  //	   -- gentag sidste regexp
  ?reg.xp? -- bagud regexp
  23	   -- linienummer
  .	   -- nuværende linie
  -3	   -- relativt linienummer.
  +3	   -- ... den anden vej.
  -	   -- forrige linie (= -1)
  +	   -- forrige linie (= +1)
  $	   -- sidste linie




----------------------------------------

	Overordnede kommandoer

  e [<filename>]	-- edit
  E [<filename>]	-- edit!
  f [<filename>]	-- filename
  h			-- last error
  H			-- all errors
  P			-- prompt
  q			-- quit
  q			-- quit
  Q			-- quit!
  r [<filename>]	-- read
  w [<filename>]	-- write




----------------------------------------

	Rettekommandoer

  a<text> 		-- append
  c<text>		-- change
  d 			-- delete
  g/<regexp>/<cmd> 	-- "global"
  i<text>		-- insert
  j			-- join
  l			-- list
  m<address>		-- move
  n			-- numbers
  p			-- print
  s/<regexp>/<regexp>/	-- substitute
  z[<num>]		-- "Zcroll"


 
----------------------------------------

        Et simpelt eksempel:


	# ed /etc/rc.conf
	819
	$i
	sshd_enable=YES
	ifconfig_fxp0=DHCP
	.
	w
	854
	q
	# reboot




----------------------------------------

             Substitution



 # env EDITOR=ed vipw
 1633
 /root/s/:[^:]*:/::/p
 root::0:0::0:0:Charlie &:/root:/bin/csh
 w
 1620
 q
 #





----------------------------------------

	 Reg(ular) Exp(ressions)

  ^	    -- start af linie
  $	    -- slut af linie
  .	    -- vilkårligt tegn
  [chars]   -- klasse af tegn
  [^chars]  -- negativ klasse af tegn
  *	    -- gentag forrige 0..X
  \c	    -- fjern magi fra tegn c
  c	    -- tegn c

  /:[^:]*:/ -- ':' + et antal tegn
	    -- forskellige fra ':'
	    -- og endelig et ':'.

  /P[ao][uv]l.*/

----------------------------------------

  ed(1)...

      Findes på alle UNIX systemer.

       Virker i single-user mode.

	Uafhængig af:

	    terminalemulering
	     filindhold/format
	       hjælpefiler
	        flowcontrol
	         hastighed
	          keyboard

    Hvergang Perikles, hvergang...

----------------------------------------

         Software kvalitet

# for i in /usr/src/bin/ed/ \
> 	/usr/src/contrib/nvi/ \
>	/usr/ports/editors/emacs20
> do
>	cd $i
>	printf "%-28s " $i
>	find . -type f -name '*.[ch]' |
>	xargs cat | wc -l
> done

/usr/src/bin/ed/               3493
/usr/src/contrib/nvi/         54751
/usr/ports/editors/emacs20   259429


----------------------------------------
