Vi: Difference between revisions

From Rosetta Code
Content added Content deleted
m (:wq)
m (:2,5s/old/new/)
Line 2: Line 2:
It is the [[wp:Category:Unix text editors|standard-editor]] on most Unix-systems.
It is the [[wp:Category:Unix text editors|standard-editor]] on most Unix-systems.


The current versions have almost everything you can expect from an editor:
The current versions have almost everything you can expect from an editor: <br>
scripting, macro-recording, syntax-coloring, UTF-8, Unicode, GUI etc.
scripting, macro-recording, syntax-coloring, UTF-8, Unicode, GUI etc.


However, the basic concept is quite old, e.g. it also has an '''ex'''-mode
However, the basic concept is quite old, e.g. it also has an '''ex'''-mode <br>
that was designed to work with old teletype-devices.
that was designed to work with old teletype-devices.



There are several variants:
There are several variants:
* [[BusyBox]] - includes a tiny vi clone
* [[BusyBox]] - includes a tiny vi clone
* [[wp:Elvis (text editor)|Elvis]]
* [[wp:Elvis (text editor)|Elvis]]
* [[wp:nvi|nvi]] - "new vi"
* [[wp:nvi|nvi]] - "new vi"
* [[wp:vile (editor)|vile]] - "VI Like Emacs"
* [[wp:vile (editor)|vile]] - "VI Like Emacs"
* [[wp:Vim (text editor)|vim]] - "vi-improved" [http://www.vim.org VIM] current version: Vim 7.4.507
* [[wp:Vim (text editor)|vim]] - "vi-improved" [http://www.vim.org VIM] current version: Vim 7.4.507 (2013-07)




Line 22: Line 23:
There is a "normal" mode that acts as command-mode, and an insert-mode:
There is a "normal" mode that acts as command-mode, and an insert-mode:
<pre>
<pre>
i - insert text at cursor-position
i - insert text at cursor-position
a - append text at end-of-line
a - append text at end-of-line
ESC - abort command, i.e. end insert-mode, and return to normal/commandmode.
ESC - abort command, i.e. end insert-mode, and return to normal/commandmode.


hjkl - move cursor: left/down/up/right (use with count: "5k" move 5 lines up )
h j k l - move cursor: left/down/up/right (use with count: "5k" move 5 lines up )
Cursor-keys should work as well
Cursor-keys should work as well
w b - move cursor one word forward / backward (with count: "3w" move 5 words forward )
/abc - find text "abc"
G - Goto last line ( "33G" goto line 33 )
n - find next match
/abc - find text "abc"
n - find next match


x - delete char ( use with count: "5x" deletes 5 char )
x - delete character ( use with count: "5x" deletes 5 char )
dd - delete line ( dito: "2dd" deletes 2 lines )
dd - delete line ( use with count: "2dd" deletes 2 lines )
p - paste: insert previously deleted text at current position
p - paste: insert previously deleted text at current position
u - undo
u - undo
r R - replace single char / enter Replace-mode (like insert, but overwrites)
. - repeat last change-command
. - repeat last change-command


: is the prefix for commands:
: is the prefix for commands:
Line 42: Line 46:
:set ruler - toggle display of current line-number in status-line
:set ruler - toggle display of current line-number in status-line


:r file2.txt - read: insert contents of file2.txt at current position
:33 - move to line 33

G - Goto last line ( "33G" goto line 33 )
:33 - move to line 33


:2,5s/old/new/ - substitute: in lines 2..5 replace "old" with "new"
:r file2.txt - read: insert contents of file2.txt at current position


:w - write current file ( :w! to force it )
:w - write current file ( :w! to force it )
:q - quit ( :q! to force it. Combined: ":wq!" )
:q - quit ( :q! to force it. Combined: ":wq!" )
</pre>
</pre>



Revision as of 04:02, 11 November 2014

VI (for "visual editor") is a text editor for "plain text".
It is the standard-editor on most Unix-systems.

The current versions have almost everything you can expect from an editor:
scripting, macro-recording, syntax-coloring, UTF-8, Unicode, GUI etc.

However, the basic concept is quite old, e.g. it also has an ex-mode
that was designed to work with old teletype-devices.


There are several variants:

  • BusyBox - includes a tiny vi clone
  • Elvis
  • nvi - "new vi"
  • vile - "VI Like Emacs"
  • vim - "vi-improved" VIM current version: Vim 7.4.507 (2013-07)


Command-Summary

Usage: vi file.txt

There is a "normal" mode that acts as command-mode, and an insert-mode:

i       - insert text at cursor-position
a       - append text at end-of-line
ESC     - abort command, i.e. end insert-mode, and return to normal/commandmode.

h j k l - move cursor: left/down/up/right  (use with count: "5k" move 5 lines up )
         Cursor-keys should work as well
w b     - move cursor one word forward / backward  (with count: "3w" move 5 words forward )
G       - Goto last line     ( "33G" goto line 33 )
/abc    - find text "abc"
n       - find next match

x       - delete character   ( use with count: "5x"  deletes 5 char )
dd      - delete line        ( use with count: "2dd" deletes 2 lines )
p       - paste: insert previously deleted text at current position
u       - undo
r R     - replace single char / enter Replace-mode (like insert, but overwrites)
.       - repeat last change-command

: is the prefix for commands:

:help        - show help-pages
:set ruler   - toggle display of current line-number in status-line

:r file2.txt   - read: insert contents of file2.txt at current position

:33            - move to line 33

:2,5s/old/new/ - substitute: in lines 2..5 replace "old" with "new"

:w             - write current file ( :w! to force it )
:q             - quit               ( :q! to force it.  Combined: ":wq!" )