Freitag, 29. September 2017
vim Einführung (2AHIF, 2BHIF)
Vim ist ein hervorragender Editor mit Syntaxhervorhebung und Vergleichsfunktionen, mehreren Darstellungsfenstern und vielen anderen nützlichen Funktionen. Leider ist der Einstieg damit nicht immer ganz leicht, da vim eine Weiterentwicklung des Editors vi ist, den es bereits in den 80er Jahren gab, wo Benutzerfreundlichkeit noch eine andere Bedeutung hatte als heute. Weiterhin erscheint vim im unkonfigurierten Zustand zunächst erstmal sehr langweilig und es ist mühselig eine passende Konfiguration zu erstellen.
Der vi ist praktisch auf jedem Linux-System verfügbar und kann von der Shell (Terminal) aus verwendet werden. Daher ist es praktisch, wenn man den vi(m) beherrscht, wenn man einen Server (z.B. Web-Server) über das Internet warten muss. Die wichtigsten Funkionen kann man probieren und üben mit
Weitere Dokumentation finden Sie hier:
vim Kurzreferenz
vim Homepage www.vim.org
vim Quick Reference Card (2 Seiten)
Wir verwenden eine spezielle Konfigurationsdatei für den vim. Im Laufe dieses Schuljahres werden wir Ihnen diese Datei (eigentlich eine überarbeitete Version, denn die bisherige Version ist hauptsächlich für C-Programmierung eingerichtet) zur Verfügung stellen. Also, bleiben Sie dran oder suchen Sie auf www.vim.org/scripts nach passenden Scripts für den vim.
Es ist besser, einen Editor wirklich gut zu beherrschen als viele verschiedene Editoren oder Entwicklungsumgebungen nur mittelmäßig bedienen zu können. Der
Dies hat den Vorteil, dass man einen mächtigen Editor (
Nachteilig ist der relativ hohe Lernaufwand.
Cursorbewegung
Löschen (
Ändern
Bereich angeben (markieren)
Suchen
Wiederholung
Rückgängig
Sonstige Kommandos
Der Änderungsmodus wird mit der
Suchen und ersetzen
Ende der Datei.
Setzen von Modi
Abkürzungen
Konfigurationsdatei
keinen
vorkommen
Generell ist zu empfehlen,
Mit
Der
Wird nach dem "Absturz" der
Der vi ist praktisch auf jedem Linux-System verfügbar und kann von der Shell (Terminal) aus verwendet werden. Daher ist es praktisch, wenn man den vi(m) beherrscht, wenn man einen Server (z.B. Web-Server) über das Internet warten muss. Die wichtigsten Funkionen kann man probieren und üben mit
vimtutor
Weitere Dokumentation finden Sie hier:
vim Kurzreferenz
vim Homepage www.vim.org
vim Quick Reference Card (2 Seiten)
Wir verwenden eine spezielle Konfigurationsdatei für den vim. Im Laufe dieses Schuljahres werden wir Ihnen diese Datei (eigentlich eine überarbeitete Version, denn die bisherige Version ist hauptsächlich für C-Programmierung eingerichtet) zur Verfügung stellen. Also, bleiben Sie dran oder suchen Sie auf www.vim.org/scripts nach passenden Scripts für den vim.
vim
ist eine Erweiterung des
Standard-Unix-Editors vi
. vim
steht für vi
im
proved.
vim
gibt es nicht nur für
Unix-Plattformen, sondern auch für andere Betriebssysteme (Windows, OSX). Siehe dazu auch http://www.vim.org/. vim
ist frei verfügbar.Es ist besser, einen Editor wirklich gut zu beherrschen als viele verschiedene Editoren oder Entwicklungsumgebungen nur mittelmäßig bedienen zu können. Der
vim
eignet sich
besonders als universeller (Programmier-)Editor, da er für jede
Plattform verfügbar ist und hochgradig konfigurierbar bzw.
programmierbar ist.vi
gibt es auf jedem Unix-ähnlichem
System. Wenn nichts mehr geht, dann muss man u.U. dem vi
nehmen und in den Konfigurationsdateien Änderungen vornehmen.vim
hat (wie vi
)
mehrere Betriebsmodi: vim
ist programmierbar, arbeitet mit regulären Ausdrücken usw.) auch
über einfache Terminals bedienen kann. Alle Funktionen sind über
eine Standardtastatur mit Escape-Taste verfügbar. Man braucht keine
Funktionstasten und keine Cursortasten. Funktions- und Cursortasten
sowie Maus können bei geeigneten Terminals (X-Window System,
Console) verwendet werden.
Befehlsmodus
Grundsätzlich kann jeder Befehl mehrfach ausgeführt werden, indem zuerst eine Anzahl angegeben wird. Z.B.10dd
löscht 10 Zeilen (siehe unten), 2dw
löscht 2 Worte.[
Anzahl
]
Befehl
[
Taste
]
[
Anzahl
]
Befehl
[
Bereich
]
Cursorbewegung
k
hinaufh l
links
rechts
j
hinunter^F
orward
page
^B
ackward page
^D
own
half page
^U
p half
page
w
ord
right
b
ack
word
[
line
]G
oto line (default letzte Zeile)
(
Sätze
zurück
)
Sätze
vorwärts
{
Absätze
zurück
}
Absätze
vorwärts
f
c
gehe zum Zeichen c in der aktuellen Zeile'm
gehe
zu Marke m
ma
mark a
(setze Marke a), Marken werden auch für Lösch-, Änder- und
Kopieroperationen verwendet (sieh weiter unten)d
elete)
dd
Zeile
löschen
dw
Wort
löschen
x
Zeichen
unter Cursor löschen
X
Zeichen
links von Cursor löschen
D
bis
Zeilenende löschen
Bereich
d
löschen des Bereichs
d'
marke
löschen bis zur Marke marke
(ein Buchstabe, vorher gesetzt mit m
marke
)>
schiebt Text nach rechts (shiftwidth)
<
schiebt Text nach links (shiftwidth)
i
Einfügen vor Cursor (insert)
a
Einfügen nach Cursor (append)
I
Einfügen Zeilenanfang (Insert)A
Einfügen Zeilenende (Append)o
Öffnet
neue Zeile darunter (open line)
O
Öffnet
neue Zeile darüber
J
(join)
hänge die nächste Zeile an die aktuelle Zeile an (mit Leerzeichen
getrennt)r
x
ersetzen des aktuellen Zeichens durch das Zeichen x
(kein ESC
nötig)cw
ändert
Wort (change word)
Bereich
c
ändert Bereich (vgl. Bereich angeben)
c'
marke
ändert Bereich bis zur Marke
Cursor an ein Ende des Bereichs
setzen,
v
eingeben, den Cursor zum
anderen Ende bewegen und den gewünschten Befehl eingeben.
Zeilenweise markieren mit V
.
Wurde
:set
mouse=a
gesetzt, dann kann auch mit der Maus markiert werden.
Fast alle Befehle arbeiten mit einem
so markierten Bereich.
Kopieren/Einfügen
Bereich
y
"yank", Bereich wird in den Puffer kopiert
y'
marke
kopiert Bereich bis zur Marke in den Pufferyw
Wort
in den Puffer
Y
Zeile
in den Puffer
p
Einfügen nach Cursor (paste - "einkleben")^A
sucht
nächstes Vorkommen des Wortes unter Cursor
%
platziert Curser auf zugehörige ( ) { } [ ]
Anzahl%
platziert Cursor auf Anzahl Prozent der Datei
/
text
sucht vorwärts text
oder
regulären Ausdruck
?
text
sucht rückwärts text
oder
regulären Ausdruck
*
sucht
das Wort unter dem Cursor.
(Punkt)
wiederholt letztes Kommando
n
letzte
Suche wiederholen
N
letzte
Suche in umgekehrter Richtung
u
undo,
der vi
kann nur die letzte Änderung
rückgängig machen (d.h. uu
stellt die
letzte Änderung wieder her), der vim
kann im Prinzip beliebig viele Änderungen rückgängig machen^r
(crtl+r
) redo (nur vim
)
macht das letzte undo bzw. die letzten undos wieder rückgängig^G
zeigt
Dateistatus und Zeilennummer
^L
erneuert Bildschirm
Bereich
!
führt angegebenen Bereich einem Filter zu, der anschließend
eingegeben werden mussÄnderungsmodus
Eingegebener Text wird eingefügt (beii
,
a
,...) bzw. ersetzt markierten Bereich
(c
,...), löschen mit Backspace in der
aktuellen Zeile möglich (nur eben eingegebener Text).
Der Änderungsmodus wird mit der
ESC
-Taste
verlassen.^v
(ctrl+v
)
stellt sicher, dass das nächste Zeichen normal eingegeben wird (z.B.
wird bei TAB
normalerweise nicht das
Tabulator-Zeichen eingefügt sondern so viele Leerzeichen als nötig,
will man jedoch das TAB
-Zeichen
einfügen, muss man ^vTAB
drücken).Ex-Befehle (Colon mode)
:[
Zeile
][,
Zeile
]
Befehl
Argumente
Der Bereich
Zeile,Zeile
bezeichnet Anfangszeile und Endzeile. Ein .
(Punkt) bedeutet aktuelle Zeile, $
die letzte Zeile. Wurde vorher ein Bereich mit v
ausgewählt, dann wird automatisch ein Bereich eingefügt: '<,'>
(die Marke '<
bezeichnet den Anfang und '>
das Ende eines markierten Bereichs). %
ist die Kurzform von 1,$
.:x
Speichern und Ende
:w
write,
speichern
:w datei
Speichern in Datei (write),
wurde vorher ein Bereich markiert, so wird dieser Bereich in die
datei
geschrieben.:r datei
Einfügen von Datei (read)
:q
Quit
(schließen eines Fensters):split [datei]
weiteres Fenster (mit datei
öffnen):s/
suchtext
/
ersatztext
/[g]
Ersetzen von
suchtext
durch ersatztext
. Wird g
(die eckigen Klammern bezeichnen "optional") angegeben,
dann wird auch mehrfaches Vorkommen pro Zeile ersetzt. suchtext
kann ein regulärer Ausdruck sein.
Wenn kein Bereich
angegeben wird, dann wird die Ersetzung nur in der aktuellen zeile
durchgeführt. Wird ein Bereich markiert, so wird nur in diesem
Bereich ersetzt. Es können auch Zeilennummern angegeben werden:
:.,$s/i++/j++/g
ersetze
alle i++
durch j++
von der aktuellen Zeile bis zumEnde der Datei.
:se tabstop=3
Tabulatorweite
:se shiftwidth=3
Weite für >
und <
:se ai
oder :set autoindent
automatisches
Einrücken
:se et
oder :set expandtab
Tabulator wird durch
Leerzeichen ersetzt (dies sollte eingestellt werden!)
:syntax on
Highlighting von Sourcen:ab lhs rhs
Definieren einer Abkürzung lhs
(left
hand side) für rhs
(right hand side),
Abkürzungen werden expandiert, sobald ESC
,
Enter
oder die Leertaste gedrückt wird.:ab
listet alle Abkürzungen auf.:unab lhs
löscht die Abkürzung lhs
.:help abbreviate
Hilfe zu den Abkürzungen..vimrc
In dieser Datei können beliebige
Ex-Befehle stehen. Diese Datei wird beim Starten von
reguläre Ausdrückevim
ausgeführt. Weitere Konfigurationsmöglichkeiten sind in der
Dokumentation (:help
)
beschrieben. So können Abkürzungen definiert werden,
Funktionstasten belegt werden und in Abhängigkeit eines Dateityps
Konfigurationsdateien ausgeführt werden.
Reguläre
Ausdrücke werden immer wieder benötigt. Der vim erlaubt es reguläre
Ausdrücke zu beim Suchen. Das Programm grep erlaubt reguläre
Ausdrücke. Reguläre Ausdrücke ermöglichen es Suchmuster
anzugeben. Dabei gibt es viel mehr Möglichkeiten als bei den
Shell-Suchmustern. Es folgen beispielhaft die wichtigsten Ausdrücke:
\.
(Punkt)
steht für ein beliebiges Zeichen[aeiou]
ein
Selbstlaut klein geschrieben[A-Z]
alle
Großbuchstaben[^0-9]
alles
außer Zifferncdrom\|floppy
alle
Vorkommnisse der Worte cdrom
oder floppy
a\+
mindestens
ein a
(a
,
aa
,
aaa
,
aaaa
,
...).*
keines,
ein oder mehrere beliebige Zeichen (der *
braucht keinen
\
)\(
ausdruck\
)+
das
Muster ausdruck
muss mindestens einmalvorkommen
ausdruck
{
von
,
bis
}
ausdruck
muss mindestens von
mal und höchstens bis
mal vorkommen.ausdruck
{
n
}
ausdruck
muss genau n
mal vorkommen.^
ausdruck
ausdruck
muss am Zeilenanfang stehen.Ausdruck
$
ausdruck
muss am Zeilenende stehen.
Die
Operatoren
\+
und *
sind "gefräßig", d.h. sie nehmen soviel als möglich,
u.U. bis zum Ende eine Zeile. Der Ausdruck a.*h
passt auf ah
,
ahh
,
abh
,
abhcdh
.
Beispiele:
[0-9A-Fa-f]+
erkennt
Hexadezimalzahlen, z.B. 123
,
abc
,
F000
usw.\(un\)*stable
erkennt
stable
,
unstable
,
ununstable
,unununstable
etc.\(un\)\{-,1}stable
erkennt
stable
und unstable
int [a-z]\+(.*); passt
auf alle Prototypen von
Kleinbuchstaben im Namen haben.
int
-Funktionen,
die nurKleinbuchstaben im Namen haben.
Tipps
Wenn man nicht weiß, in welchem Modus sich dervi
bzw. vim
gerade befindet, drückt man am
besten die ESC
-Taste, dann ist man
sicher im Befehlsmodus.Generell ist zu empfehlen,
:help tutor
zu machen.
Mit
:version
erhält man
Informationen zur Variable $VIM
.
Der
vi
bzw. vim
speichert regelmäßig gemachte Änderungen in eine Datei, die mit .
(Punkt) beginnt und mit .swp
(oder .swb
,
.swc
usw.) endet. Dazwischen befindet
sich der Name der editierten Datei (Aufruf vim
hello.c
, Sicherungsdatei .hello.swp
).
Beim Speichern und Beenden wird diese Datei gelöscht. Wird der vi
bzw. vim
gewaltsam terminiert
(Stromausfall, killall -KILL vim
,
schließen des Terminals, in dem der vim
läuft o.ä.), dann wird diese Sicherungsdatei nicht gelöscht. Darin
sind im Allgemeinen fast alle Änderungen gespeichert.Wird nach dem "Absturz" der
vim
wieder mit der vorigen Datei gestartet, so gibt er die Information
aus, dass es eben diese Sicherungsdatei gibt und wie man die letzten
Änderungen wiederherstellt. Das funktioniert normalerweise mit vim
-r datei
(-r
wie r
ecover).
Wenn man dann alles geprüft hat, dann speichert man die Datei.
Danach muss man die Sicherungsdatei löschen, da sonst wieder beim
Starten von vim
die Information
angezeigt wird.vim
ist ein konfigurierbarer Editor,
er hat eine eigene Programmiersprache eingebaut. Es gibt für viele
Aufgaben fertige Scripts im Internet (http://www.vim.org
ist ein guter Einstiegspunkt). Solche Scripts werden automatisch
geladen, wenn sie sich im Verzeichnis ~/.vim/plugin
befinden.Abonnieren Posts [Atom]
Kommentar veröffentlichen