version 5.7
"" ============================================================================
""  ~/.vimrc - persönliche Konfigurationsdatei für Vim
"" ============================================================================
""  $Id: dotvimrc,v 1.14 2000/06/26 18:28:59 tb Exp $
"" ============================================================================
""  Diese Datei darf unter einer beliebigen Version der GPL benutzt werden.
""
""  URL: http://www.trash.net/~thomasb/vim/dotvimrc      (Plain ASCII)
""       http://www.trash.net/~thomasb/vim/dotvimrc.html (HTML-Version)
""       http://www.trash.net/~thomasb/vim/index.html    (Vim-Seite)
""
""  (c) 1999,2000 by Thomas Bader <thomasb@trash.net>
"" ============================================================================
""  Anmerkung: Diese Datei ist noch von drei weiteren Dateien abhängig
""  (».vimrc.html«, ».vimrc.typos« sowie ».vimrc.urls«). Diese Dateien sind
""  unter http://www.trash.net/~thomasb/vim/index.html#setup erhältlich. Ebenso
""  ist dort eine ».gvimrc« verfügbar, die vom GVim (Vim mit einem GUI) verwendet
""  wird. Die ».gvimrc« ist aber optional.
"" ============================================================================
""  Die HTML-Version dieser Datei lässt sich direkt aus Vim erstellen. Dazu
""  benutzt man
""
""       ESC
""       :set syntax=vimrc
""       :syntax on
""       :so $VIMRUNTIME/syntax/2html.vim
"" ============================================================================
""  Bei Problemen kriegt man jederzeit Hilfe durch das Kommando »:help« bzw.
""  »:help <THEMA>«, wobei <THEMA> durch den Namen der Funktion, über die man
""  etwas erfahren möchte, ersetzt werden muss. Wenn man z.B. wissen möchte,
""  welche Auswirkung der Befehl »:set nu« hat, dann würde man »:help nu«
""  aufrufen. Ebenso geht dies mit Funktionen; wenn man z.B. wissen möchte, was
""  passiert, wenn man »:version« eingibt, würde man »:help version« eingeben.
"" ============================================================================

"" ----------------------------------------------------------------------------
""  Externe Dateien
"" ----------------------------------------------------------------------------

" (Hinweis: Dies ist direkt am Anfang, da diese Variablen evt. bei jedem Upgrade
" geändert werden müssen)

" Wo ist die Hilfedatei zu finden?
        set helpfile=/usr/local/share/vim/vim57/doc/help.txt

" Wörterbücher 
        set dictionary=/usr/local/dict/words,/usr/local/dict/german.words
        " Die Dateien sind z.B. von
        " ftp://ftp.fu-berlin.de/misc/dictionaries/unix-format zu kriegen. Aber
        " Achtung: Die obige Quelle enthält nur rel. alte Versionen.

" Manchmal ist es praktisch, Tippfehler zu beseitigen können. In der Datei
" ».vimrc.typos« sind aus diesem Grund verschiedene Abbrevations, die Typos
" korrigieren sollen, drin
        source ~/.vimrc.typos

" Machmal ist es praktisch, wenn ich in einem Text oder Posting eine URL mit
" einer Abbrevation abrufen kann. Diese URLs stehen in einem eigenen File, damit
" ich die URLs bequemer verwalten kann
        source ~/.vimrc.urls

" In der ».vimrc.html« sind einige Abbrevations für HTML-Tags drin. Ich habe
" diese in eine eigene Datei verlegt, weil ich so Speicher sparen kann (die Tags
" werden schliesslich nicht immer benötigt)
        if has("autocmd")
                autocmd BufNewFile,Bufread *.html,*.htm,*.shtml,*.epl,*.php3,*.sgml,*.de,*.en source ~/.vimrc.html
        endif

"" ----------------------------------------------------------------------------
""  Abbrevations
"" ----------------------------------------------------------------------------

" Meine Telefon- und Faxnummer (keine URL, deshalb nicht in .vimrc.html)
        iab Uphone (++41 62) 8971003

" Meine Handynummer
        iab Uhandy (++41 76) 5601509

" Meine Snailmailadresse
        iab Usnail Thomas Bader<C-M>Waldeck 2<C-M>CH-5102 Rupperswil

" Meine ICQ-Nummer
        iab Uicq 46323601

