G
is a portable general purpose programmable
text editor with calculator and macro facility.
G
is a general purpose programmable text editor with a long history, originally written in the B programming language for GCOS‑3/TSS, running on GE/Honeywell 6000-series mainframe systems.
-
G
combines features from many sources. For example, the macro language was derived from the ICL George mainframe editors, regular expressions (among other things) come from UNIX vi, the screen editor keystrokes are similar to WordStar, and the mathematical syntax is inspired by the C programming language. -
The macro language is Turing complete, offering loops, conditionals, and arithmetic. Complete
G
macro programs or individual commands can be executed from the command line, from an edit buffer or file, or from the home area at the top of the screen (interactively, so that the effects can be seen). In many cases,G
macros can do the work of traditional UNIX text processing tools such assed
,awk
,cut
, andfmt
. -
G
can operate as either a line editor or as a visual screen editor, similar toex
/vi
on UNIX systems. -
The
G
language uses a conceptually simple two-file transcription (copy/edit) paradigm, which is transparent for the casual screen editor user. -
G
is designed to be as efficient as possible, to be highly portable, and to enable manipulation of large files.G
has a very fast startup time and utilizes little memory compared to other applications - approximately 130 KiB for the standard build, 112 KiB for the Tiny build, and 32 KiB for the line-mode editor (measured using the Massif heap profiler on an AMD64 system running GNU/Linux). -
G
provides a more flexible way of viewing files than commands likeTYPE
,pg
, ormore
. -
Although
G
is not intended to be a fully featured word processor, it does have text and paragraph formatting abilities and can easily be used to produce simple documents.
-
G
can be built for DOS, Windows, OS/2, Haiku, and many UNIX systems. IBM AIX, PASE for IBM i, Darwin, FreeBSD, NetBSD, OpenBSD, Solaris, illumos, and Linux are regularly tested and fully supported. -
A Curses library is required on UNIX systems. AT&T System V Curses, XPG4/XSI Extended Curses, PdCurses, PdCursesMod, NetBSD Curses, and NCurses are known to work.
-
A C compiler is required. Oracle Developer Studio, LLVM Clang, AMD AOCC, GNU GCC, IBM XLC, IBM OpenXL, Intel ICX, Intel ICC, DJGPP, Microsoft C, MSVC, SGI MIPSpro, Watcom C/C++, OpenWatcom V2, Borland C, and PCC are currently known to work.
-
The included
GNUmakefile
can be used if GNU Make (version 3.81 or later) is available. GNU Make is helpful, but is not required to buildG
.
- Most users of UNIX-like operating systems can build
G
by simply invoking GNU Make (usually available asgmake
ormake
) without any additional options or configuration. The conventionalmake
targets are available, e.g.clean
,strip
, etc. - The following options affecting compilation may be set in the shell
environment or on the
make
command-line, for example,make OPTION=1
:CC
: Overrides default C compiler selection, e.g.CC=clang
LTO=1
: Enables link-time optimizationLGC=1
: Enables link-time garbage collection (reducing binary size)OPTFLAGS
: Overrides default optimization flags, e.g.OPTFLAGS=-Oz
V=1
: Enables verbose compilation messagesNOSSP=1
: DisablesFORTIFY_SOURCE
and compiler stack protectionsSTATIC=1
: Attempt statically linking all required librariesDUMA=1
: Enables support for the DUMA memory debugging libraryDSTATIC=1
: Attempt statically linking DUMA library (needs GNU ld)DEBUG=1
: Enables debugging code (for development or troubleshooting)LINE_G=1
: Builds only the line-mode editor (no curses library needed)TINY_G=1
: Disables features for lower memory use (default for PC DOS)FULL_G=1
: OverridesTINY_G
default (enables a fully-featured build)CURSESLIB
: Overrides curses library selection, e.g.-lcurses -ltinfo
COLOUR=0
: Disables colours (required for some older curses libraries)
- Some less common options may be undocumented, and some option combinations may not be valid.
- For practical examples and complete details, review the
GNUmakefile
and test script.
-
Historically,
G
was available for many systems, including Amdahl UTS/V, AT&T System V, Berkeley (BSD) UNIX, BSDI BSD/OS, Commodore Amiga UNIX (AMIX), DG/UX, Honeywell GCOS/TSS, HP‑UX, IBM OS/2, ICL CDOS, ICL DRS/NX, JRG/Everex ESIX, Microsoft Xenix, MINIX, MWC Coherent, NCR SVR4 MP‑RAS, Novell/SCO UnixWare, Pyramid DC/OSx, Reliant UNIX/SINIX, SCO OpenServer, Sequent DYNIX, SGI IRIX, SunOS 3/4, Tulip SVR3, and DEC VAX/VMS. -
The
GNUmakefile
contains information relevant to buildingG
on many of these older systems.
Future plans for G
:
- Overhauled documentation
- Improved online help viewer
- Proper Windows console support
- VGA-mode DOS port
- Dynamic resizing
- UTF-8/multibyte support
- Binaries via GitHub and GitLab releases
G
for IBM PC DOS (MS-DOS, PC-DOS, DR-DOS, PTS-DOS, FreeDOS, etc.)G
V4.7.4β for PC DOS, 16-bit 8086, Real mode, Tiny build, G-CursesG
V4.7.4β for PC DOS, 16-bit 8086, Real mode, Full build, G-CursesG
V4.7.3 for PC DOS, 16-bit 80386, Real mode, Fast-CursesG
V4.7.3 for PC DOS, 32-bit 80386, Protected mode, DPMI, G-CursesG
V4.7.3 for PC DOS, 32-bit 80386, Protected mode, DPMI, PdCursesMod
G
for IBM OS/2G
V4.7.4β for OS/2, 16-bit 80286, Protected mode, OS/2 console, PdCursesModG
V4.7.4β for OS/2, 32-bit 80386, Protected mode, OS/2 console, PdCursesMod
G
for Microsoft WindowsG
V4.7.3 for Windows, 32-bit i686, Win32 GUI, PdCursesMod