--- category: tool tool: vim lang: de-de contributors: - ["RadhikaG", "https://github.com/RadhikaG"] translators: - ["caminsha", "https://github.com/caminsha"] filename: LearnVim-de.txt --- [Vim](http://www.vim.org) (Vi IMproved) ist ein Klon von vi, dem bekannten Editor für Unix. Es ist ein Texteditor, welcher mit Fokus auf Geschwindigkeit und Produktivität entwickelt wurde. Vim hat viele Keybindings für ein schnelles navigieren und schnelles bearbeiten einer Datei. ## Grundlagen, um in Vim zu navigieren ``` vim # Öffne in Vim :help # Öffne die eingebaute Hilfe zum Thema , wenn # es existiert :q # Schließe vim :w # Speichere diese Datei :wq # Speichere diese Datei und schließe vim ZZ # Speichere diese Datei und schließe vim :q! # Schließe vim ohne die Datei zu speichern # ! *zwingt* die Ausführung von :q, # daher wird die Datei nicht gespeichert. ZQ # Beende vim ohne die Datei zu speichern :x # Speichere die Datei und beende vim # Dies ist eine kürzere Version von :wq u # Änderung rückgängig machen CTRL+R # Änderung wiederherstellen h # Den Cursor um ein Zeichen nach links bewegen j # Den Cursor eine Zeile nach unten bewegen k # Den Cursor eine Zeile nach oben bewegen l # Den Cursor um ein Zeichen nach rechts bewegen Ctrl+B # Gehe eine Bildschirmanzeige zurück Ctrl+F # Gehe eine Bildschirmanzeige vorwärts Ctrl+D # Gehe eine halbe Bildschirmanzeige vorwärts Ctrl+U # Gehe eine halbe Bildschirmanzeige zurück # Navigieren innerhalb einer Zeile 0 # Navigiere zum Anfang der Zeile $ # Navigiere zum Ende der Zeile ^ # Navigiere zum ersten Zeichen, welches kein Leerzeichen ist # Im Text suchen /word # Hebt alle Ergebnisse nach dem Cursor hervor ?word # Hebt alle Ergebnisse vor dem Cursor hervor n # Bewegt den Cursor zum nächsten Ergebnis nach der Suche N # Bewegt den Cursor zum vorherigen Ergebnis der Suche :%s/foo/bar/g # Ersetze "foo" durch "bar" in allen Zeilen :s/foo/bar/g # Ersetze "foo" durch "bar" in der aktuellen Zeile :%s/\n/\r/g # Ersetze das newline-Zeichen bei allen Zeilen durch # ein carriage return # Zu einzelnen Zeichen springen f # Springe vorwärts und auf dem Zeichen t # Springe vorwärts und lande vor dem Zeichen # Zum Beispiel, f< # Springe vorwärts und lande auf < t< # Springe vorwärts und lande vor < # Wortweise navigieren w # Springe um ein Wort vorwärts b # Gehe ein Wort zurück e # Springe zum Ende des aktuellen Wortes # Weitere Befehle, um zu navigieren gg # Gehe an den Start der Datei G # Gehe an das Ende der Datei :NUM # Springe zur Zeile NUM (NUM kann eine beliebige Zahl sein) H # Navigiere zum Start der aktuellen Bildschirmanzeige M # Navigiere in die Mitte der aktuellen Bildschirmanzeige L # Navigiere an das Ende der aktuellen Bildschirmanzeige ``` ## Hilfsdokumente: Vim hat eine eingebaute Dokumentation, welche mit `:help ` aufgerufen werden kann. Zum Beispiel öffnet `:help navigation` die Dokumentation über das Navigieren `:help` kann auch ohne ein Argument verwendet werden. Dies zeigt den Standard- Hilfsdialog an, welcher den Start mit vim einfacher macht. ## Modi: Vim basiert auf dem Konzept von **modes**. - Command Mode - Vim startet in diesem Modus, hier kann man navigieren und Befehle eingeben - Insert Mode - Wird verwendet, um Änderungen in der Datei zu machen. - Visual Mode - Wird verwendet, um Text zu markieren und Operationen durchzuführen - Ex Mode - Wird verwendet, um im ':'-Prompt Befehle einzugeben ``` i # Führt vim in den Insert Mode, vor der Cursorposition a # Führt vim in den Insert Mode, nach der Cursorposition v # Führt vim in den Visual Mode : # Führt vim in den Ex Mode # Führt zurück in den Command Mode, egal in welchem Mode # man sich gerade befindet. # Kopieren und einfügen von Text y # Kopiere alles, was im Moment ausgewählt ist yy # Kopiert die aktuelle Zeile d # Löscht alles, was im Moment ausgewählt ist dd # Löscht die aktuelle Zeile p # Fügt den kopierten Text nach dem Cursor ein P # Fügt den kopierten Text vor dem Cursor ein x # Löscht das Zeichen unter dem Cursor ``` ## Die 'Grammatik' von Vim Vim kann als Satz von Kommandos angesehen werden, welche im Format 'Verb-Modifier-Noun' sind. Hierbei gilt: - Verb - die Aktion, du machen willst - Modifier - wie die Aktion gemacht wird - Noun - das Objekt, auf welchem die Aktion ausgeführt wird. Einige wichtige Beispiele von 'Verb', 'Modifier' und 'Nouns': ``` # 'Verb' d # löschen c # ändern y # kopieren v # visuelles auswählen # 'Modifiers' i # innerhalb a # außerhalb NUM # Nummer (NUM kann irgendeine Zahl sein) f # Sucht nach etwas und landet darauf t # Sucht nach etwas und stoppt davor / # Suche eine Zeichenfolge ab dem Cursor ? # Suche eine Zeichenfolge vor dem Cursor # 'Nouns' w # Wort s # Satz p # Abschnitt b # Block # Beispielsätze resp. Kommandos d2w # lösche zwei Wörter cis # Ändere innerhalb des Satzes. yip # Kopiere innerhalb des Abschnitts (kopiere den Abschnitt, # in welchem du bist) ct< # Ändere bis zur spitzen Klammer # Ändere den Text von deiner aktuellen Cursorposition bis # zur nächsten spitzen Klammer d$ # Lösche bis zum Ende der Zeile ``` ## Einige Shortcuts und Tricks ``` > # Rücke die Auswahl um einen Block ein < # Lösche eine Einrückung der Auswahl :earlier 15m # Stellt das Dokument so wieder her, wie es vor 15 Minuten war :later 15m # den oberen Befehl rückgängig machen ddp # Vertauschen zweier aufeinanderfolgenden Zeilen # Zuerst dd, dann p . # Wiederhole die vorherige Aktion :w !sudo tee % # Speichere die Datei als Root :set syntax=c # Stelle das Syntax-Highlighting für 'C' ein :sort # Alle Zeilen sortieren :sort! # Alle Zeilen rückwärts sortieren :sort u # Alle Zeilen sortieren und Duplikate entfernen ~ # Umschalten der Groß-/Kleinschreibung des ausgewählten Textes u # Ausgewählten Text zu Kleinschreibung ändern U # Ausgewählten Text zu Großschreibung ändern # Text-Folding (Textfaltung) zf # Erstelle eine Faltung des ausgewählten Textes zo # Öffne die aktuelle Faltung zc # Schließe die aktuelle Faltung zR # Öffne alle Faltungen zM # Schließe alle Faltungen ``` ## Makros Makros sind grundsätzlich einfach aufgezeichnete Aktionen Wenn du mit dem Aufnehmen eines Makros beginnst, werden **alle** Aktionen und Kommandos, welche du braucht, aufgenommen bis die Aufnahme gestoppt wird. Wenn du ein Makro ausführst, werden exakt die gleichen Schritte gemacht. ``` qa # Starte das Aufnehmen des Makros 'a' q # Beende das Aufnehmen @a # Führe das Makro 'a' aus ``` ### Konfigurieren mit ~/.vimrc Die Datei .vimrc kann verwendet werden, um Vim beim Starten zu konfigurieren Hier ist eine Beispiel ~/.vimrc Datei: ``` " Beispiel ~/.vimrc " Erforderlich für vim, dass es iMproved ist. set nocompatible " Bestimme den Dateityp anhand des Namens, um ein intelligentes Einrücken etc. " zu ermöglichen filetype indent plugin on " Aktiviere das Syntax-Highlighting syntax on " Bessere Kommandozeilen-Vervollständigung set wildmenu " Verwende die Suche ohne die Berücksichtigung der Groß-/Kleinschreibung, außer " wenn mit Großbuchstaben gesucht wird. set ignorecase set smartcase " Wenn eine neue Zeile erstellt wird und kein Dateispezifisches Einrücken " aktiviert ist, behält die neue Zeile die gleiche Einrückung wie die aktuelle " Zeile set autoindent " Zeige links die Zeilennummern an set number " Einrückungsoptionen, ändere diese nach deinen Vorlieben " Anzahl sichtbarer Leerzeichen bei einem TAB set tabstop=4 " Anzahl der Leerzeichen während des Bearbeitens bei einem TAB set softtabstop=4 " Anzahl der Einrückungstiefe bei den Operationen (>> und <<) set shiftwidth=4 " Konvertiere TABs zu Leerzeichen set expandtab " Enable intelligent tabbing and spacing for indentation and alignment " Aktiviere intelligente Tabs und Leerzeichen bei der Einrückung und Ausrichtung set smarttab ``` ### Verweise - [Vim | Homepage](http://www.vim.org/index.php) - In der Shell eingeben: `vimtutor` - [Ein vim Tutorial und Primer, englisch](https://danielmiessler.com/study/vim/) - [Deutsches Arch Linux Wiki](https://wiki.archlinux.de/title/Vim) - [Arch Linux Wiki, englisch (dafür ausführlicher)](https://wiki.archlinux.org/index.php/Vim) - [What are the dark corners of Vim your mom never told you about? (Stack Overflow thread)](http://stackoverflow.com/questions/726894/what-are-the-dark-corners-of-vim-your-mom-never-told-you-about)