Vim: Difference between revisions
mNo edit summary |
(added movement table + alternative editor note) |
||
Line 20: | Line 20: | ||
:wq save and quit | :wq save and quit | ||
== | ==About modal editors== | ||
== | |||
== | ==Cursor positioning== | ||
==text insertion | {| class="wikitable" style="text-align:center" border="1" cellspacing="0" cellpadding="5" | ||
!style="background:#ffdead;"|Key(s) | |||
!style="background:#ffdead;"|Movement | |||
|- | |||
|j | |||
|down one line, same column | |||
|- | |||
|k | |||
|up one line, same column | |||
|- | |||
|h | |||
|one character back | |||
|- | |||
|l,<space> | |||
|one character forward | |||
|- | |||
|b | |||
|one word back (to beginning of previous word) | |||
|- | |||
|e | |||
|one word back (to end of previous word) | |||
|- | |||
|w | |||
|one word forward | |||
|- | |||
|<enter> | |||
|beginning of next line | |||
|- | |||
|0 (zero) | |||
|beginning of line | |||
|- | |||
|$ | |||
|end of line | |||
|- | |||
|''n''G | |||
|to beginning of line ''n''; if no number given, the last line of the file | |||
|- | |||
|:''n'' | |||
|also to beginning of line ''n'' (but this is visible as command) | |||
|- | |||
|} | |||
==Searching== | |||
{| class="wikitable" style="text-align:center" border="1" cellspacing="0" cellpadding="5" | |||
!style="background:#ffdead;"|Key(s) | |||
!style="background:#ffdead;"|Movement | |||
|- | |||
|/''pattern'' | |||
|Moves the cursor to the next occurrence of ''pattern''; will wrap around to the beginning of the file from the last occurence | |||
|- | |||
|?''pattern'' | |||
|Moves the cursor backward to the previous occurrence of ''pattern''; will wrap around to the end of the file from the first occurence | |||
|- | |||
|n | |||
|repeats last pattern search (either / or ?) | |||
|} | |||
==Text insertion== | |||
a Appends text after cursor. Terminated by escape key. | a Appends text after cursor. Terminated by escape key. | ||
A Appends text at the end of the line. Terminated the escape key. | A Appends text at the end of the line. Terminated the escape key. | ||
Line 32: | Line 89: | ||
DEL Overwrites last character during text insertion. | DEL Overwrites last character during text insertion. | ||
ESC Stops text insertion. The escape key on the DECstations is the F11 key | ESC Stops text insertion. The escape key on the DECstations is the F11 key | ||
==Notes== | |||
In Debian Etch, the default editor is nano instead of vim. This can be changed in the following way: | |||
sudo update-alternatives --set editor /usr/bin/vim.tiny | |||
Now '''all''' commands that invoke an editor will use ''vi'' instead of ''vim''. Is that a good thing? We're not sure, but we do want to keep our ''vi'' skills up to par, so we do this. |
Revision as of 10:25, 25 May 2008
Introduction
The screen-oriented text editor vim stems from vi, written in '76 for an early BSD Unix release by Bill Joy. vi is old, nonintuitive, and complex. vim stems from 1991, and stands for Vi IMproved, but its improvements do not lessen it's nonintuitivity or complexity.
So why do we feel that vim is an essential system tool? Well, it's because
- vi can be found on just about any Linux and Unix system
- vi is very powerful
- with some practice, it's even usable.
Installation and configuration
When you install vim, you also get xxd, a tool to make a hexdump, or convert a hex dump back to it's original binary form.
Using VIM
Vim operates in 2 modus. A command mode and a insert mode. You start in command mode so almost every key is a command. You can switch to insert mode with i to return in command mode press esc or ( ctrl [ ) Start in insert mode and typ some text. To save your progress return in command mode with esc Now we can use the ex-commands typ :w to save the document. or use these commands.
:w Save :w 'filename' Save with this filename :q quit vim :q! quit without save :wq save and quit
About modal editors
Cursor positioning
Key(s) | Movement |
---|---|
j | down one line, same column |
k | up one line, same column |
h | one character back |
l,<space> | one character forward |
b | one word back (to beginning of previous word) |
e | one word back (to end of previous word) |
w | one word forward |
<enter> | beginning of next line |
0 (zero) | beginning of line |
$ | end of line |
nG | to beginning of line n; if no number given, the last line of the file |
:n | also to beginning of line n (but this is visible as command) |
Searching
Key(s) | Movement |
---|---|
/pattern | Moves the cursor to the next occurrence of pattern; will wrap around to the beginning of the file from the last occurence |
?pattern | Moves the cursor backward to the previous occurrence of pattern; will wrap around to the end of the file from the first occurence |
n | repeats last pattern search (either / or ?) |
Text insertion
a Appends text after cursor. Terminated by escape key. A Appends text at the end of the line. Terminated the escape key. i Inserts text before cursor. Terminated by the escape key. I Inserts text at the beginning of the line. Terminated by the escape key. o Opens new line below the current line for text insertion. Terminated by the escape key. O Opens new line above the current line for text insertion. Terminated by the escape key. DEL Overwrites last character during text insertion. ESC Stops text insertion. The escape key on the DECstations is the F11 key
Notes
In Debian Etch, the default editor is nano instead of vim. This can be changed in the following way:
sudo update-alternatives --set editor /usr/bin/vim.tiny
Now all commands that invoke an editor will use vi instead of vim. Is that a good thing? We're not sure, but we do want to keep our vi skills up to par, so we do this.