[[Vorlage(Getestet,bionic, focal, jammy)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(3)]] [[Bild(./vim.png, 48, align=left)]] [[Bild(./startup.png, 300, align=right)]] [[Bild(./vim-in-action.png, 300, align=right)]] Viele Benutzer schrecken vor dem sehr praktischen Editor [https://www.vim.org/ VIM] {en} wegen seiner etwas sperrigen Bedienung zurück. Wer sich aber erst einmal mit den verschiedenen Betriebsmodi vertraut gemacht hat, mag auf die hilfreichen Dienste des schlanken, aber fast beliebig erweiterbaren Editors nicht mehr verzichten. VIM ist eine Weiterentwicklung des Texteditors Vi, deshalb auch der Name als Abkürzung für "'''V'''i '''IM'''proved". Es gibt [:Editoren:], die anfangs wesentlich leichter zu bedienen sind, z.B. Pico oder [:Nano:]. Jedoch hat VIM einige Vorteile: * Auf jedem POSIX-konformen System ist mindestens der Vorfahr des VIM, der Vi, als Editor vorhanden (wobei Vi sehr viel weniger Funktionen hat) * Navigierbar ohne Cursor-Tasten (kann bei Tastaturproblemen in Remote-Sessions helfen) * Superschnelle Bedienbarkeit * Browsen durch Verzeichnisse * Fast beliebig erweiterbar und konfigurierbar (Einstellungen, Macros, Mappings, Plugins ...) Es stehen auch grafische Oberflächen zur Verfügung: * GVim ('''g'''raphical '''vim''', graphische Oberfläche) - benutzt [:GTK:GTK+] * [github:chrizel/Yzis:Yzis] - ein VIM-ähnlicher Editor, der zur "vi engine" eine grafische [:Qt:]-Oberfläche und eine [wikipedia:ncurses:]-Textoberfläche bereitstellt. Man sollte sich nicht von der anfangs kompliziert erscheinenden Bedienung abschrecken lassen. Mit wenigen Befehlen kommt man schon gut klar, z.B. `i`, [[Vorlage(Tasten, esc)]], `:w`, `:wq`, `:q!` und `dd`. Näheres unter [:VIM/Modi#Bewegungen:Bewegungen], [:VIM/Modi#Wechseln-des-Modus:Wechseln des Modus] und [:VIM/Modi#Speichern-und-Beenden:Speichern und Beenden]. = Installation = Standardmäßig ist eine abgespeckte VIM-Version installiert ('''vim-tiny'''), die über wesentlich weniger Funktionen verfügt als das Original (z.B. kein Verzeichnisbrowser). Will man ernsthaft mit VIM arbeiten, sollte das folgende Paket installiert werden [1]: {{{#!vorlage Paketinstallation vim }}} s Optional kann man VIM jetzt noch als systemweiten Standard-Editor einstellen (s. [:Alternativen-System:]): {{{#!vorlage Befehl sudo update-alternatives --config editor }}} {{{Es gibt 4 Auswahlmöglichkeiten für die Alternative editor (welche /usr/bin/editor bereitstellen). Auswahl Pfad Priorität Status ------------------------------------------------------------ 0 /bin/nano 40 automatischer Modus 1 /bin/ed -100 manueller Modus 2 /bin/nano 40 manueller Modus * 3 /usr/bin/vim.basic 30 manueller Modus 4 /usr/bin/vim.tiny 15 manueller Modus Drücken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten, oder geben Sie die Auswahlnummer ein: 3 }}} Beim Aufruf von Befehlen wie z.B. "visudo" oder "crontab -e" wird jetzt der neu installierte VIM als Editor verwendet. = Start = {{{#!vorlage Hinweis Der Befehl `vi` ruft nicht mehr den alten Vi, sondern VIM auf. }}} Starten lässt sich der Editor im Terminal[2] mit {{{#!vorlage Befehl vim }}} oder {{{#!vorlage Befehl vim DATEI }}} Letzterer Befehl öffnet die Datei '''DATEI''' im aktuellen Verzeichnis in einen neuen Buffer. Existiert die Datei nicht, wird sie beim Speichern angelegt. Zudem lässt sich bei offenem Editor mit `:r DATEI` eine Datei einlesen. Dabei kann man Autoergänzung benutzen. '''Hinweis:''' So eingelesene Dateien lassen sich nur mit Override (`:w! DATEI`) unter ihrem alten Dateinamen [:VIM/Modi#Speichern-und-Beenden:speichern]. Es empfiehlt sich, das VIM-Tutorial durchzuarbeiten. Man startet es mit dem Befehl: {{{#!vorlage Befehl vimtutor }}} Es existieren auch übersetzte Versionen, die beim Starten des Tutorials mit dem zwei-Buchstaben-Ländercode aufgerufen werden können, zum Beispiel: * Deutsch: {{{#!vorlage Befehl vimtutor de }}} * Englisch: {{{#!vorlage Befehl vimtutor en }}} {{{#!vorlage Hinweis Der Befehl `vimtutor` funktioniert nicht mit '''vim-tiny''', siehe [#Installation Installation]. }}} = VIM-Modi = VIM arbeitet nicht so sehr mit Tastenkombinationen (wie zum Beispiel [:Emacs:]), sondern verwendet verschiedene Modi, zwischen denen man wechselt und die verschiedene Funktionen anbieten. Die Bedienung dieser Modi ist dem Artikel [:VIM/Modi:] zu entnehmen. = Konfiguration = VIM sucht beim Programmstart nach einer Konfigurationsdatei – standardmäßig ist das die versteckte Datei '''~/.vimrc''' im [:Homeverzeichnis:]. Eine Vorlage findet man unter '''/etc/vim/vimrc'''. Die VIM-Konfigurationsdatei bietet z.B. Platz für persönliche Einstellungen wie Farbschemas, Optionen für bestimmte Dateitypen, Plugin-Optionen, Tastaturbelegungen, automatisch ausgeführte Befehle beim Öffnen/Schreiben/... und nicht zuletzt die nativen VIM-Optionen. Befehle/Optionen werden wie im Kommandozeilenmodus eingegeben, nur ohne führenden Doppelpunkt (Konvention). Eine reduzierte Auswahl an Optionen sei hier aufgelistet. Eine vollständige Liste aller nativen Optionen kann mit `:set all` angezeigt werden, bzw. `:set` für alle vom Standard veränderten Werte. {{{#!vorlage Tabelle <-4 tableclass="zebra_start3" tablestyle="width: 100%"; rowclass="titel"> Optionen +++ Option Beschreibung Option Beschreibung +++ `:set number` Zeilennummern anzeigen. `:set nonumber` Zeilennummern nicht anzeigen. +++ `:set list` Sonderzeichen anzeigen, siehe `:help listchars`. `:set nolist` Sonderzeichen ausblenden. +++ `:syntax on` Syntaxhighlighting aktivieren (gegenwärtige Farbeinstellungen zur Hervorhebung werden nicht berücksichtigt). `:syntax off` Syntaxhighlighting deaktivieren. +++ `:set compatible` VIM kompatibler zu Vi einstellen. Mit dieser Option sind einige Befehle und Optionen nicht mehr verfügbar. `:set nocompatible` VIM ohne Rücksicht auf Kompatibilität zu Vi einstellen (empfohlen). +++ `:set mouse=a` Stellt Mausunterstützung in allen Modi bereit. `:set mouse=` Deaktiviert Mausunterstützung. +++ `:set autoindent` Rückt Text automatisch ein. `:set noautoindent` Rückt Text nicht automatisch ein. +++ `:set ignorecase` Ignoriert beim Suchen standardmäßig Groß- und Kleinschreibung. `:set noignorecase` Beachtet beim Suchen standardmäßig Groß- und Kleinschreibung. +++ `:set incsearch` Während der Suche zum entsprechenden Text springen. `:set noincsearch` Während der Suche nicht zum entsprechenden Text springen. +++ `:set hlsearch` Suchergebnisse farbig hervorheben. Temporär (bis zur nächsten Suche) deaktivieren mit: `:nohls` `:set nohlsearch` Suchergebnisse nicht farbig hervorheben. +++ `:set showmode` In der Statusleiste anzeigen, ob der Normalmodus oder der Einfügemodus gerade aktiv ist. `:set noshowmode` Die Anzeige des gerade aktiven Modus wieder unterdrücken. }}} {{{#!vorlage Hinweis Die meisten Optionen haben eine Kurzform. Beispielsweise kann `number` auch als `nu[mber]`, `num`, `numb`, `numbe` oder `number` angegeben werden. Welche Bezeichnungen jeweils möglich sind, ist der Hilfe zu entnehmen. Ob eine Option bereits standardmäßig aktiviert wurde, ist auch in der Dokumentation ersichtlich. Kommentare werden mit einem doppelten Anführungszeichen eingeleitet: `"` }}} Dokumentation unter `:help nu` = Farbschemas = Mit der Einstellung `syntax on` wird Programmcode farbig hervorgehoben. Diese Farbkombinationen stehen in colorscheme-Definitionsdateien und befinden sich systemweit unter '''/usr/share/vim/vim71/colors'''. Wenn man ein eigenes Schema schreiben will, ist eine Anleitung mit Tipps in der Datei '''README.txt''' enthalten. Ein automatisch generierter Vergleich aller Farbschemas von [https://www.vim.org/scripts/index.php vim.org] {en} findet sich unter [googlecode:vimcolorschemetest:] {en}. Um ein Farbschema in VIM auszuwählen, gibt man entweder den Befehl `:colorscheme NAME_DES_SCHEMAS` ein (Schema temporär anpassen) oder fügt der '''~.vimrc''' folgenden Inhalt hinzu (persistente Änderung): {{{#!code vim syntax on colorscheme NAME_DES_SCHEMAS }}} Der Name des Schemas muss dabei ohne die Endung '''.vim''' angegeben werden. == Unterschiedliche Darstellung in VIM/GVim == Farbschemas werden in VIM und GVim anders dargestellt. Das liegt daran, dass das Terminal nur bis zu 256 Farben darstellen kann, GVim aber alle, die vom System bereitgestellt werden. Um für VIM und GVim unterschiedliche Schemas zu verwenden, kann man Folgendes in die eigene '''.vimrc''' schreiben: {{{#!code vim if has('gui_running') colorscheme NAME_DES_GVIM_SCHEMAS else colorscheme NAME_DES_VIM_SCHEMAS endif }}} = Dateibrowser = Ein großer Vorteil von VIM ist, dass man damit auch durch Verzeichnisse browsen kann. {{{#!vorlage Befehl vim VERZEICHNIS }}} Es wird der Inhalt des Verzeichnisses VERZEICHNIS angezeigt. Zum Navigieren benutzt man dieselben Tasten wie im Normalmodus, in der Regel also die Cursor-Tasten. Durch Drücken von [[Vorlage(Tasten, "Enter")]] (Eingabetaste) wird je nach aktueller Zeile entweder in das entsprechende Unterverzeichnis gewechselt, oder die Datei geöffnet. {{{#!vorlage Tabelle <-2 tableclass="zebra_start3" tablestyle="width: 100%"; rowclass="titel"> Optionen für aktuell ausgewählte Datei/Verzeichnis +++ Option Beschreibung +++ `Eingabetaste` Wechselt in das Unterverzeichnis oder öffnet die Datei +++ `-` Wechselt in die nächsthöhere Verzeichnisebene +++ `v` Öffnet die Datei parallel in vertikal geteiltem Fenster (Cursor wechselt zu neuem Fenster) +++ `p` Zeigt die Datei parallel in horizontal geteiltem Fenster an (Cursor bleibt im Fenster des Dateibrowsers) +++ `%` Datei im aktuell angezeigten Verzeichnis erstellen +++ `d` Unterverzeichnis im aktuell angezeigten Verzeichnis erstellen +++ `R` Datei/Verzeichnis umbenennen +++ `D` Datei/Verzeichnis löschen +++ `i` Wechselt den Anzeigemodus (ähnlich dem "ls"-Kommando) +++ `s` Wechselt die Sortierung (Dateiname, Datum, Größe, Namenserweiterung) }}} Bei den geteilten Fenstern ist wie bereits weiter oben beschrieben zu beachten, dass mit "^w ^w" zwischen den Fenstern gewechselt werden kann, und mit ":q" das aktuelle Fenster geschlossen wird. Hat man durch Drücken von [[Vorlage(Tasten, "Enter")]] (Eingabetaste) eine Datei geöffnet, kann man durch ":Re" wieder zurück in den Dateibrowser springen (nicht vergessen die Datei ggf. vorher zu speichern). = Erweiterungen = [[Vorlage(Bildunterschrift, ./extensions.png, 300, "Stark konfiguriertes VIM", right)]] Für VIM existieren eine Vielzahl von Erweiterungen. Es gibt Plugins mit neuen oder verbesserten Funktionen, Syntaxschemas, dateitypspezifische Plugins usw. Diese VIM-Skripte werden in Ordnern unterhalb von '''~/.vim/''' (bzw. nach der [:Umgebungsvariable:] `VIMRUNTIME`, welche sich bei geöffnetem VIM mit `:echo $VIMRUNTIME` ermitteln lässt) abgelegt. VIM lädt beim Start automatisch alle Plugins usw. aus diesen Verzeichnissen. * '''syntax''': Syntaxschemas * '''colors''': Farbschemas * '''plugin''': normale Plugins * '''ftplugin''': dateitypspezifische Plugins * '''indent''': Einrückungsdefinitionen * '''autoload''': Funktionsdefinitionen, die nur bei Bedarf nachgeladen werden * '''after''': Funktionen und Einstellungen, die nach dem Laden aller Plugins direkt vor der Anzeige des Buffers geladen werden * '''doc''': Dokumentationen zu Plugins (Zugriff über `:help`) * ... Eine sehr umfangreiche Sammlung von VIM-Skripten ist auf [https://www.vim.org/scripts/ vim.org] {en} zu finden. {{{#!vorlage Hinweis Um die VIM-Verzeichnisse bei vielen Plugins übersichtlich zu halten, empfiehlt sich das Pathogen-Plugin von [github:tpope/vim-pathogen:Tim Pope] {en}. Damit können alle Plugins vollständig in eigene Unterverzeichnisse im Ordner '''~/.vim/bundle/''' installiert werden. }}} = Merkblätter (Cheat Sheets) = {{{#!vorlage Tabelle [[Bild(./vimcheatsgermankeyboard56dd.png, x450)]] [[Bild(./vimcheat.png, x450)]] +++ <:>Graphical Cheat Sheet von [http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html viemu.com] {en} <:>Übersicht von LinuxFibel de.linwiki.org }}} = Hilfe erhalten = Die eingebaute Hilfe {en} in VIM ist sehr umfangreich. Man erreicht sie im Kommandozeilenmodus mit `:help` bzw. `:help BEFEHL` (z.B. `:help :e` oder `:help foldcolumn`). Zudem gibt es mit `:h user-manual` einen Überblick über die Kapitel des User Manuals, auf die auch immer wieder in den `:help`-Ausgaben hingewiesen wird. Diese einzelnen Kapitel, z.B folgendes: {{{ |usr_03.txt| Moving around }}} lassen sich folgendermaßen öffnen: `:h user_03.txt (Kapitelname)`. = Links = == Intern == * [:VIM/Tipps:] - Tipps für erweiterte Funktionen wie LaTeX-Integration, Rechtschreibprüfung und Sonderzeichen * [:Textdateien_vergleichen#vimdiff:vimdiff] - mit VIM Dateien vergleichen * [:Editoren:] {Übersicht} Programmübersicht == Extern == * [https://www.vim.org/ Projektseite] {en} * [sourceforge2:vimdoc: VIM Dokumentationen] {en} * [https://vim.fandom.com/wiki/Vim_Tips_Wiki VIM Tipps Wiki] {en} * [sourceforge2:Cream:] {en} - Konfiguration für Einsteiger * [http://tnerual.eriogerg.free.fr/vim.html VIM Schnellübersicht] {en} {fr} {de} {id} {it} {pt} {es} {sv} * [https://lug.fh-swf.de/vim/#KURZANLEITUNG VIM PDF Kurzanleitung] {de} {dl} * [https://linuxwiki.de/Vim VIM Einführung im linuxwiki.de] {de} * [https://www.selflinux.org/selflinux/html/vim.html Praxisorientiertes VIM Tutorial] {de} - SelfLinux.org * [https://www-user.tu-chemnitz.de/~hot/VIM/VIM/regexp.html Reguläre Ausdrücke bei vim] {de} * [http://danielchoi.com/software/vmail.html Vmail] {en} - GMail-Client für VIM * [https://neovim.io/ Neovim] bietet erweiterte Funktionalität bei vollständiger kompatibilität zu Vim # tag: Editor, Shell, Server