Vim: Unterschied zwischen den Versionen
T-m (Diskussion | Beiträge) |
Dirk (Diskussion | Beiträge) K Kleinkram, etwas Stil, etc. |
||
Zeile 1: | Zeile 1: | ||
{{hinweis|Dieser Artikel bezieht sich ausdrücklich auf '''Vim''', den leistungsfähigeren Klon von [[vi]]}} | |||
{{righttoc}} | |||
[[Bild:Vi_fstab.png|thumb|300px|Vim zeigt eine [[fstab]] in [[xterm]], hier mit aktiviertem Syntax-Highlighting]] | |||
Vim ist einer der am weitesten fortgeschrittenen, freien Klone des Standardeditors [[vi]] und als solcher ein de facto Standard vor allem auf Linuxsystemen. Wesentliche zusätzliche Eigenschaften an Vim sind unter anderem seine Programmierbarkeit, die Erweiterbarkeit durch Plugins, die Möglichkeit der farbige Darstellung des Codes (Syntax-Highlighting), das so genannte „Code Folding“ (einklappen von Logisch zusammenhängenen Abschnitten in Quelltexten) sowie mehrere gleichzeitig geöffnete Texte innerhalb der selben Vim-Instanz oder auch die Darstellung in mehreren Teilfenstern. | |||
Vim war dem Editor [http://elvis.vi-editor.org/whatiselvis/index.html Elvis] {{sprache|en}} sehr ähnlich, als dieser noch keinerlei GUI-Fähigkeiten besaß. Vim und Elvis besitzen noch heute, in den über [[vi]] hinausgehenden Optionen, eine Reihe von Gemeinsamkeiten. | |||
Vim | == Installation == | ||
Vim wird nicht implizit beim Arch-Setup als Standard installiert, da dort [[vi]] zum Einsatz kommt. Vim muss manuell Installiert werden. | |||
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, um Vim nicht über das längere vi'''m''' aufrufen zu müssen. | |||
Die '''GUI-Variante gVim''' befindet sich in einem gesonderten Paket. | |||
pacman -S gvim | pacman -S gvim | ||
Es | Dieses Programm öffnet ein eigenes X11-Fenster, besitzt ein Menü, ein Popup-Menü, Datei-Dialoge, Scrollbar, und weitere GUI-Spezifische Eigenschaften. | ||
Es existieren zudem in den Repositories eine ganze Reihe separat zu installierender 'Plugins, siehe [http://www.archlinux.de/?page=Packages], Schlüsselwort "vim". | |||
==Konfiguration== | == Konfiguration == | ||
{{hinweis|[[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 und die Option noexrc setzen.}} | |||
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: | 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 all | ||
:set <option> oder :set no<option> | :set <option> oder :set no<option> | ||
:set <option> = <value> | :set <option> = <value> | ||
:mk oder :mk! (oder :mkexrc oder :mkexrc!) | :mk oder :mk! (oder :mkexrc oder :mkexrc!) | ||
Die Auflistung aller möglichen Einstellungen über das klassische, von [[vi]] bekannte | <code>:mkexrc</code> und <code>:mkexrc!</code> führen u.U. zu oben genanntem Konflikt mit [[vi]]. Statt <code>:set <option></code> zum Setzen von Optionen kann auch <code>:set no<option></code> zum entfernen der Optionen verwendet werden. | ||
verschafft bereits intuitiv Klarheit über Vieles. Zu den einzelnen Einstellungen siehe detailliert Dokumentation Kapitel 5 [[http://vimdoc.sourceforge.net/htmldoc/usr_05.html]] | Die Auflistung aller möglichen Einstellungen über das klassische, von [[vi]] bekannte <code>:set all</code> verschafft bereits intuitiv Klarheit über Vieles. Zu den einzelnen Einstellungen siehe detailliert Dokumentation Kapitel 5 [[http://vimdoc.sourceforge.net/htmldoc/usr_05.html]] | ||
gVim besitzt zudem die Möglichkeit, Einstellungen auch über Menüs bzw. grafische Dialoge vorzunehmen, was wesentlich | gVim besitzt zudem die Möglichkeit, Einstellungen auch über Menüs bzw. grafische Dialoge vorzunehmen, was wesentlich bequemer ist. | ||
===Nützliche Optionen=== | ===Nützliche Optionen=== | ||
set '''no'''backup | set '''no'''backup Backups ausschalten | ||
set ruler | set ruler Zeile und Spalte anzeigen | ||
set '''no'''compatible | set '''no'''compatible nicht im Kompatiblitätsmodus arbeiten, d.h. Vim-spezifische Erweiterungen nutzen | ||
set '''no'''exrc | set '''no'''exrc ~/.exrc nicht benutzen | ||
set '''no'''errorbells | set '''no'''errorbells nicht piepsen, wenn man an Textbegrenzungen anstößt o.ä. (das nervt!) | ||
set showmode | set showmode den aktuellen Mode anzeigen | ||
set '''no'''wrap | set '''no'''wrap lange Zeilen nicht umbrechen | ||
==Tips und Tricks== | ==Tips und Tricks== | ||
Neben der Grundkonfiguration von Vim gibt es eine Menge weiterer, sinnvoller Einstellungen. | |||
===.viminfo wächst=== | ===.viminfo wächst=== | ||
Wer viel mit Vim arbeitet, wird feststellen, dass die Datei ~/.viminfo anwächst. Diese Datei speichert die History dessen, was der Benutzer mit Vim macht | Wer viel mit Vim arbeitet, wird feststellen, dass die Datei ~/.viminfo anwächst. Diese Datei speichert bis zu einer gewissen Länge die History dessen, was der Benutzer mit Vim macht. Sie enthält dabei auch Textbestandteile, allerdings möglicherweise nicht nur von Dateien, die es längst nicht mehr gibt, sondern vielleicht auch sicherheitsrelevante, sensible Daten. – Man kann diese Datei getrost löschen, auch automatisch, z.B. beim Login. Damit einhergehend verliert man dann aber die Möglichkeit, bereits schon mal eingegebene Befehle mit <code>: <↑></code> zu durchsuchen. | ||
===Syntax-Highlighting ausgefallen=== | |||
Möglicherweise kommt es 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 | syntax enable | ||
einfügt. Nach einem Neustart von Vim | |||
einfügt. Nach einem Neustart von Vim funktioniert da Syntax-Highlighting wieder wie erwartet. Man sollte mittels <code>:set all</code> den Wert der Option <code>syntax</code> prüfen. Dieser sollte auf "vim" stehen. Wenn nicht, sollte man dies ebenfalls in die <code>~/.vimrc</code> schreiben (<code>set syntax=vim</code>). | |||
===Eingabemodus automatisch verlassen=== | ===Eingabemodus automatisch verlassen=== | ||
Vim erlaubt | Vim erlaubt 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 () | :function CondRight () | ||
Zeile 75: | Zeile 78: | ||
imap <pagedown> <esc><pagedown>:call CondRight()<CR> | imap <pagedown> <esc><pagedown>:call CondRight()<CR> | ||
== | ==Siehe auch== | ||
* [[vi|Artikel zu vi hier im Wiki]] | |||
==Weblinks== | |||
* [http://www.vim.org/ Offizielle Homepage] {{sprache|en}} | |||
* Anleitungen/Tutorials | |||
** [http://tnerual.eriogerg.free.fr/vimqrc-ge.pdf PDF-Datei von tnerual.eriogerg.free.fr] {{sprache|en}} | |||
** [http://lug.fh-swf.de/vim/vim-kurzanleitung.pdf PDF-Datei von lug.fh-swf.de] {{sprache|de}} | |||
** [http://www.oualline.com/vim-cook.html Vim Cookbook] {{sprache|en}} | |||
* [http://tnerual.eriogerg.free.fr/vimqrc-ge.html ausführliche, tatsächlich Vim-spezifische Tastenübersicht] {{sprache|en}} | |||
* [http://vim.wikia.com/wiki/Vim_Tips_Wiki umfangreiches Wiki mit Tipps und Tricks] {{sprache|en}} | |||
[[Kategorie:Konsole]] | [[Kategorie:Konsole]] | ||
[[Kategorie:Editoren]] | [[Kategorie:Editoren]] |
Version vom 7. Oktober 2009, 09:22 Uhr
Hinweis: Dieser Artikel bezieht sich ausdrücklich auf Vim, den leistungsfähigeren Klon von vi
Vim ist einer der am weitesten fortgeschrittenen, freien Klone des Standardeditors vi und als solcher ein de facto Standard vor allem auf Linuxsystemen. Wesentliche zusätzliche Eigenschaften an Vim sind unter anderem seine Programmierbarkeit, die Erweiterbarkeit durch Plugins, die Möglichkeit der farbige Darstellung des Codes (Syntax-Highlighting), das so genannte „Code Folding“ (einklappen von Logisch zusammenhängenen Abschnitten in Quelltexten) sowie mehrere gleichzeitig geöffnete Texte innerhalb der selben Vim-Instanz oder auch die Darstellung in mehreren Teilfenstern.
Vim war dem Editor Elvis sehr ähnlich, als dieser noch keinerlei GUI-Fähigkeiten besaß. Vim und Elvis besitzen noch heute, in den über vi hinausgehenden Optionen, eine Reihe von Gemeinsamkeiten.
Installation
Vim wird nicht implizit beim Arch-Setup als Standard installiert, da dort vi zum Einsatz kommt. Vim muss manuell Installiert werden.
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, um Vim nicht über das längere vim aufrufen zu müssen.
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, Scrollbar, und weitere GUI-Spezifische Eigenschaften.
Es existieren zudem in den Repositories eine ganze Reihe separat zu installierender 'Plugins, siehe [1], Schlüsselwort "vim".
Konfiguration
Hinweis: 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 und die Option noexrc setzen.
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!)
:mkexrc
und :mkexrc!
führen u.U. zu oben genanntem Konflikt mit vi. Statt :set <option>
zum Setzen von Optionen kann auch :set no<option>
zum entfernen der Optionen verwendet werden.
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 bequemer 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ößt o.ä. (das nervt!) set showmode den aktuellen Mode anzeigen set nowrap lange Zeilen nicht umbrechen
Tips und Tricks
Neben der Grundkonfiguration von Vim gibt es eine Menge weiterer, sinnvoller Einstellungen.
.viminfo wächst
Wer viel mit Vim arbeitet, wird feststellen, dass die Datei ~/.viminfo anwächst. Diese Datei speichert bis zu einer gewissen Länge die History dessen, was der Benutzer mit Vim macht. Sie enthält dabei auch Textbestandteile, allerdings möglicherweise nicht nur von Dateien, die es längst nicht mehr gibt, sondern vielleicht auch sicherheitsrelevante, sensible Daten. – Man kann diese Datei getrost löschen, auch automatisch, z.B. beim Login. Damit einhergehend verliert man dann aber die Möglichkeit, bereits schon mal eingegebene Befehle mit : <↑>
zu durchsuchen.
Syntax-Highlighting ausgefallen
Möglicherweise kommt es 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 funktioniert da Syntax-Highlighting wieder wie erwartet. Man sollte mittels :set all
den Wert der Option syntax
prüfen. Dieser sollte auf "vim" stehen. Wenn nicht, sollte man dies ebenfalls in die ~/.vimrc
schreiben (set syntax=vim
).
Eingabemodus automatisch verlassen
Vim erlaubt 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>