vi

From S23Wiki
(Redirected from Vi)
Jump to: navigation, search

http://www.friedhoff.org/img/viemacspolice.png

One of / The most popular console text editors in Unix / Linux.

  • i edit befor cursor
  • a edit after cursor
  • o edit new line befor cursor
  • O edit new line after cursor
  • r replace char
  • cw change word
  • dw delete word
  • x delete
  • 7x dlete 7 chars
  • dd delete line
    w write file
    wq write quit
    q! force quit
  • [Ctrl]+ ZZ quit writing if needed

Use / [string] to search ( n for next)

Use [Ctrl+V]  to enter escape codes
     Ie. [Ctrl+V] [backspace] makes a ^H (ie to use in .profile when you do a stty erase ^H)

 Character  
 h, j, k, l Left, down, up, right (, , , ) 

 Text  
 w, W, b, B Forward, backward by word 
 e , E End of word 
 ), ( Beginning of next, previous sentence 
 }, { Beginning of next, previous paragraph 
 ]], [[ Beginning of next, previous section 
 

 Lines  
 0, $ First, last position of current line 
 ^ First character of current line (ignore spaces) 
 +, - First character of next, previous line 
 n| Column n of current line 
 H Top line of screen 
 M Middle line of screen 
 L Last line of screen 
 nH n (number) of lines after top line 
nL n (number) of lines before last line 


Screens  
[CTRL-F], [CTRL-B] Scroll forward, backward one screen 
[CTRL-D] [CTRL-U] Scroll down, up one-half screen 
[CTRL-E] [CTRL-Y] Show one more line at bottom, top of window 
z [RETURN] Reposition line with cursor: to top of screen 
z. Reposition line with cursor: to middle of screen 
z- Reposition line with cursor: to bottom of screen 
[CTRL-L] [CTRL-R] Redraw screen (without scrolling) 


Searches  
/pattern Search forward for pattern 
?pattern Search backward for pattern 
n, N Repeat last search in same, opposite direction 
/, ? Repeat previous search forward, backward 
fx Search forward for character x in current line 
Fx Search backward for character x in current line 
tx Search forward for character before x in current line 
Tx Search backward for character after x in current line 
; Repeat previous current-line search 
' Repeat previous current-line search in opposite direction 


Line number  
[CTRL-G] Display current line number 
nG Move to line number n 
G Move to last line in file 
:n Move to line number n 


Marking position  
mx Mark current position as x 
`x Move cursor to x 
`` Return to previous mark or context 
'x Move to beginning of line containing mark x 
'' Return to beginning of line containing previous mark 


Insert  
i, a Insert text before, after cursor 
I, A Insert text at beginning, end of line 
o, O Open new line for text below, above cursor 


Change  
r Change character 
cw Change word 
cc Change current line 
C Change to end of line 
R Type over characters 
s Delete character and substitute text 
S Delete current line and substitute text 


Delete, move  
x Delete character 
X Delete character before cursor 
dw Delete word 
dd Delete current line 
D Delete to end of line 
p, P Put deleted text after, before cursor 
"np Put text from delete buffer number n after cursor (for last nine deletions)
 

Yank  
yw Yank (copy) word 
yy Yank current line 
"ayy Yank current line into named buffer a 
p, P Put yanked text after, before cursor 
"aP Put text from buffer a before cursor 


Other commands  
. Repeat last edit command 
u, U Undo last edit; restore current line 
J Join two lines 
ex edit commands  
:d Delete lines 
:m Move lines 
:co or :t Copy lines 
:.,$d Delete from current line to end of file 
:30,60m0 Move lines 30 through 60 to top of file 
:.,/pattern/co$ Copy from current line through line containing pattern to end of file
 

Exit Commands
ZZ Write (save) and quit file 
:x Write (save) and quit file 
:wq Write (save) and quit file 
:w Write (save) file 
:w! Write (save) file (overriding protection) 
:30,60w newfile Write from line 30 through line 60 as newfile 
:30,60w>> file Write from line 30 through line 60 and append to file
 
:w %.new Write current buffer named file as file.new 
:q Quit file  
:q! Quit file (overriding protection) 
Q Quit vi and invoke ex 
:e file2 Edit file2 without leaving vi 
:n Edit next file 
:e! Return to version of current file at time of last write (save) 
:e# Edit alternate file 
% Current filename 
# Alternate filename 

Command Line Options
vi file Invoke vi editor on file
 
vi file1 file2 Invoke vi editor on files sequentially 
view file Invoke vi editor on file in read-only mode
 
vi -R file Invoke vi editor on file in read-only mode 
vi -r file Recover file and recent edits after system crash
 
vi + file Open file at last line 
vi +n file Open file directly at line number n
 
vi +/pattern file Open file directly at pattern
 
ex file Invoke ex editor on file from UNIX 

lol

~$ vi
?
File empty: Nothing to search
help
The default buffer ist empty
Alt-Q
q isn't a vi command
Ctrl-Q
alt-x
alt-F4
q
q isn't a vi command
ESC
F10
*reset knopf drück*
:q!  (ohne speichern raus)


VI cursor keys bug , ABCD instead of arrows

If it happens to you that the cursor keys dont seem to work in Insert Mode anymore, but instead they insert the characters A,B,C and D, then use :set term=cons25 and read here http://www.vim.org/tips/tip.php?tip_id=550

<jargon />

remove empty lines

:g/^$/d


replace stuff with regex

all of file

:%s/word/new word/g

from here to end of file

:,$s/word/new word/g

tabulate lines

To add tabs to the beging of lines (no need to be at the begining of the line)

:>

Add tabs to the begining of the next 4 lines

:,+3>

Add tabs to lines 5 to 8

:5,8>

Add tabs to all lines

:%>


Guides & HowTos

http://www.gentoo.org/doc/en/vi-guide.xml

Tabbed vi / open multiple files

If you open multiple files with vi(m) like vim *.txt you switch to the next file with :next or :wn.

If you start vim with the -p switch vim -p *.txt you get a tab for each file. You can switch between tabs with gt or just :quit from a file and be automatically in the next file. :qa closes all tabs.