" Datum/Uhrzeit einfügen
        iab DATE <C-R>=strftime("%y%m%d")<CR>
                        " Resultat: 000424
        iab TIME <C-R>=strftime("%H:%M")<CR>
                        " Resultat: 18:47
        iab FULLDATE <C-R>=strftime("%a %b %d %T %Z %Y")<CR>
                        " Resultat: Mon Apr 24 18:48:45 CEST 2000
" Zwei *lange* Nummern
        iab Npi 3.1415926535897932384626433832795028841972
        iab Ne  2.7182818284590452353602874713526624977573

" *Wirklich* lange Wörter
        iab Udd Donaudampfschiffahrtgesellschaftskapitaenwitwenrentengesetzzusatzparagraph
        iab Ui18n  internationalization

" Das Alphabet & Zahlen
        iab Ualpha abcdefghijklmnopqrstuvwxyz
        iab UALPHA ABCDEFGHIJKLMNOPQRSTUVWXYZ
        iab Udigit 1234567890

" Für die Leute, die die Signatur nicht richtig abtrennen
        iab UsD Bitte trenn' Deine Signatur richtig ab.  Dies geschieht mit  "-- ", also "<Strich><Strich><Leerschlag>". Danke!
        iab UsE Please precede your signature with the sigdashes line ("-- "). Thanks!

"" ----------------------------------------------------------------------------
""  Allgemeines Verhalten
"" ----------------------------------------------------------------------------

" Automatisch speichern, wenn z.B. »:make« aufgerufen wird. Es sind auch noch
" andere Tags betroffen, sie »:help autowrite«.
        set autowrite

" Beim Speichern einer Datei sollten _keine_ Backups gemacht werden.
        set nobackup
        "set backup   " Vorsichtige Leute wählen wohl eher das hier

" Kein Backup machen, wenn eine Datei überschrieben wird.
        set nowritebackup  " Nützt nichts, da oben »nobackup« gesetzt wird
        "set writebackup   " Vorsichtige Leute wählen wohl eher das hier

" Vim soll sich niemals wie der Vi verhalten (Hinweis: Vim kann im
" compatible-Mode sogar die Bugs von Vi imitieren :)
        set nocompatible

" In der Statuszeile immer anzeigen, in welchem Modus man sich befindet
        set showmode

" Einen "Report" ausgeben, wenn x-Zeilen geändert wurden (0 = immer)
        set report=0

" Backspace (=> :help backspace)
        set backspace=2

" Piep bei Fehler auschalten
        set noerrorbells

" Die Höhe des Hilfefensters (wird mit ":help" aufgerufen)
        set helpheight=20

" Vim soll nicht automatisch im Insert-Mode gestartet werden, das ist verwirrend.
        set noinsertmode

" Die Statusmeldungen abkürzen  Bedeutung: 
"  »a« -> alle Nachrichten abgekürzt
"  »I« -> kein Intro (auch erreichbar über »:intro«)
" Die restlichen Möglichkeiten efährt man über »:help shortmess«
        set shortmess=aI

" Einige Optionen, die der Kompatibilität dienen. Siehe »:help cpoptions« für
" Informationen über die einzelnen Flags.
        set cpoptions=aABceFsJWy

" Das Verhalten der Buffers steuern
        set hidden

" Die Statuszeile soll _immer_ angezeigt werden, was dem Wert »2« entspricht
        set laststatus=2

" Wenn ein Makro (oder etwas anderes, dass nicht von Hand eingegeben wurde)
" läuft, wird solange es läuft kein Redraw der Anzeige vorgenommen
        set lazyredraw

" Modelines. Mit Hilfe von Modelines kann man spezielle Anweisung in ein
" ASCII-File schreiben, die dann von Vim ausgeführt werden (zur Zeit sind
" allerdings nur »set«-Anweisungen möglich). Wer mehr darüber erfahren möchte,
" sollte sich mal »:help modeline« ansehen.
        set modeline            " Hiermit werden Modelines angeschaltet
        set modelines=5         " Die letzten 5 Zeilen können eine Modeline
                                " sein.

" Wo soll gesucht werden... analog zu $PATH in der Shell. Wird z.B. für das
" Kommando »gf« verwendet.
        set path=.,~/
  " Programmierer werden hier eher folgendes verwenden wollen:
  "set path=.,~/,/usr/include,/usr/local/include

