Any Page
   
 

VI Kommandos

Das meiste hier ist geklaut von diversen Seiten (siehe Quellen ganz unten im Dokument).

Und natürlich ist auch diese Seite selber - zumindest zum grösten Teil - auch in VI(M) geschrieben... einen kleinen Emacs-Rückfall hatte ich aber doch.

Allgemein

Es gibt drei Modi:
  1. Command Mode - der normale und initiale Modus
  2. Input Mode - da wo man Text eingeben kann
  3. Line Mode - bei gewissen Befehlen kann man in der untersten Zeile Zeug eingeben

Kommandos

CommandAction
:wWrite - File speichern
:qQuit - geht nur wenn gespeichert
:w!force write - auch ohne gesetzes w (aber man muss natürlich der Fileowner sein)
:q!force quite - ohne zu speichern
:e!re-edit the file (neu laden)
:rread File - es wird nach aktueller Position in die aktuelle Datei eingefügt.
:!<cmd>ein Unix Kommando ausführen (CTRL-D um zurückzukommen)

Allgemeines

CommandAction
^Gtell what is going on
.repeats the changing command
''zur letzten Position zurückspringen
Uundoes the changes you made to the current line
uundoes the last change
<Zahl>wiederholt das nächste Kommando Zahl mal

Moving Around

CommandAction
Scrollen
^Dscrolls down in the file
^Uscrolls up in the file
^Yexposes another line at the top
^Eexposes another line at the bottom
Cursor absolut bewegen
Hhome screen line
Mmiddle screen line
Llast screen line
Ggo to specified line, last default
0Zeilenanfang
$Zeilenende
Suchen
/scan for a following string forwards
?scan backwards
n, Nscan for next instance of / or ? pattern, N kehrt die Suchrichtung um
Cursor relativ bewegen
bback a word
Bback a word, ignoring punctuation
wword after this word
Wforward a word, ignoring punctuation
eend of current word
%gehe zu passender Klammer ( '(', '[' oder '{' )
1 <tr><td>:e!</td><td>re-edit the f%le (neu laden)</td></tr>
  0_______________________________B_b__Cw_e_W____%_________$

Simple Edit

CommandAction
Während der Eingabe
^Werase a word during an insert
eraseyour erase (usually ^H or #), erases a character during an insert
killyour kill (usually @, ^X, or ^U), kills the insert on this line
^n, ^pKeyword completion
In den Inputmodus wechseln
aAppend, nach Cursor einfügen
AEinfügen am Zeilenende
iInsert, vor Cursor einfügen
IEinfügen am Zeilenanfang
o, OOpens new line, nach und vor der aktuellen Zeile
Objektbezogene Operationen
cchanges the object you specify to the following text
CErsetze den Rest der Zeile
ddeletes the object you specify
DLöschen bis zum Zeilenende
ycopy the object you specify
dwdelete word
ybcopy word (backwards)
dSPACEdelete a single character
cwchange a word
dddelete a line
4dddelete 4 lines
ccchange a whole line
einzelne Charakter Operationen
xdelete a single character
rXersetze das aktuelle Zeichen durch X
~change case of charagter under cursor
p, Ppaste the buffer after / before the current line

SED / Regex

Allgemein können die Kommandos mit :x,y gebilded werden, wobei das Kommando dann auf Zeile x bis y angewendet werden.
Werden keine Zeilen angegeben, wird :.,. - also die aktuelle Zeile - angenommen.
CommandAction
Beispiel
:.,$s/hi/lo/gEin SED Kommando, von Zeile . bis Zeile $
Zeilenangabe
.aktuelle Zeile
$Dateiende
+10aktuelle Zeilenzahl + 10
%ganze Datei (dann ohne ",")
/abc/,/ct/von der Zeile mit dem ersten abc bis zur nächsten Zeile mit ct drin.
Kommandos
ssearch and replace
dein d statt ein s und schon werden Zeilen gelöscht
Argumente
/galle ersetzen (nicht nur eines) pro Zeile
/iCase ignorieren
/ICase nicht ignorieren
/cBestätigung für jedes Ersetzen


/Write/

/force/

. -->

+2
$
1
2
3
4
5
6
7
8
9
10
<h3 class="pages">Kommandos</h3> <table class="prettytable">
<tr><th>Command</th><th>Action</th></tr>
<tr><td>:w</td><td>Write - File speichern</td></tr>
<tr><td>:q</td><td>Quit - geht nur wenn gespeichert</td></tr>
<tr><td>:w!</td><td>force write - auch ohne gesetzes w (man muss nat&uuml;rlich der Fileowner sein)</td></tr>
<tr><td>:q!</td><td>force quite - ohne zu speichern</td></tr>
<tr><td>:e!</td><td>re-edit the file (neu laden)</td></tr>
<tr><td>:r</td><td><b>r</b>ead File - aktueller Position....</td></tr>
<tr><td>:!<cmd></td><td>ein Unix Kommando ausf&uuml;;hren (CTRL-D um zur&uuml;ckzukommen)</td></tr>
</table>

Settings

Diese Angaben sollten auch in einem .exrc-File gemacht werden können.
CommandAction
:set icignore case zum suchen
:set noicno ignore case beim suchen
:set showmodeAnzeigen, wenn man im Insert-Modus ist
:set nuLine numbering einschalten
:set nonuLine numbering ausschalten

Quellen