summaryrefslogtreecommitdiff
path: root/src/Vim:Frequently_Used_Bits_and_Doodads.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Vim:Frequently_Used_Bits_and_Doodads.adoc')
-rw-r--r--src/Vim:Frequently_Used_Bits_and_Doodads.adoc204
1 files changed, 204 insertions, 0 deletions
diff --git a/src/Vim:Frequently_Used_Bits_and_Doodads.adoc b/src/Vim:Frequently_Used_Bits_and_Doodads.adoc
new file mode 100644
index 0000000..f4b4b4e
--- /dev/null
+++ b/src/Vim:Frequently_Used_Bits_and_Doodads.adoc
@@ -0,0 +1,204 @@
+Vim:Frequently Used Bits and Doodads
+====================================
+:author: Aaron Ball
+:email: nullspoon@iohq.net
+
+
+== {doctitle}
+
+I have a friend (yes, you Zeke) who is considering changing from a graphical
+editor to a CLI editor, namely vim, for his web developement. His primary
+hesitation though is the learning curve for vim, and rightfully so. Coming from
+a GUI with menus to an environment you can't even exit unless you know what
+you're doing already is pretty intimidating (or fun
+https://www.youtube.com/watch?v=pY8jaGs7xJ0[if that's what you're into]).
+
+I understand this well. When I first started in vim, I was quite taken
+back by the tremendous amount of documentation. Lots of documentation
+[hopefully] means lots of functionality. Lots of documentation is great
+but if you don't know where to start, it doesn't do you
+http://hyperboleandahalf.blogspot.com/2010/04/alot-is-better-than-you-at-everything.html[alot]
+of good. Here I'm hoping to narrow things down a bit for you folks
+thinking of learning vim.
+
+
+[[two-modes]]
+== Two Modes
+
+Before we start anywhere else, you need to know that there are two modes for
+vim: *command mode* and **insert mode**. Since vim is a command line editor, it
+doesn't [technically] support a mouse (it kind of does, but we won't get into
+that) which means all of your controls are keyboard-based. However, if you also
+use the keyboard keys to write text, you're going to have a lot of conflicts -
+hence two modes.
+
+When you open a text file, you are first put in command mode. That means that
+your whole keyboard won't insert text. Instead, it interprets all key presses
+as commands. The first command you'll want is the letter __i__. This will put
+you into insert mode. Once in insert mode, all key presses will insert text. To
+get/escape out of insert mode, hit the escape key a la top left of yonder
+http://search.dilbert.com/comic/Kybard[kybard].
+
+
+[[frequently-used-features]]
+== Frequently Used Features
+
+
+[[find]]
+=== Find
+
+Finding in vim is actually fairly simple. You just have to remember that it
+searches in two directions: forwards and backwards. To search fowards in
+thedocument from the present position of the cursor, type the following in
+command mode
+
+----
+/searchterm
+-----
+
+To search backwards in the document from the present position of the cursor,
+type the following in command mode <pre>?searchterm</pre>
+
+
+[[replace]]
+=== Replace
+
+This one is pretty complex unfortunately. However, for those of you who like to
+weild the power of the gods, find and replace in vim uses
+http://www.regular-expressions.info/[regex].
+
+I won't get heavily into this because this topic is so broad and can take so
+much time to learn because of how robust it can be. You can actually put this
+piece on your resume and you'll likely get quite a few bites.
+
+A basic find and replace would perform a replace on the entire document. For
+example, we want to replace the word _foo_ with __bar__. To do this, do the
+following (actually type the : at the beginning of the expression):
+
+----
+:%s/foo/bar/
+----
+
+That will replace all instances of foo with bar from the beginning to the end
+of the document (the % here means the whole file), unless there is more than
+one instance of foo on a particular line. That will only replace the first
+instance found on each line. To replace all for real this time, just append the
+letter "g" for "global" (at least I think that's what it stands for).
+
+----
+:%s/foo/bar/g
+----
+
+
+[[code-folding]]
+=== Code Folding
+
+Depending on the distribution of Linux you are using, code folding may or may
+not be enabled already. To enable it however, you need to type exactly the
+following command in command mode: +:set foldmethod=indent+. You could also put
+that in your +\~/.vimrc+ file and it will enable it for all future vim
+sessions. Next up, here's how you open and close folded code...
+
+**za/A**: Toggles code folding. Capital A toggles all folds inside of the
+ currently selected fold.
+
+**zc/C**: Closes the folded code. Capital C closes all folds inside of the
+ currently selected fold.
+
+**zo/O**: Opens the folded code. Capital O opens all folds inside of the
+ currently selected fold.
+
+**zr/R**: Opens the first level of folded code throughout the file. Capital R
+ will open all folds, including nested.
+
+**zm/M**: Closes the first level of folded code throughout the file. Capital M
+ will close all folds, including nested.
+
+I pretty much only every use zR (open all), zM (close all), and zA (toggle all
+nested under currently selected).
+
+
+[[syntax-highlighting]]
+=== Syntax Highlighting
+
+Depending on what distro of Linux you use, syntax highlighting may or may not
+be enabled for you by default. If it isn't already, there are two ways to turn
+'er on.
+
+When in command mode, type exactly (with the preceeding colon) <code>:syntax
+on</code>. That should enable syntax highlighting for you. If it doesn't, it's
+possible either the file you are editing doesn't have a known extension (eg:
+.pl for Perl, .php for PHP, .cpp for C+\+, etc) or it doesn't start with a
+http://en.wikipedia.org/wiki/Shebang_%28Unix%29[shebang] that indicates what
+the language is (eg: #!/usr/bin/perl).
+
+
+[[line-numbers]]
+=== Line Numbers
+
+I don't typically put this piece into my .vimrc file because I don't always
+like to see line numbers, especially when I need to copy and paste code.
+However, they do come in handy occasionally. For instance, when you're working
+on a really big perl script and you want to know what line you are presently on
+so when you close the file you can come back and hit ":742" and you're back
+where you left off. To show or hide line numbers respectively, try the
+following commands
+
+.Turn on line numbers
+----
+:set nu
+----
+
+.Turn off line numbers
+----
+:set nonu
+----
+
+
+[[reading-in-the-output-of-a-command]]
+=== Reading in the Output of a Command
+
+This is super handy for me very often. When I'm editing a file and I need to
+put the the output of a command (typically data that I need) into my document
+for further parsing, this really saves the day. Without this, I'd have to close
+vim (or open a new terminal), then run the command and redirect the output to
+append to the end of my file. If I need it somewhere else in the file though, I
+then have to reopen the file in vim and and move the data around. Here's how we
+can read in output from a command. For this example, we'll use the output of
+__ifconfig -a__. Put the cursor where you want the data to go and then in
+command mode, type
+
+----
+:read !ifconfig -a
+----
+
+
+[[visual-mode]]
+=== Visual Mode
+
+This one is a real live saver. If any of you have used vi, you likely know the
+wonders of this bit of functionality. For those of you who don't know, in old
+vi, to make a change to more than one line, you had to perform the action and
+tell vim to apply it to the current line and however many lines forwards. That
+means that you have to count lines. If you're going to delete say, 87 lines,
+that's a really big pain. With visual mode, we can highlight the lines we want
+to modify (delete, shave some characters off the front, indent, unindent, etc)
+and simply perform the action and it will be applied to all highlighted lines.
+
+To do this, in command mode, hit <code>Shift+v</code> (or capital V for short).
+Move the cursor up or down and you will see lines being highlighted. To delete
+those lines, hit the _d_ key. To indent them, hit the _>_ key. To unindent, hit
+the _<_ key. To copy/yank them, hit the _y_ key.
+
+To escape visual mode without making changes, just hit the escape key.
+
+
+[[an-awesome-cheatsheet]]
+=== An Awesome Cheatsheet
+
+http://tnerual.eriogerg.free.fr/vimqrc.html
+
+Category:Linux Category:Unix Category:Vim Category:Editors
+
+
+// vim: set syntax=asciidoc:

Generated by cgit