" Der Ruler ist die Anzeige rechts unten in der Statuszeile, die die Zeilennummer
" und den Abstand, den man von linken Rand hat, in Zeichen anzeigt. Beide Angaben
" werden durch ein Komma getrennt. Dieser sollte angezeigt werden (nützt aber
" nichts, da ich die Statuszeile bereits anders konfiguriert habe).
        set ruler

" In der Statuszeile soll immer angezeigt werden, in welchem Modus man sich
" befindet.
        set showmode

" Dateien mit folgende Suffixen bei dem ":edit"-Kommando ignorieren
        set suffixes=.aux,.bak,.dvi,.gz,.idx,.log,.ps,.swp,.tar

" 50 Kommandozeilenbefehle speichern. Dies ist vergleichbar mit der History von
" der bash bzw. zsh bzw. tcsh
        set history=50

" Teilweises Kommando in der Statuszeile anzeigen (abschalten bei
" langsamem Terminal)
        set showcmd

" Beim Navigieren mit den Cursortasten nicht an den Anfang der Zeile springen.
        set startofline

" Beim Teilen eines Fensters das neue automatisch über das alte setzen
        set nosplitbelow

" Wenn dies eingeschaltet ist, sucht vim nach Terminalbeschreibungen zuerst in
" seiner eigenen, internen Termcap. Dies ist nützlich, da auf vielen System
" die Systemweite Termcap meistens Fehler enthält.
        set ttybuiltin

" Beeinflusst das scrollen 
        set ttyscroll=999

" Was für Werte sollen in die viminfo geschrieben werden (werden beim
" nächsten Start wieder ausgelesen). Eine genaue Beschreibung findet sich
" unter »:help viminfo«
        set viminfo='20,"\50

" Soll der Bildschirm kurz flackern, wenn ein Fehler ensteht?
        set novisualbell

" Das visuelle Flackern des Terminals abschalten
        set t_vb=

" Entfernung vom rechten Rand, bei dem automatische Zeilenumbrüche
" starten
        set wrapmargin=1

" Aussehen der Statuszeile (Sollte wohl besser bei den Farben sein)
        set   statusline=%1*[%02n]%*\ %(%M%R%H%)\ *\ %2*%t%*\ *%=%{Options()}\ %3*<%l,%c%V,%p%%>%*
        " Diese Funktion wird von der Statuszeile gebraucht - da sie nur hier
        " und sonst nirgends gebraucht wird, ist sie hier (sonst gehörte sie
        " zu den Makros). Diese Funktion gibt in einem String zurück, welche
        " der hier ausgewählten Funktionen gesetzt sind -> sieht nett aus, auf
        " der Statuszeile.
        fu! Options()
                let opt=""
                if &ai|   let opt=opt." ai"   |endif
                if &et|   let opt=opt." et"   |endif
                if &hls|  let opt=opt." hls"  |endif
                if &nu|   let opt=opt." nu"   |endif
                if &ek|   let opt=opt." ek"   |endif
                if &list| let opt=opt." list" |endif
                if &paste|let opt=opt." paste"|endif
                if &shiftwidth!=8|let opt=opt." sw=".&shiftwidth|endif
                let opt=opt." tw=".&tw
                "let opt=opt."\[".&lines.",".&columns."\]"
                return opt
        endf
        " hi User1 cterm=bold ctermfg=cyan  ctermbg=white guifg=cyan guibg=white
        hi User1 cterm=NONE ctermfg=red   ctermbg=white guifg=red   guibg=white
        hi User2 cterm=NONE ctermfg=green ctermbg=white guifg=green guibg=white
        hi User3 cterm=NONE ctermfg=blue  ctermbg=white guifg=blue  guibg=white


"" ----------------------------------------------------------------------------
""  Anzeige von Text
"" ----------------------------------------------------------------------------

" Den Zeilenumbruch, wenn der Text in der Länge nicht ins Terminal passt,
" abschalten (das ist iritierend)
        set nowrap

" Sollen nach ".", "!" und "?" zwei Leerzeichen eingefügt werden?
" Das macht das lesen von Texten einfacher... finde ich ;) (Hinweis: Dazu sollte 
" »cptions« entsprechend gesetzt sein, siehe oben).
        set joinspaces

