vim entsteht seit 1988 unter Leitung
von Bram Moolenaar (Niederlande):
Amiga -->
vi-imitation --> vi improved, u.a. mit multilevel-Undo,
Screen splitting u.a.
Inzwischen u.a. dreimal beliebtester Editor beim Linux Journal (USA), liegt jeder Linux-Distribution bei, hat vi ersetzt und wird meist nicht als nicht-vi erkannt
ca. 250.000 Zeilen C, Lizenz sehr GPL-artig; »Charityware«: Spendenaufforderung für Waisenkinder in Uganda
Fast 100% vi-kompatibel
außerordentlich leistungsfähig, vor allem durch implementierte, nicht zu komplizierte Skriptsprache
riesige Hilfe (3.5 MB Text), beste, die ich bisher sah
Hier nur Exkurs; ansonsten Start mit »:help« (Tutorial, Überblick, 2 Manuals)
Multilevel-UNDO: Undo-Stack, Befehle »u« und »^R« V
.vimrc muss vorhanden sein, sonst vi-kompatibles Verhalten – Option »nocp« (»nocompatible«) V
vimtutor V
:help, :help set, :help R, :help format^D, :help ^R<Tab> V
:helpg '$' mit :cw V
visual mode:
V -
zeilenweise
v - zeichenweise
^V –
Rechteck
Kommandos wie c (change), d (delete),
y (yank) funktionieren, aber auch >>
(verschieben) V
highlight search: »:set
highlightsearch« oder »set hls« V
Farbe
selbstverständlich konfigurierbar:
:highlight Visual
ctermbg=2 term=bold cterm=bold
History: Bei Suche und
ex-Kommandos V
genial:
q/ und q: (»:help cmdwin«) V
Vervollständigung beim Schreiben: ^P, ^N
Wortsuche: *, #
mappings: Endlich so, wie man
sie sich wünscht:
:imap <S-F1> Stammtisch
:map
<S-F1> ieingefügter Stammtisch<Esc> V
Extrem einfache Benutzung, Kommando q. Beispiel zum Unterstreichen, Kommandofolge:
qa "recording ein
Yp "Zeile
kopieren
:.s,.,-,g "durch »-« ersetzen
q
"recording aus
Mit @a kann die Tastenfolge nun abgespielt
werden. V
Geht ebenso »sichtbar« (z.B. per
Skript):
:let @a="Yp:.s/./-/g \<CR>"
Markieren im visual mode, Falten mit zc (close), Öffnen mit zo (open) V
Falten mit Markern:
set
foldmarker={,}
set foldmethod=marker
Weitere Methoden: Ausdrücke, Einrückung, Syntaxregeln, Differenzen (vimdiff, s.u.)
Vorteile: Übersicht, Umsortieren (gefaltete Zeilen können wie eine behandelt werden)
Ist nur Information über den Text, nicht im Text enthalten --> Retten mit mkview
Wie bei Hilfe; ^W + ...
s – split horizontal
v – split vertikal
Cursortasten – Fensterwechsel
_ (Underscore) max. vergrößern (hor.), | vertikal
= gleiche Größe
... usw.; hat sich bei Multiscreening in einer Konsole und mehreren Fenstern sowie Arbeitsflächen eigentlich überlebt, wird aber bei Hilfe und z.B. vimdiff gebraucht.
Spezieller Faltungsmodus mit speziellen Optionen, eigentlich immer noch ein vi. V
Nächstes geniales Feature:
:options V 5,hls
Einfache Skriptsprache mit Konstanten
(Integer oder String, Interpretation kontextabhängig):
:echo
"123Hunde" + 5
ergibt »128«.
Variable werden nach Präfix
unterschieden, u.a.:
heiko – global (außer
innerhalb von Funktion, dort auch l:heiko)
s:mario
– Skript-lokal (auch: w: - window, b: -
Puffer)
a:christian – Funktionsargument
&hls
– Option (»:set hls« ist äquivalent zu »:let
&hls=1«) V
@a
– Register (unter vi mit »"aY«
angesprochen)
$TERM – Umgebungsvariable
Die meisten Operatoren aus C sind implementiert, zusätzlich ».« (string concatenate).
An Steueranweisungen gibt es nur while und if. Außerdem ist eine C++-ähnliche Ausnahmebehandlung implementiert.
Funktionen sind global oder skript-lokal, also »s:Myfunc()«.
Es gibt 118 vordefinierte Funktionen, u.a. auch für Dialoge.
Alle ex-Befehle sind verfügbar, insbesondere »normal«, mit dem vi-Befehle ausgeführt werden können.
Beispiel: mkfliess.vim V
Werden bei bestimmten Events und für bestimmte Dateitypen ausgeführt.
Beispiele:
:autocmd BufNewFile *.[ch] r skeleton.pat
Bei neuen C-Dateien wird automatisch eine Musterdatei (mit Header) eingelesen.
gzip-Plugin (stark gekürzt):
augroup gzip
autocmd!
autocmd
BufReadPost,FileReadPost *.gz '[,']!gunzip
autocmd
BufWritePost,FileWritePost *.gz !gzip <afile>:r
augroup END
Damit können komprimierte Dateien »direkt« editiert werden (das reale Skript kann viel mehr, u.a. auch *.Z, *,bz2, gunzip bei »:r« usw.).
gpg-Plugin: »Direktes« Editieren von GnuPG-chiffrierten Dateien (symmetrisch chiffriert), wobei Passphrase nur einmal eingegeben werden muss (wird in Variablen »s:key« versteckt, ist also nicht ausspähbar). V
PLUGINS sind vim-Skripte in $HOME/.vim/plugin; sie werden beim Start automatisch ausgeführt.
Einrücken bekanntlich schon bei vi mit »set autoindent« (»set ai«) und »set shiftwidth« (»set sw«).
Absatz formatieren mit Kommando gqap (unlogisch, g-Kommando ...).
Äußerst leistungsfähige Formatierungsoptionen, speziell für C-Programme Option cindent V
Auch externe Programme können eingebunden werden.
Für 384 Sprachen existierent Syntaxbeschreibung; Option »filetype« (»ft«) wird meist automatisch gesetzt. V
Bei der täglichen Arbeit außerordentlich hilfreich!
make: Auswertung der Compilermeldungen (konfigurierbar), Sprung zum Fehler V
ctags: ctags *.c; Befehl CTRL/] springt zu Funktionsdefinition; Tag-Stack ...
cscope: Erweiterung auf Variable usw. (cscope-Interface eingebunden, nicht standardmäßig in vim enthalten: Selbst übersetzen!)
python: Zugriff auf
vim-Kommandos, Fenster, Puffer, Cursor über
vim-Modul:
vim.command(str)
vim.eval(str)
vim.error
(Ausnahmentyp)
vim.buffers, vim.windows, vim.current(.line,
.buffer ...)
Beispiel: »:python current.line =
upper(current.line)«
Noch kein Input (kommt
vermutlich noch!).
perl: Wirkt weniger flexibel,
Beispiel:
:perl @l = ("L1", "L2",
"L3")
:perl $curbuf->Append(10, @l)
(drei
Zeilen werden anZeile 10 angehängt); Liste fester Funktionen
kann mit »:perl ...« gerufen werden.
gvim: setzt aber Kenntnis des vim voraus. Leckerbissen: Hexedit. V
evim: Extra für Gumbies kaputtkonfigurierter vim, kann wie Notepad ohne Vorkenntnisse genutzt werden (vorwiegend mit bayrischer Tastatur). V
Nutzerdefinierte Kommandos (mit Vervollständigung)
Modelines
Abkürzungen
Ausgabeumlenkung
Debugging
Konfiguration
neue Kommandos (u.a. im Input-Modus)
Retten und Laden
Colorschemes
Backup
Marken
... die 3.5 MB Hilfe sind ziemlich konzentriert!