Zim looks, feels, and almost works like a common text editor, but it mixes editing features like spell checking with the page cataloging features of wikis.
Zim is written in Perl and uses the GNOME GTK+ libraries for its graphical user interface, so you need those packages installed on your computer before you can install Zim. Zim also requires some Perl modules, but those it'll fetch on its own. Grab and untar the latest version of Zim, and issue the ./configure, make, and make install commands to compile and install it.
If you don't have superuser privileges on your computer to install Zim, you can run it without installing it. To do this, after untarring the Zim source tarball, change into its bin directory and execute the zim file there with ./zim.
Zim arranges files into repositories, which are just normal folders that store related files. You can have multiple repositories, or store all files under one repository. When you open Zim, it will prompt you to select a repository; you can also create a new repository from this dialog box, as you'll have to do when you first launch Zim.
Zim as a text editor
Zim's interface isn't very different from that of a regular text editor. It's got a side pane to browse articles in a tree view and links to jump from one article to another. While typing, you can use the Format menu to decorate text. You can also use Zim's format key bindings, which are inspired by those of DocuWiki, to format text as bold, italics, underline, or verbatim. Zim automatically saves documents as you type.
Using Zim's autoformat feature you can also define a simple bullet list, and one of five heading styles it supports. If you need to insert special characters in your documents, such as greater than, less than, quotation marks, or the copyright symbol, Zim provides key bindings to insert them into documents.
If you have the gtkspell package installed, Zim can spell check your documents. It can also count words in documents and search them. Zim can delete or rename the documents it creates. It's also got a calendar, and can insert date and time in various formats on to the pages you create. Zim can include images in documents from the menu, or by enclosing the path to an image in double braces, which Zim will interpret and include the image automatically. Once an image is in place you can use external programs to view and manipulate it, or you can edit the width and height of an image from within Zim.
Linking documents is Zim's specialty. To wrap text in HTML, simply select the text and go to Edit -> Edit link to open a dialog box where you can specify the link location. You can link to files on your computer or to URLs on the Web. Zim can link to files by their path names, or you can just drop external documents into the one you're working on. If you want to link to files in the repository you are working in, go to Tools -> Open folder and simply drag and drop the files you want to link into the Zim document.
If you create a link to a page that doesn't exist, Zim will automatically create that page based on the link information. This is useful when you're creating a multipage document with a table of contents (TOC). Just start creating the TOC page, and as soon as you enter a chapter name, select it and press Ctrl-E. Zim will automatically create a new page with the chapter name. Similarly, Zim by default take text entered in CamelCase and creates a new document of that name. For example, if you type NewDiet while typing and then come back and click on that text, Zim takes you to a new document titled NewDiet. This saves you the effort to go the File -> New Document route. This feature can be annoying, so you can turn it off using Zim's preferences settings.
If you are linking to other documents created with Zim, you can use a colon character in the link to separate namespaces. Links that start with a colon, such as :Home and :ToDo, point to files of the same name within the root namespace, which means they are created within the repository. If a link starts with a dot (.), it is created beneath the current namespace. Zim will create a directory under the repository and file the document under it. Those documents show up in Zim's tree view.
Zim also handles URLs well. It recognizes URLs as you type them and automatically links them to where they are pointing. Zim also has a list of predefined URLs to more than 100 resources, including Wikipedia, Google, CPAN, Advogato, and SourceForge.net. You can use them as shortcuts. For example, typing the string phpfn?print in your document or in the Edit link dialog box will automatically create a link to the print function in PHP's online documentation, while wp?LiveCD will become a link to the live CD page on Wikipedia. If you want to add your own list of URLs, you can put them in a file named urls.list under your home directory.
In addition to handling links to other locations, Zim also keeps track of backward links -- that is, which documents point to a particular document. How can this help you? Say you are working on multiple documents, some of which have a ToDo section in them, and that the ToDo section heads in all incomplete documents points to an empty ToDo page. When you open this ToDo page, Zim will print the number of backlinks to this document in the status bar. As soon as you click on the area that lists backlinks in the status bar, Zim will show you all the pages that link to this ToDo page. You can visit all documents that have a ToDo section by clicking on their links.
Zim's ability to link documents, both offline and online, is useful, especially when you're working with multiple documents. In fact, Zim's help document is written using Zim itself, and makes full use of its capabilities to link to pages that explain particular features in detail.
Zim isn't really a text editor; it's actually an offline wiki that has advanced text editing features. But whatever you call it, Zim can help you become more productive.