" Was für ein Hintergrund? (Zur Auswahl stehen "light" und "dark") 
" Dies beeinflusst die Farben beim Syntaxhighlithing
        set background=dark

" Wenn dies auf »on« gesetzt wird, wird vor jeder Zeile die aktuelle Zeilennummer
" ausgegeben. Dies ist allerdings nicht wünschenswert (Platz sparen), deshalb
" setze ich es auf »off«
        set nonumber    " BTW: Dies ist identisch mit »:set nu« bzw. »:set nonu«

" Ein nützliches Feature: Damit lassen sich TABs, Zeilenenden und Whitespaces
" durch spezielle Zeichen ersetzen, damit man sie leichter erkennen kann. Dazu
" muss man zuerst eine Liste der Zeichen, die einbezogen werden sollen, setzen:
        set listchars=tab:»·,trail:·
" Nun kann man das Feature einschalten:
        set list

"" ----------------------------------------------------------------------------
""  Verhalten während des Editierens
"" ----------------------------------------------------------------------------

" Automatisch Einrücken des Textes? (Nützlich beim Programmieren)
        set autoindent

" Sollen Tabulatoren zu Leerzeichen expandiert werden
        set expandtab

" Wie viele Leerzeichen zählt ein Tabstop?
        set tabstop=8

" Wieviele Leerzeichen sollen für eine Einrückung verwendet werden?
        set shiftwidth=8

" Nach wie vielen Zeilen soll der Zeilenumbruch erfolgen? 80 Zeichen passen grad
" auf die Konsole.
        set textwidth=80 " Gilt nicht bei eMail und News, siehe unten

" Ermöglicht das Eingeben von Umlauten
        set digraph

" Das arbeiten mit den Pfeiltasten im Insert-Mode erlauben (ist *subjektiv*
" bequemer bzw. intuitiver)
        set esckeys

" Formatoptionen (genaueres darüber erfährt man mit »:help fo-table«
        set formatoptions=cqrto

