adding the documents and editing tutorial
authorEdgar Bering <ebering@csclub.uwaterloo.ca>
Tue, 9 Sep 2008 21:16:59 +0000 (17:16 -0400)
committerEdgar Bering <ebering@csclub.uwaterloo.ca>
Tue, 9 Sep 2008 21:16:59 +0000 (17:16 -0400)
documents-editing-etc.pod [new file with mode: 0644]

diff --git a/documents-editing-etc.pod b/documents-editing-etc.pod
new file mode 100644 (file)
index 0000000..52abaaf
--- /dev/null
@@ -0,0 +1,91 @@
+=head1 So you want to write a document
+
+You can do it on the shell, faster, better, and with less frustration than
+with a gui word processor. This tutorial assumes some familiarity with the unix
+shell, and will cover useful programs used for editing and processing documents
+with the shell.
+
+=head2 First you need a "real editor"
+
+You might be familiar with C<pico> or C<nano>, however these editors lack 
+I<power>. What do I mean by I<power> in a text editor? I mean the editor has
+support for scripting, regular expressions, quick manipulations of text, an
+easy way to interface with the shell, and support for various development
+tools. You shouldn't have to quit to compile, run tests, and even attach to
+a debugger (well, thats a touchy subject). The editor should also support
+easy navigation of multi-file projects and syntax highlighting for whatever
+languages you decide to use. A lot of these features will be covered in later
+tutorials, for now just familiarize yourself with the basics.
+
+There are two major players in the real editor market: GNU Emacs and vim
+(short for vi improved). Both of these have grown out of the real editors of
+the past and offer similar capabilities but different interfaces. I suggest
+you try both tutorials and pick the one you like more. There is a long history
+of bitter argument over which is superior, most of the debate is largely
+irelevant rhetoric, and the rest is personal opinion, so pick what you prefer
+and don't fear switching.
+
+To run the vim tutor, at the prompt type C<vimtutor>.
+
+To run the emacs tutorial, start C<emacs> and then press C<Control+h> C<t>.
+
+From there, make your choice and we'll continue on with the tutorial.
+
+=head2 Latex section
+
+=for commentary
+
+Imma get me a m3lawren to write this -- ebering
+
+=cut
+
+=head2 Searching documents 
+
+There is a program called C<grep> which stands for a common sequence of
+commands in one of C<vim>'s predecessors: B<g>lobal B<r>egular B<e>xpression
+B<p>rint. This ammounted to displaying the lines in the open file that matched
+a pattern. C<grep> was created to expedite this process, and grew to be a
+general purpose search program for finding things in files. 
+
+C<grep> searches for matches to a pattern specified in a format called a
+regular expression. The most basic regular expressions are simply strings
+that are searched for, but other patterns can be specified through 
+I<metacharacters> which specify quantities of characters and classes of
+characters to match. To tell grep you're using an B<e>xtended pattern,
+either use C<egrep> or pass the patern after the B<-E> flag. 
+
+In an extended pattern there are quantifier characters C<?> C<*> C<+> which 
+stand for zero or one (is it thereB<?>), zero or more (like a wild card B<*>), 
+and one or more (wild card B<+> 1) of the preceeding character, respectively.
+You can be more specific in the number of characters you want to match, using
+C<{}> with either a number (C<{3})> or a range of numbers (C<{3,5}>).
+
+There are also metacharacters that specify I<classes> of character, i.e. C<\w> 
+matches on word characters, or [:alphanum:] matches alphanumeric characters. 
+You can specify your own classes with C<[]>, listing all the characters you 
+wish to match or character ranges like C<[a-z]> to specify the lower case 
+alphabet. If you want a hyphen, make sure its either in the range or the first 
+or last character. To find a long list of predefined classes check the man page
+for C<grep>. 
+
+To specify multiple alternative patterns separate them with a C<|> character,
+and to create subgroups in which there are options wrap them in C<()>, like
+this: C<.*\.(jpg|jpeg|gif|png)> to match all images (C<.> matches any character 
+unless you escape it).
+
+C<grep> can also recurse down directories with C<-R>, to seach many files, and
+accept input on a pipe to filter it, as mentioned in the previous tutorial.
+
+=head2 Bulk editing
+
+Often it becomes necessary to edit many, many, documents with the same minor
+trivial correction (like chainging colour to color because you're going to the
+states). Do you really, really want to do it by hand? Really? I didn't think 
+think so. It would be much nicer if substitution could be done all at once by
+a program, or in the editor. Here's the good news: a program exists, and a real
+editor will have this feature.
+
+To specify a find and replace most programs in unix use a I<substitution
+expression> wich is part string and part regular expression. Looking like
+C<s/regex/string/> these expressions instruct the program to replace every
+match of C<regex> with C<string>. In the previous section