Emacs is a text editor whose most prominent feature is the ability of users to programmatically customize nearly all aspects of it. This is facilitated though a special dialect of the Lisp programming language, called Emacs Lisp, created specifically for use in the Emacs editor.
There are a multitude of extensions written in Emacs Lisp that add to Emacs functionality. These extensions include editing facilities for specific programming languages (similar to what an IDE might provide), e-mail and IRC clients, Git frontends, games such as Tetris and 2048, and much more.
Many aspects of the Emacs editor can be used with no programming knowledge. Users looking to programmatically customize Emacs, however, will find certain features of the Emacs Lisp language such as the (self-)documentation system incredibly helpful and accommodating.
External references:
Sacha chua's site is a very good place to find more learning resources on Emacs.
a. For those who need a more visual appeal on the Emacs learning path
b. For those who would like to get the key bindings easily
Wikemacs is based on mediawiki, and thus has structured content, browsable categories and such. Start exploring !
Starter kits enable new users to start using Emacs quickly and avoid some of the setup hurdles that come from a mature system like Emacs -- one that has grown through decades of evolution and naturally has some historical quirks. Experienced users also benefit from having a kit configuration of extensions that are curated by others.
It requires considerable effort to maintain a set of packages and settings that will continue to work well together as packages improve (or bit-rot) over time. Many Emacs users don't desire to do this maintenance, so they turn to starter kits. Assembly and maintenance of a kit bears a small-scale resemblance to management of a Linux distribution.
Some starter kits are themed; e.g., for specific programming language environments, or music creation, or emulation of another editor. Others aim to provide a kitchen sink of bundling comfortable/productive modules for as many situations or languages as possible.
Most starter kits have provisions for extension and customization. A user will override particular key bindings and settings, and be able to add packages that are not yet provided.
There are many starter kits available. In theory, anyone who
publishes their ~/.emacs.d
has created one. But a handful have
become popular and well maintained by one or more individuals. Some
examples (in order of subjective popularity based on Github stars) include
Spacemacs,
Prelude,
Purcell,
Emacs Starter Kit,
Magnars, and
Emacs Live. More details are
listed in the Examples section above and more starter kits are listed on this wiki.
A notable "micro-kit" is Sane Defaults, providing a handful of settings to remove some of Emacs' default surprise-to-newcomers behaviors.
Although there is some controversy around using starter kits, for many the benefits can far outweigh the cost figuring out how to harmonize a dynamic Emacs setup. Arguments against starter kits usually pertain to: users being unaware of some of the nuances and native behavior of Emacs, being difficult to debug, and even making Emacs look more like a foreign editor (Spacemacs).
Magit is an interface to the version control system Git, implemented as an Emacs package. Magit aspires to be a complete Git porcelain. While we cannot (yet) claim, that Magit wraps and improves upon each and every Git command, it is complete enough to allow even experienced Git users to perform almost all of their daily version control tasks directly from within Emacs. While many fine Git clients exist, only Magit and Git itself deserve to be called porcelains.
Note that Magit can interface itself to Github (with Magithub, see also Github integration in Emacs) and that Emacs also has packages to work with Gitlab, Bitbucket and others.
Emacs is described as a self-documenting editor, and provides lots of information on how to use it within the editor itself. Amongst the entry points to this documentation is a tutorial, information about what functions is available related to a given topic,a information about the bindings between keystrokes and functions.The documentation is accessed using the prefix C-h, i.e. Ctrl h, or F1, with a list of further choices available by pressing ?
Org is a mode for keeping notes, maintaining TODO lists, and project planning with a fast and effective plain-text system. It also is an authoring system with unique support for literate programming and reproducible research.