" Soll bei der Eingabe eines ")" kurz zu der dazugehörigen "("
" gesprungen werden? Eher nicht, das stört.
        set noshowmatch

"" ----------------------------------------------------------------------------
""  Suchen / reguläre Ausdrücke
"" ----------------------------------------------------------------------------

" Soll das Ergebniss einer Suche gehighlightet werden? Manchmal empfiehlt es
" sich, das abzuschalten (bei einigen Terminals).
        set hlsearch
        set incsearch

" Die Gross/Kleinschreibung beim Suchen soll nicht ignoriert werden
        set noignorecase

" Ich will auch nach "@", ".", "_", und "-" suchen können
        set iskeyword=@,48-57,_,192-255,-,.,@-@

" Erweiterte reguläre Ausdrücke verwenden?
        set magic

"" ----------------------------------------------------------------------------
""  Syntaxhighlighting/Farben
"" ----------------------------------------------------------------------------

" Syntaxhighlighting automatisch einschalten (funktioniert nur, wenn das
" einkommpilliert wurde).
        if has("syntax")
                syntax on
        endif

" Wie sehen Kommentare aus? (Dies ist ein Komma-Getrennte Liste von
" Zeichen, die Kommentare einleiten können.) Vor dem Zeichen steht noch ein
" spezielles Flag. Informationen über die Bedeutung dieser Flags kann man mit
" »:help format-comments«. 
        set comments=b:#,b:\",:%,fb:-,n:>,n:),b:\|

" Sprachen, die gehighlightet werden sollen
        set highlight=8r,db,es,hs,mb,Mr,nu,rs,sr,tb,vr,ws

" Die Farben von VIM in xterm
        if &term=="xterm"
                set t_Co=8
                set t_AB=^[[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm
                set t_AF=^[[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm
        endif

" Die Farben von Vim
        " Normaler Text (weiss auf schwarz) [Weiss sieht besser aus als Grau]
        hi normal               term=NONE cterm=NONE ctermfg=white  ctermbg=black
        "hi StatusLine           term=NONE cterm=NONE ctermfg=yellow ctermbg=red
        "hi StatusLineNC         term=NONE cterm=NONE ctermfg=black  ctermbg=white
        " Bereiche, in denen kein Text vorhanden ist (Blau, Schwarz)
        hi nontext              term=NONE cterm=NONE ctermfg=blue   ctermbg=black
        " Suchergebnis (Weiss, Rot)
        hi search                                    ctermfg=white  ctermbg=red
        " Kommentare (Cyan, Schwarz)
        hi comment                                   ctermfg=cyan   ctermbg=black
        " Der Cursor [000429]
        hi Cursor              term=NONE cterm=NONE  ctermfg=green  ctermbg=green
                " »hi Cursor« Funktioniert leider nicht wie gewünscht :-/

"" ----------------------------------------------------------------------------
""  Autocmds und Mappings
"" ----------------------------------------------------------------------------

" Ich beginne fast alle Mappings mit ",". Grund: Praktisch kein Kommando beginnt
" mit einem "," und das "," ist bei allen Keyboards an der selben Position.

" Spezielle Einstellungen für Newspostings
        if has("autocmd")
                " Das sowieso :=)
                au FileType mail set tw=60
                " Noch einmal gesondert, da ich nicht weiss, ob ich es für
                " Dateien != {Mail|News} ändern werde
                au FileType mail set expandtab
                au FileType mail set tabstop=3
                " Jeder kann sehen, welchen Editor ich benutze!
                au FileType mail let @"="X-Editor: Vim-".version." http://www.vim.org\n"|exe 'norm1G}""P'
        endif

" Signaturen nach Keywords auswählen
        nmap ,s :r!agrep -d "^-- $" ~/SIGS<S-LEFT>

" Signaturen sollen nicht gequotet werden (nötig für Mutt, da der dies nicht von
" alleine kann)
        map ,kqs G?^> *-- $<CR>d/^-- $/<C-M>
        if has("autocmd")
                autocmd BufRead /tmp/mutt* :normal ,kqs
        endif

" Hiermit lassen sich wunderbar in Newsposting zu lange Zeilen umbrechen ->
" Einfach die zu lange Zeile(n) im Visualmode auswählen und »Q« drücken.
" Dies ist nötig, da unter VIM 4.x der Shortcut nur »Q« war, in Version 5.x aber
" auf »gq« geändert wurde.
        map Q gq

" Aus der gerade geladenen Datei eine HTML-Version (inkl. Syntaxhighlighting)
" erstellen
        nmap 2HTML :so $VIMRUNTIME/syntax/2html.vim

" ROT13 encoden/decoden [000613]
"  Anmerkung: Seit Vim 5.3 ist das nun als g? bzw. g?? an Bord. Siehe
"  ":help q?"
        vmap ,dr :!tr A-Za-z N-ZA-Mn-za-m

" Eine Betreffszeile ändern (change-subject). Das alte Subjekt wird nach
" X-Old-Subject kopiert:
"
"   Subject: neues Subject
"   X-Old-Subject: altes Subject
"
" Eine andere Form ist:
"
"   Subject: neues Subject (was: altes Subject)
"
        map ,cs 1G/^Subject: <CR>yypIX-Old-<ESC>-W

" Eine Mail "dringend" machen (make-letter-urgent)
        map ,mlu 1G}OPriority: urgent<ESC>

" Den Empfänger einer Mail begrüssen, auf verschiedene Weisen
        map ,hi 1G}oHi!<CR><ESC>
        map ,he 1G}oHello, again!<CR><ESC>
        map ,ha 1G}oHallo!<CR><ESC>
        " Nun noch einige, mit dem Namen drin.
        map ;HI G/^\* /e+1<CR>ye1G}oHi, !<ESC>Po<ESC>
        map ;HE G/^\* /e+1<CR>ye1G}oHello, !<ESC>Po<ESC>
        map ;HA G/^\* /e+1<CR>ye1G}oHallo, !<ESC>Po<ESC>

" Quoting trimmen
        vmap ,trimm c[...]<ESC>

" Absenderadressen ändern
        " trash-from
        map ,tF 1G/^From: /e+1<CR>CThomas Bader <thomasb@trash.net><ESC>
        " domain-from
        map ,dF 1G/^From: /e+1<CR>CThomas Bader <thomas@t-bader.ch><ESC>
        " eniac-from
        map ,eF 1G/^From: /e+1<CR>CThomas Bader <thomasb@eniac.ch.eu.org><ESC>


