Vim: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Jewox (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 2: Zeile 2:


[[Bild:Vi_fstab.png|thumb|300px|Vim zeigt eine [[fstab]] in [[xterm]], hier mit aktiviertem Syntax-Highlighting]]
[[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 beispielsweise
* seine Programmierbarkeit,
* die Erweiterbarkeit durch Plugins,
* die Möglichkeit der farbige Darstellung des Codes (Syntax-Highlighting),
* das so genannte „Code Folding“ (einklappen von Abschnitten im Text) sowie
* mehrere gleichzeitig geöffnete Texte innerhalb der selben Vim-Instanz oder auch
* die Darstellung in mehreren Teilfenstern.


Vim besitzt mit dem älteren [http://elvis.vi-editor.org/whatiselvis/index.html Elvis] {{sprache|en}} eine Reihe von Gemeinsamkeiten, beispielsweise in den über [[vi]] hinausgehenden Optionen. Auch das visuelle Markieren von Text mit v stammt ursprünglich aus Elvis.
Vim ist einer der am weitesten fortgeschrittenen, freien Klone des Standardeditors vi und als solcher ein de-facto-Standard vor allem auf Linuxsystemen. Zusätzliche Eigenschaften sind z.B.
* Syntax-Highlighting,
* Programmierbarkeit,
* Erweiterbarkeit durch Plugins,
* „Code Folding“ (Einklappen von Abschnitten im Text) sowie
* Darstellung in mehreren Teilfenstern.


== Installation ==
== 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
Vim ist im Repo extra enthalten und kann mittels [[Pacman]] 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 <code>/usr/bin/vim-normal</code>, 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.
Vim ist nur auf der Konsole oder in einem Terminal aufrufbar. Anleitungen zur Bedienung sind unter Weblinks zu finden.


Die '''GUI-Variante gVim''' befindet sich in einem gesonderten Paket.
Die GUI-Variante GVim befindet sich in einem gesonderten Paket.  
# pacman -S gvim


pacman -S gvim
Dieses Programm öffnet ein eigenes X11-Fenster, besitzt ein Menü, Datei-Dialoge, Scrollbar, und weitere GUI-Spezifische Eigenschaften.


Dieses Programm öffnet ein eigenes X11-Fenster, besitzt ein Menü, ein Popup-Menü, Datei-Dialoge, Scrollbar, und weitere GUI-Spezifische Eigenschaften.
''Hinweis:'' Vim steht in Konflikt mit GVim. Es kann entweder Vim oder GVim installiert werden, aber nicht beide Programme gleichzeitig. Siehe [http://www.archlinux.org/news/vimgvim-72411-update/ News: Vim/GVim 7.2.411 Update]


Es existieren zudem in den Repositories eine ganze Reihe separat zu installierender Plugins, siehe [http://www.archlinux.de/?page=Packages], Schlüsselwort "vim".
Es existieren zudem in den Repositories eine ganze Reihe separat zu installierender Plugins.


== Konfiguration ==
== Konfiguration ==
{{hinweis|[[vi]] und Vim benutzen mindestens eine Konfigurationsdatei gemeinsam: <code>~/.exrc</code> 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 <code>~/.vimrc</code> konfigurieren und die Option <code>noexrc</code> setzen.}}
''Hinweis:'' vi und Vim benutzen die Konfigurationsdatei <code>~/.exrc</code> gemeinsam, wenn beide Programme installiert sind. Die Einstellungen sind nicht kompatibel zueinander. Man sollte Vim ausschliesslich über <code>~/.vimrc</code> konfigurieren und die Option <code>noexrc</code> 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 in o.g. Konfigurationsdatei geschrieben werden, dann ohne führende Doppelpunkte. Vim bietet allerdings auch die Möglichkeit, solche Optionen zur Laufzeit zu setzen, zu testen und in die Konfigurationsdatei(en) zu speichern. Die Kommandos dazu lauten:


  :set all
  :set all
Zeile 38: Zeile 37:
  :mk  oder  :mk!  (oder  :mkexrc  oder  :mkexrc!)
  :mk  oder  :mk!  (oder  :mkexrc  oder  :mkexrc!)


<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.
<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.


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]]
Die Auflistung aller möglichen Einstellungen über das klassische, von vi bekannte <code>:set all</code> verschafft bereits intuitiv Klarheit über bereits getätigte Einstellungen.


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


===Nützliche Optionen===
===Nützliche Optionen===
Zeile 49: Zeile 48:
  set '''no'''compatible          nicht im Kompatiblitätsmodus arbeiten, d.h. Vim-spezifische Erweiterungen nutzen
  set '''no'''compatible          nicht im Kompatiblitätsmodus arbeiten, d.h. Vim-spezifische Erweiterungen nutzen
  set '''no'''exrc                ~/.exrc nicht benutzen
  set '''no'''exrc                ~/.exrc nicht benutzen
  set '''no'''errorbells          nicht piepsen, wenn man an Textbegrenzungen anstößt o.ä. (das nervt!)
  set '''no'''errorbells          nicht piepsen, wenn man an Textbegrenzungen anstößt o.ä.
  set showmode              den aktuellen Mode anzeigen
  set showmode              den aktuellen Mode anzeigen
  set '''no'''wrap                lange Zeilen nicht umbrechen
  set '''no'''wrap                lange Zeilen nicht umbrechen
  set nu                    Zeilennummern anzeigen
  set nu                    Zeilennummern anzeigen


==Tips und Tricks==
==Tipps und Tricks==
Neben der Grundkonfiguration von Vim gibt es eine Menge weiterer, sinnvoller Einstellungen.


===.viminfo wächst===
===Datei <code>.viminfo</code>===
Wer viel mit Vim arbeitet, wird feststellen, dass die Datei <code>~/.viminfo</code> 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.
Wer viel mit Vim arbeitet, wird feststellen, dass die Datei <code>~/.viminfo</code> 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 und 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===
===Syntax-Highlighting===
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 <code>~/.vimrc</code> die Zeile
Möglicherweise kommt es nach einem Update dazu, dass das bislang einwandfrei funktionierende Syntax-Highlighting plötzlich ausgeschaltet ist. Ursache ist dass beim Update von Vim dessen globale Konfigurationsdatei ausgetauscht wird. Man kann es explizit wieder einschalten, indem man in <code>~/.vimrc</code> die Zeile


  syntax enable
  syntax enable


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>).
einfügt. Nach einem Neustart von Vim funktioniert das 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 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 <code>~/.vimrc</code> gehört:
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 <code>~/.vimrc</code> gehört:


  :function CondRight ()
  :function CondRight ()
Zeile 89: Zeile 87:


==Weblinks==
==Weblinks==
* [http://www.vim.org/ Offizielle Homepage] {{sprache|en}}
* [http://www.vim.org/ Homepage : vim online] {{sprache|en}}
* [http://vim.wikia.com/wiki/Vim_Tips_Wiki Vim Tips Wiki] {{sprache|en}}
 
* Anleitungen/Tutorials
* Anleitungen/Tutorials
** [http://tnerual.eriogerg.free.fr/vimqrc-ge.pdf Kurzanleitung (2 Seiten)] {{sprache|de}}
** [http://tnerual.eriogerg.free.fr/vimqrc-ge.pdf Vim Kurzanleitung (2 Seiten, PDF)] {{sprache|de}}
** [http://tnerual.eriogerg.free.fr/vimqrc-ge.html ausführliche, tatsächlich Vim-spezifische Tastenübersicht (7 Seiten)] {{sprache|de}}
** [http://lug.fh-swf.de/vim/vim-kurzanleitung.pdf Vim Kurzanleitung (30 Seiten, PDF)] {{sprache|de}}
** [http://lug.fh-swf.de/vim/vim-kurzanleitung.pdf noch ausführlichere "Kurz"anleitung (30 Seiten)] {{sprache|de}}
** [http://tnerual.eriogerg.free.fr/vimqrc-ge.html VIM Quick Reference Card] {{sprache|de}}
** [http://www.oualline.com/vim-cook.html Vim Cookbook] {{sprache|en}}
** [http://www.oualline.com/vim-cook.html Vim Cookbook] {{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]]
[[en:Vim]]
[[en:Vim]]

Version vom 31. März 2012, 14:20 Uhr

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

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. Zusätzliche Eigenschaften sind z.B.

  • Syntax-Highlighting,
  • Programmierbarkeit,
  • Erweiterbarkeit durch Plugins,
  • „Code Folding“ (Einklappen von Abschnitten im Text) sowie
  • Darstellung in mehreren Teilfenstern.

Installation

Vim ist im Repo extra enthalten und kann mittels Pacman installiert werden.

# pacman -S vim

Vim ist nur auf der Konsole oder in einem Terminal aufrufbar. Anleitungen zur Bedienung sind unter Weblinks zu finden.

Die GUI-Variante GVim befindet sich in einem gesonderten Paket.

# pacman -S gvim

Dieses Programm öffnet ein eigenes X11-Fenster, besitzt ein Menü, Datei-Dialoge, Scrollbar, und weitere GUI-Spezifische Eigenschaften.

Hinweis: Vim steht in Konflikt mit GVim. Es kann entweder Vim oder GVim installiert werden, aber nicht beide Programme gleichzeitig. Siehe News: Vim/GVim 7.2.411 Update

Es existieren zudem in den Repositories eine ganze Reihe separat zu installierender Plugins.

Konfiguration

Hinweis: vi und Vim benutzen die Konfigurationsdatei ~/.exrc gemeinsam, wenn beide Programme installiert sind. Die Einstellungen sind nicht kompatibel zueinander. Man sollte Vim ausschliesslich über ~/.vimrc konfigurieren und die Option noexrc setzen.

Manuelle Einstellungen können in o.g. Konfigurationsdatei geschrieben werden, dann ohne führende Doppelpunkte. Vim bietet allerdings auch die Möglichkeit, 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 bereits getätigte Einstellungen.

GVim besitzt zudem die Möglichkeit Einstellungen auch über Menüs bzw. grafische Dialoge vorzunehmen

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.ä.
set showmode               den aktuellen Mode anzeigen
set nowrap                 lange Zeilen nicht umbrechen
set nu                     Zeilennummern anzeigen

Tipps und Tricks

Datei .viminfo

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 und 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

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

syntax enable

einfügt. Nach einem Neustart von Vim funktioniert das 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>

Siehe auch

Weblinks