Vim

Aus wiki.archlinux.de

Abgrenzung: Dieser Artikel bezieht sich ausdrücklich auf Vim, den leistungsfähigeren Klon von vi


Einleitung

Vim zeigt eine fstab in xterm, hier mit aktiviertem Syntax-Highlighting

Vim ist wahrscheinlich der am weitesten fortgeschrittene, freie Klon des Standardeditors vi und als solcher ein de facto Standard vor allem auf Linuxsystemen. Wesentliche zusätzliche Eigenschaften an Vim sind seine Programmierbarkeit, Pluginfähigkeit, farbige Darstellung, Code Folding, mehrere gleichzeitig geöffnete Texte, Darstellung in mehreren Teilfenstern u.v.m.

Installation

Vim wird neuerdings nicht mehr implizit beim Arch Setup als Standard installiert, da dort vi zum Einsatz kommt. Vim wird als normales Paket manuell installiert:

pacman -S vim

Dies installiert das Konsolenprogramm, das auf der Konsole oder in einem Terminal läuft und allein dessen Fähigkeiten zur Textausgabe nutzt. Das binary heisst /usr/bin/vim-normal, der Name vim ist nur ein symbolischer Link. Man kann zudem, falls man vi nicht benutzt, von Hand auch einen Link namens vi anlegen.

Die GUI-Variante gVim befindet sich in einem gesonderten Paket:

pacman -S gvim

Dieses Programm öffnet ein eigenes X11-Fenster, besitzt ein Menü, ein Popup-Menü, Datei-Dialoge, Scrollbars usw.

Es existiert zudem in den community- und extra-repositories eine ganze Reihe separat zu installierender Plugins, siehe [[1]], Schlüsselwort "vim".

Konfiguration

Achtung: vi und Vim benutzen mindestens eine Konfigurationsdatei gemeinsam: ~/.exrc Sofern beide Programme installiert sind, ist es klug, das zu berücksichtigen. Die Einstellungen sind so gut wie nicht kompatibel. Man sollte in so einem Fall Vim ausschliesslich über ~/.vimrc konfigurieren.

Manuelle Einstellungen können einfach in diese Konfigurationsdatei geschrieben werden, dann ohne führende Doppelpunkte. Vim bietet allerdings auch Möglichkeiten an, solche Optionen zur Laufzeit zu setzen, zu testen und in die Konfigurationsdatei(en) zu speichern. Die Kommandos dazu lauten:

:set all

:set <option>   oder   :set no<option>

:set <option> = <value>

:mk   oder   :mk!   (oder   :mkexrc   oder   :mkexrc!)

(Letztere in Klammern führen u.U. zu oben genanntem Konflikt mit vi.)

Die Auflistung aller möglichen Einstellungen über das klassische, von vi bekannte

:set all

verschafft bereits intuitiv Klarheit über Vieles. Zu den einzelnen Einstellungen siehe detailliert Dokumentation Kapitel 5 [[2]]

gVim besitzt zudem die Möglichkeit, Einstellungen auch über Menüs bzw. grafische Dialoge vorzunehmen, was wesentlich eleganter ist.

Nützliche Optionen

set nobackup             Backups ausschalten
set ruler                Zeile und Spalte anzeigen
set nocompatible         nicht im Kompatiblitätsmodus arbeiten, d.h. Vim-spezifische Erweiterungen nutzen
set noexrc               ~/.exrc nicht benutzen
set noerrorbells         nicht piepsen, wenn man an Textbegrenzungen anstösst o.ä. (das nervt!)
set showmode             den aktuellen Mode anzeigen
set nowrap               lange Zeilen nicht umbrechen

Tips und Tricks

Syntax Highlighting ausgefallen

Möglicherweise kommt es neuerdings nach einem Update dazu, dass das bislang einwandfrei funktionierende, farbige Syntax Highlighting plötzlich ausgeschaltet ist. Dies kommt, weil beim Update von Vim dessen globale Konfigurationsdatei ausgetauscht wird. Man kann es explizit wieder einschalten, indem man lokal in ~/.vimrc die Zeile

syntax enable

einfügt. Nach einem Neustart von Vim sollte es augenblicklich wieder funktionieren wie früher. Ggf. auch mit :set all den Wert der Option syntax prüfen. Dieser sollte auf "vim" stehen. Wenn nicht, dann ebenfalls ~/.vimrc:

set syntax=vim

Eingabemodus automatisch verlassen

Vim erlaubt (anders als vi) im Eingabemodus Cursorbewegungen. Dies ist ein Tribut an jüngere Benutzer, die modeless Editoren gewöhnt sind und möglichst frei schreiben wollen. Dies kann allerdings signifikant stören, sofern der versierte Vim-Benutzer, der mit Kommandos arbeitet, gleich nach der Cursorbewegung ein Kommando ausführen will. Oft hämmert man dann das Kommando in den Text und muss es nachträglich mühsam wieder entfernen, um es dann noch einmal einzutippen. - Vim erlaubt das Mappen von Tasten, auch spezifisch nur für bestimmte Modi. Man kann also die Cursortasten im Eingabemodus ganz nach Belieben so umgestalten, dass sie nicht nur die Cursorbewegung ausführen, sondern auch automatisch den Eingabemodus beenden, so dass Vim gleich zur Eingabe eines neuen Kommandos bereitsteht. Dazu dient folgendes kleine Stück Code, das in die ~/.vimrc gehört:

:function CondRight ()
: if col(".") > 1
:  call cursor(line("."), col(".") + 1)
: endif
:endfunction

imap <up>         <esc><up>:call CondRight()<CR>
imap <down>       <esc><down>:call CondRight()<CR>
imap <left>       <esc>
imap <right>      <esc>:call CondRight()<CR><right>
imap <home>       <esc><home>
imap <end>        <esc><end>
imap <pageup>     <esc><pageup>:call CondRight()<CR>
imap <pagedown>   <esc><pagedown>:call CondRight()<CR>

Externe Links

Offizielle Homepage [[3]]

Dokumentationen/Tutorials [[4]], [[5]]