This article is obsolete, the screenshots are gone.
We recommend visiting the Blog about emacs in Spanish: http://www.blackhats.es/wordpress/
Hi, this is my first post on Taringa and since I saw some GNUers around I would like to talk about a GNU program that is for me one of the most brilliant packages free software ever produced. The post is quite nerdy and above all aimed at programmers who like those complex, almost endless programs.
Well, I started using Emacs about 6 or 7 years ago. Back then I was getting into the world of GNU/Linux, and almost every distribution shipped such a program. Little by little I kept using it and digging into it, attracted by the mythical side of the story (the first free program Richard Stallman designed) and because I was starting to program.
There are tons of resources for learning GNU/Emacs; in my opinion the best ones are its official manual, its built-in help, and the Emacs Wiki. That is why I do not want to get heavy about things you will find elsewhere; I prefer to tell you about the features it has that I liked most about this editor, and that in general you do not find in other editors (or at least not all of them together).
Applications
Emacs has thousands of applications developed by the user community. You might naively think we are talking about simple applications given that it is an editor, and it is true that this was the original idea of its extension language, writing programs that help with the editing task. But the extension language and the wicked design of Emacs were so convenient that the community started writing programs of every kind in the Emacs Lisp language.
The result is incredible, in Emacs we have several mail clients, programmable calculators, algebra systems, news group clients, web browsers, chat clients (IRC, jabber, MSN), games, RSS readers, file managers, image and PDF viewers, video and sound editors, and an endless number of wrappers or modes for heaps of common console applications (debuggers, compilers, etc).
Programming
This is perhaps where Emacs shines most. Emacs has all the traditional features of a good programming editor: syntax highlighting, automatic indentation, search and replace of regular expressions, macros, etc. But on top of that it has an arsenal of modes (applications) for each particular language. Without doubt, the ones with the most tools are the C language and Lisp.
For C we can dive through the program using tags, debug interactively (as in Eclipse or Visual Studio), get information about function prototypes, see syntax errors in real time with Flymake, autocompletion, interact with version control systems like CVS or SVN, choose among heaps of indentation styles (KERNEL hacker, GNU hacker, K&R, etc.), apply patches, compare files with wrappers for diff, and a whole lot more.
But besides, Emacs comes with, or you can get from its wiki, modes for almost any language you come across: PHP, Haskell, Smalltalk, C++, Java, Cobol, Python, JavaScript, SQL, or markup languages like HTML, Latex, TeX and a very long etcetera.
In interpreted languages the modes almost always let us evaluate the expressions right from the editing place, very much like the way most Smalltalk IDEs work.
Besides, Emacs has a built-in Lisp interpreter which is the heart of so much extensibility; 90% or more of the editor is programmed and extended with this language, which is interactive.
Editing
Here Emacs goes overboard; whenever I have to switch editors at work what I miss most is the number of Emacs editing commands I have engraved in my spine.
Once you have spent a few months editing with Emacs, the first thing you notice is the agility and speed with which you move around the file. All the movement and navigation commands are laid out in the centre of the keyboard; the philosophy is that going all the way to the little arrows, page up or page down is a bloody waste of time. And you have commands for any kind of movement you can think of, forward a word, backward, a paragraph, a page, a line, a function, an expression, end of document, start, sentences, and without doubt incremental search (Firefox style) also takes the prize as a command for navigating the document. When you master it you look like a pinball bouncing at full speed through the texts.
Rectangular editing and macros are two other incredible functions while we edit. Rectangular editing lets you cut text tabulated in columns (as UltraEdit or Excel do). At first you do not get much of an idea of how many uses they have, but if you work with markup languages like HTML you will find yourselves needing this feature a whole lot. And macros the same, you start recording with F3, work on one line (doing regular expression searches, editing or whatever you can think of), stop recording with F4, and that is it, you can apply it to every line of the document. Just knowing that you use it in a whole lot of situations, but you can also use counters, registers and little tricks that make the macro system impressive for avoiding any repetitive task. Sometimes at work everyone is left standing there like idiots watching how I macro client data files in a flash with Emacs, when before they did it by hand or spent a whole day writing some Perl program.
We also have an ASCCI drawing editor in the best paint style with all its functions (circles, squares, lines, freehand pencil, etc). It may look like a whimsical and pointless program, but when programming you can embed in the comments of your programs the drawing of data structures such as queues, lists, of simple flow diagrams that make sections of the program much simpler to understand.
You may think that is a whole lot of things to learn, especially if you only want to program in one particular language, and that is true. What happens is that whatever you learn for one particular language will serve you for thousands more, and every time you switch language (even just to edit a bash script) you will keep feeling infinitely more productive and comfortable in your editor than if, for example, you had to switch again to an IDE for some specific language X.
The help
** The documentation and help system of the GNU distribution of Emacs is one of the most rigorous you will find. Everything is documented, and it is accessible in tons of ways. You can browse the official manual (which is in Info format) from inside emacs. Consult it through queries, ask about functions, ask what a particular keyboard shortcut does, or which shortcut runs such a command. As soon as you enter Emacs you are also offered an excellent tutorial that explains the essentials for moving around a document, finding files, and all the basic editing operations.
Understanding the help system and making the most of it is one of the first things that anyone wanting to get into Emacs should do. It is perhaps the first complexity you will come across, but after mastering all the help options you become very self sufficient; you will even rarely turn to the internet to ask something, you will find almost everything inside Emacs.
As a daemon
In the latest version of Emacs from CVS, you can start it as a daemon (service). That means we can have a single version running without being attached to any client, and open in a flash different clients that share the whole session we have open; it happens to me that sometimes I run the same emacs session for 1 month and access it from work or from the notebook.
** End
Well, I presented a small subset of the thousands of things you can do with Emacs and above all the ones I like most. Later on I will try to grow the post a bit, to comment on other interesting things. Mostly I talked about technical features, but if you dig a little you will see the amount of mystique and history this editor has (for example that one of the first emacs-style editors was programmed by the creator of Java, or that one of the most important forks of the editor was written by the person who would later create the Netscape browser, or that it is the favourite editor of the author of The Art of Computer Programming, Donald Knuth).
Anyway, I hope at least to hook someone and that the post encourages you to use this excellent program.
Cheers!
Source: http://www.taringa.net/posts/linux/2138611/GNU_Emacs-especial-para-nerds.html