" Codeschnippsel etc. einfügen. Bsp:
"
" ,---[]
" | Hier steht der Codeschnippsel
" `---[]
" 
       imap QC_ ,------[]<CR><CR>`------[]<UP>\| 

" Supercite-Quotes entfernen.
"   Vorher:     >  Thomas> text
"   Nachher:    > > text
        vmap ,kpq :s/^> *[a-zA-Z]*>/> >/<C-M>

" Hiermit lassen sich komprimierte Dateien on-the-fly editieren, ohne das ein
" manuelles entkomprimieren nötig wäre.
        augroup gzip
        " Alle GnuZIP-Kommandos entfernen
        au!
        " Das editieren von gzip-Dateien einschalten
        " (Der Binary-Modus wird benötigt)
        autocmd BufReadPre,FileReadPre          *.gz,*.bz2 set bin
        autocmd BufReadPost,FileReadPost        *.gz call GZIP_read("gunzip")
        autocmd BufReadPost,FileReadPost        *.bz2 call GZIP_read("bunzip2")
        autocmd BufWritePost,FileWritePost      *.gz call GZIP_write("gzip")
        autocmd BufWritePost,FileWritePost      *.bz2 call GZIP_write("bzip2")
        autocmd FileAppendPre                   *.gz call GZIP_appre("gunzip")
        autocmd FileAppendPre                   *.bz2 call GZIP_appre("bunzip2")
        autocmd FileAppendPost                  *.gz call GZIP_write("gzip")
        autocmd FileAppendPost                  *.bz2 call GZIP_write("bzip2")
        " Im Puffer entpacken mit "cmd"
        fun! GZIP_read(cmd)
        let ch_save = &ch
                set ch=2
                execute "'[,']!" . a:cmd
                set nobin
                let &ch = ch_save
                execute ":doautocmd BufReadPost " . expand("%:r")
        endfun
        " Datei wieder komprimieren mit "cmd"
        fun! GZIP_write(cmd)
                if rename(expand("<afile>"), expand("<afile>:r")) == 0
                        execute "!" . a:cmd . " <afile>:r"
                endif
        endfun
        " Datei anhängen mit "cmd"
        fun! GZIP_appre(cmd)
                execute "!" . a:cmd . " <afile>"
                call rename(expand("<afile>:r"), expand("<afile>"))
        endfun
        augroup END

" Ein bisschen Spass muss sein!
        au VimLeave * echo "Thanks for using Vim"version"!"
        " [000429] Leider funktioniert das nicht immer :( Weiss jemand, wieso?

"" ----------------------------------------------------------------------------
""  Tasten
"" ----------------------------------------------------------------------------

" Mit welcher Taste kommt man aus dem Paste-Modus raus?
        set pastetoggle=<f11>

" Welche Tasten können scrollen?
         set whichwrap=<,>,h,l

" Diese Taste expandiert Wildcards
        set wildchar=<TAB>

" Commandline im Emacs-Style. Obohl ich VI mag, bin ich sehr an diese Art der
" Kommandozeile gewöhnt. Zum Editieren ist VI aber schon besser ;)
        cnoremap <C-A>      <Home>
        cnoremap <C-B>      <Left>
        cnoremap <C-E>      <End>
        cnoremap <C-F>      <Right>
        cnoremap <C-N>      <End>
        cnoremap <C-P>      <Up>
        cnoremap <ESC>b     <S-Left>
        cnoremap <ESC><C-B> <S-Left>
        cnoremap <ESC>f     <S-Right>
        cnoremap <ESC><C-F> <S-Right>
        cnoremap <ESC><C-H> <C-W>
        cnoremap <ESC>[D <Left>
        cnoremap <ESC>[C <Right>

" Mappings für Cursortasten...
"      ersten für Solaris...
        map <ESC>OA <Up>
        map <ESC>OB <Down>
        map <ESC>OC <Right>
        map <ESC>OD <Left>
        imap <ESC>OA <Up>
        imap <ESC>OB <Down>
        imap <ESC>OC <Right>
        imap <ESC>OD <Left>

" dann fürs X-Terminal
        map <ESC>[A <Up>
        map <ESC>[B <Down>
        map <ESC>[C <Right>
        map <ESC>[D <Left>
        imap <ESC>[A <Up>
        imap <ESC>[B <Down>
        imap <ESC>[C <Right>
        imap <ESC>[D <Left>

"" ============================================================================
""  Ende der Datei
"" ============================================================================