Textový editor ed

Textový editor ed má dva módy. Vkládací a příkazový (normální). V normálním můžeme adresovat řádky, provádět různé úpravy textu (mazání, náhrady) a vstupovat do vkládacího režimu.

Nejzákladnější operace

  • q ukončí ed
  • w uloží soubor (uložit jako: w file.txt)
  • i vloží nový řádek nad aktuální
  • a vloží nový řádek pod aktuální
  • tečka na samostatném řádku ukončí vkládací mód
  • e file.txt otevře soubor file.txt
  • vícenásobné stisknutí klávesy enter umožňuje (hloupé) listování souborem
  • 4 skočí na řádek číslo čtyři
  • -3 skočí o tři řádky zpět
  • +5 skočí o pět řádek vpřed
  • c vymaže aktuální řádek a skočí do vkládacího módu
  • d zahodí řádek
  • 1,$p vypíše celý soubor
  • 3,8p vypíše řádky 3 až 8

Ukázka použití

ed screencast

Použité příkazy ve screencastu:

cd /tmp
mkdir xaxa
cd xaxa
ed
i
#include <unistd.h>

int main(void) {
}
.
w xaxa.c
q
cc -o xaxa xaxa.c
./xaxa
ed xaxa.c
1,$n
3
a
write(1, "HW\n", 3);
.
w
q
cc -o xaxa xaxa.c
ed xaxa.c
/write
c
printf("HW\n");
.
?include
c
#include <stdio.h>
.
w
q
cc -o xaxa xaxa.c
./xaxa

Variace na manuálové stránky

  • red je restricted ed, který nesmí vyjít ven z aktuálního adresáře a nesmí vykonávat shellové příkazy
  • Obecná syntaxe příkazů: [adresa [,adresa]]příkaz[parametry]
  • Adresace
    • . adresa aktuálního řádku
    • $ adresa poslední řádky v bufferu
    • n n-tá řádka bufferu
    • - předcházející řádka
    • + následující řádka
    • ^n n-tá předcházející řádka
    • +n n-tá následující řádka
    • , alias pro 1,$ (celý soubor)
    • ; alias pro .,$ (od aktuální řádky do zbytku souboru)
    • /re/ následující řádka obsahující regulární výraz
    • ?re? předcházející řádka obsahující regulární výraz
    • 'x řádka označená značkou x (dostupné značky → [a-z])
  • g/string/ vytiskne všechny řádky obsahující string
  • Příkazy
    • a připojí text za aktuální řádku
    • c změní řádek
    • d smaže řádek
    • e edituje soubor (e file.txt)
    • e !cmd edituje výstup příkazu cmd
    • E edituje soubor bezpodmínečně (zahodí aktuální buffer)
    • f změní název bufferu (f /tmp/xaxa)
    • 1,$g/^$/d smaže prázdné řádky
    • 1,$g/re/ pro každý řádek odpovídající vzoru umožní uživateli jeho editaci
    • H zapne trvalé zobrazování chybových hlášek v rozšířeném tvaru
    •  h vysvětlí poslední chybu
    •  i vloží text do bufferu před aktuální řádek
    • j provede spojení řádků
    • kx označí řádek značkou x (dostupné značky → [a-z])
    • m přesune řádek/řádky (42,$m0 přesune od řádku 42 do konce bufferu všechny řádky na začátek bufferu)
    • n vytiskne řádek s jeho číslem (,n vytiskne buffer s čísly řádků)
    • vytiskne řádek
    • P zapne/vypne prompt
    • q vypne editor
    • Q vypne editor a zahodí buffer
    • r přečte soubor (0r /home/user/dev/license vloží na začátek souboru obsah souboru /home/user/dev/license)
    • r !cmd vloží do bufferu výstup cmd
    •  s/old/new/ nahradí old za new (flagy g a n)
    • s opakuje poslední substituci
    • t kopíruje řádky
    • u krok zpět (dva kroky zpět = redo)
    • 1,$v/re/cmd na řádcích, které neodpovídají regulárnímu výrazu jsou provedy příkazy (edu) cmd
    •  V jako v ale interaktivní (jako G)
    • w uloží buffer do názvu bufferu (f) na disk
    • wq uloží a zavře
    • w !cmd uloží buffer jako standartní vstup příkazu cmd (w !less přepošle aktuální buffer do lessu)
    • x vloží řádek
    • y zkopíruje řádek
    • !cmd vykoná příkaz (!make spustí make)
  • Pokud ed dostane SIGHUP, pokusí se uložit obsah bufferu do souboru ed.hup
  • Při selhání příkazu kvůli neuloženému bufferu se opakováním příkazu vynutí akce se zahozením změn v bufferu (q a znovu q)
  • Pokud během běhu edu nenastane žádná chyba (ani například neznámý příkaz), vrátí ed návratovou hodnotu 0, jinak 1 nebo vyšší.
  • ed lze velmi dobře využívat ve skriptech
/home/dum8d0g/www/martin.kopta.eu/trash/wiki/data/pages/software/ed.txt · Poslední úprava: 2010/05/01 10:07 autor: martin
CC Attribution 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0