Difference between revisions of "Vim"
m |
|||
(10 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
+ | [[Category:Basics]] | ||
== General == | == General == | ||
− | Vi or Vim (VI IMproved) is a visual text editor that can be run inside a [[shell]]. This has the advantage, that you can quickly write or edit text files in the [[shell]], even over an [[ssh]] connection without needing a graphical user interface. Alternatively there is the option to edit | + | Vi or Vim (VI IMproved) is a visual text editor that can be run inside a [[shell]]. This has the advantage, that you can quickly write or edit text files in the [[shell]], even over an [[ssh]] connection without needing a graphical user interface. Alternatively there is the option to edit files locally (on your desktop computer) in your favourite editor or IDE (e.g. Notepad++, VSCode, ...) and then transfer the files to the remote (super)computer. Visit the [[File_Transfer|file transfer]] page for more information on that topic. As these tansfers can be a lot of effort, just to fix a missing <code>;</code> or typo, Vi/Vim can come in handy, as they are available on practically every Unix system. |
While it's usage is far from intuitive, a few basics are generally helpful. For a more complete coverage of this editor, why people use it and why you should probably do that too, please take a look at the [[#Absolute_Basics|<code>vimtutor</code>]], the [[#References|References]] or the internet in general. There are lots of great resources, presenting reasons for using Vi/Vim and giving detailed instructions for its effective usage. | While it's usage is far from intuitive, a few basics are generally helpful. For a more complete coverage of this editor, why people use it and why you should probably do that too, please take a look at the [[#Absolute_Basics|<code>vimtutor</code>]], the [[#References|References]] or the internet in general. There are lots of great resources, presenting reasons for using Vi/Vim and giving detailed instructions for its effective usage. | ||
Line 7: | Line 8: | ||
== Modes == | == Modes == | ||
− | In Vi/Vim there are | + | In Vi/Vim there are six modes from which the four most important ones are listed below. |
− | == | + | {| class="wikitable" |
− | To | + | ! Mode Name !! Description !! How to Reach the Mode from Normal |
+ | |- | ||
+ | |normal || For navigation and manipulation of text. This is the mode that vim will usually start in, which you can usually get back to with pressing <code>ESC</code>. || you are already there or <code>ESC</code> | ||
+ | |- | ||
+ | |insert || For inserting new text. Insert mode works more or less like you would expect a normal text editor to work with arrow keys for navigation, backspace for deletion and characters for text. || <code>a,A,i,I,o,O</code> | ||
+ | |- | ||
+ | |visual || For navigation and manipulation of text selections, this mode allows you to perform most normal commands, and a few extra commands, on selected text. || <code>v,V,Ctrl-V (Vim-only)</code> | ||
+ | |- | ||
+ | |command-line || For entering editor commands. || <code>:</code> | ||
+ | |- | ||
+ | |search || Searching forward and backward. || <code>/,?</code> | ||
+ | |} | ||
+ | |||
+ | More information about different modes and their uses can be found in the [[#References|References]] or the internet. | ||
+ | |||
+ | == Basic Commands == | ||
+ | To open yourfile.txt in Vi/Vim simply enter | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 16: | Line 33: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | From normal mode (press Esc to get there) you can type | + | From normal mode (press <code>Esc</code> to get there) you can type commands. |
+ | ==== File handling ==== | ||
{| class="wikitable" style="width: 40%;" | {| class="wikitable" style="width: 40%;" | ||
− | | <code>: | + | | <code>:w</code> || save the current file |
|- | |- | ||
− | | <code>:w</code> || | + | | <code>:w filename</code> || save the current file to <code>filename</code> |
|- | |- | ||
− | | <code>:q | + | | <code>:q</code> || quit Vi/Vim |
|- | |- | ||
− | | <code>:x</code> || to quit Vi/Vim with saving changes | + | | <code>:q!</code> || quit Vi/Vim without saving (discarding changes) |
+ | |- | ||
+ | | <code>:wq</code> or <code>:x</code> || to quit Vi/Vim with saving changes | ||
|} | |} | ||
− | For a tutorial you can call the | + | ==== Inserting and replacing text ==== |
− | + | ||
+ | {| class="wikitable" style="width: 40%;" | ||
+ | | <code>a</code> || append text after cursor position | ||
+ | |- | ||
+ | | <code>A</code> || append text at the end of the current line | ||
+ | |- | ||
+ | | <code>i</code> || insert text before cursor position | ||
+ | |- | ||
+ | | <code>I</code> || insert text before first character on the current line | ||
+ | |- | ||
+ | | <code>o</code> || insert a new line below current line and place cursor on it | ||
+ | |- | ||
+ | | <code>O</code> || insert a new line above current line and place cursor on it | ||
+ | |- | ||
+ | | <code>rX</code> || replace character under cursor by X | ||
+ | |- | ||
+ | | <code>R</code> || change into replace mode | ||
+ | |} | ||
+ | |||
+ | == Tutorial == | ||
+ | |||
+ | For a tutorial you can call the | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ vimtutor | ||
+ | </syntaxhighlight> | ||
+ | |||
and follow the instructions on screen. | and follow the instructions on screen. | ||
Latest revision as of 14:51, 3 September 2019
General
Vi or Vim (VI IMproved) is a visual text editor that can be run inside a shell. This has the advantage, that you can quickly write or edit text files in the shell, even over an ssh connection without needing a graphical user interface. Alternatively there is the option to edit files locally (on your desktop computer) in your favourite editor or IDE (e.g. Notepad++, VSCode, ...) and then transfer the files to the remote (super)computer. Visit the file transfer page for more information on that topic. As these tansfers can be a lot of effort, just to fix a missing ;
or typo, Vi/Vim can come in handy, as they are available on practically every Unix system.
While it's usage is far from intuitive, a few basics are generally helpful. For a more complete coverage of this editor, why people use it and why you should probably do that too, please take a look at the vimtutor
, the References or the internet in general. There are lots of great resources, presenting reasons for using Vi/Vim and giving detailed instructions for its effective usage.
Modes
In Vi/Vim there are six modes from which the four most important ones are listed below.
Mode Name | Description | How to Reach the Mode from Normal |
---|---|---|
normal | For navigation and manipulation of text. This is the mode that vim will usually start in, which you can usually get back to with pressing ESC . |
you are already there or ESC
|
insert | For inserting new text. Insert mode works more or less like you would expect a normal text editor to work with arrow keys for navigation, backspace for deletion and characters for text. | a,A,i,I,o,O
|
visual | For navigation and manipulation of text selections, this mode allows you to perform most normal commands, and a few extra commands, on selected text. | v,V,Ctrl-V (Vim-only)
|
command-line | For entering editor commands. | :
|
search | Searching forward and backward. | /,?
|
More information about different modes and their uses can be found in the References or the internet.
Basic Commands
To open yourfile.txt in Vi/Vim simply enter
$ vim yourfile.txt
From normal mode (press Esc
to get there) you can type commands.
File handling
:w |
save the current file |
:w filename |
save the current file to filename
|
:q |
quit Vi/Vim |
:q! |
quit Vi/Vim without saving (discarding changes) |
:wq or :x |
to quit Vi/Vim with saving changes |
Inserting and replacing text
a |
append text after cursor position |
A |
append text at the end of the current line |
i |
insert text before cursor position |
I |
insert text before first character on the current line |
o |
insert a new line below current line and place cursor on it |
O |
insert a new line above current line and place cursor on it |
rX |
replace character under cursor by X |
R |
change into replace mode |
Tutorial
For a tutorial you can call the
$ vimtutor
and follow the instructions on screen.