Wie schreibe ich einen Editor in C?

Post Reply
Message
Author
bk

Wie schreibe ich einen Editor in C?

#1 Post by bk »

Ich möchte als Übung und rein interessenshalber einen sehr einfachen Editor in C schreiben. Das erste Hindernis, auf das ich gestoßen bin, ist, dass ich keine einzelnen Zeichen einlesen kann, ohne dass ich Enter drücken muss. Gibt es etwas anderes außer getchar(), bei dem es auch ohne Enter funktioniert?
Für sonstige Tipps rund ums Editor schreiben wäre ich sehr dankbar. Gibt es schon irgendwelche Bibliotheken, die mir das Editor schreiben erleichtern könnten? Der Editor soll übrigens nur für die Konsole sein und keine grafischen Elemente haben.
Gibt es vielleicht schon einen sehr einfachen Editor, der ähnlich wie vi ist und dessen Quelltext verfügbar ist. Mit sehr einfach meine ich wirklich sehr einfach und es sollten nur ein paar Tausend Zeilen sein, am besten weniger als 2000, damit die Sache für einen Anfänger wie mich überschaubar bleibt.
Vielen Dank im Voraus.

Descartes

Re: Wie schreibe ich einen Editor in C?

#2 Post by Descartes »

Hmm ein kleiner Editor ?
Wie wäre es mit...

e3
<a href="http://www.sax.de/~adlibit/" target="_blank"><!--auto-->http://www.sax.de/~adlibit/</a><!--auto-->

GNU ed
<a href="ftp://ftp.gnu.org/gnu/ed/" target="_blank"><!--auto-->ftp://ftp.gnu.org/gnu/ed/</a><!--auto-->

bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Re: Wie schreibe ich einen Editor in C?

#3 Post by bakunin »

Hi!

Für Programme, jene die speziellen Eigenschaften von Terminals ansteuern, gibt es die Curses-Bibliothek bzw. unter den GNU-Systemen die Curses-Implementierung "ncurses". Als kleinen Editor würde ich spontan GNU nano empfehlen (www.nano-editor.org), allerdings am Besten eine ältere Version, da die aktuellen etwas größer sein dürften.

Cheers,
GNU/Wolfgang

bk

Re: Wie schreibe ich einen Editor in C?

#4 Post by bk »

Danke für die Tipps!
Verwendet vim auch ncurses oder gibt es auch noch etwas anderes?
Ist es auch möglich, das ganze mit ganz normalem Ansi C zu realisieren?

bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Re: Wie schreibe ich einen Editor in C?

#5 Post by bakunin »

Hi!

> Verwendet vim auch ncurses oder gibt es auch noch etwas anderes?

Vim verwendet ncurses oder eine andere Curses-Implementierung. Oder Gtk+. Oder Xt(?). Oder die Bibliothek vom AmigaOS, von MacOS, von Windows oder sonstwas. Was vim bei dir verwendet, verrät dir das Programm ldd.

> Ist es auch möglich, das ganze mit ganz normalem Ansi C zu realisieren?

Du meinst ohne weitere Bibliotheken? Ja, das ist wohl prinzipiell möglich, wenn man direkt Terminal-Kontrollsequenzen ausgibt. Dann ist man aber entweder auf einen bestimmten Terminal-Typ festgelegt oder musst Curses neuerfinden. Beides ist blödsinnig.

Cheers,
GNU/Wolfgang

vyper
Posts: 19
Joined: 27. Feb 2002 23:12

Re: Wie schreibe ich einen Editor in C?

#6 Post by vyper »

Eine Alternative zu ncurses ist s-lang. Diese Bibliothek wird standardmässig vom Midnight Commander und zwingend von slrn verwendet (leider).

Im Allgemeinen würde ich aber dennoch ncurses empfhlen.

ANSI C definiert nur die Ein- und Ausgabe von Bytes in Streams, von denen einer stdout ist (eben die Konsole). Dinge wie Cursorpositionierung, Farben, etc. werden davon nicht unterstützt. Dazu benötigt man zusätzliche Libraries.

Post Reply