.. _Einfügemodus: Einfügemodus ------------ Der Einfügemodus dient -- wie der Name schon sagt -- zum Einfügen von Text in die aktuelle Datei. Hier gleicht Vim einem "normalen" Editor: Alle Buchstaben, Zahlen, etc. erscheinen nach der Eingabe an der aktuellen Position auf dem Bildschirm. Ausgehend vom Normalmodus gelangt man in den Einfügemodus durch Drücken einer der folgenden Tasten: .. list-table:: :widths: 10 60 30 :header-rows: 0 * - ``i`` - Text einfügen vor der momentanen Position - (*insert*) * - ``I`` - Text einfügen zu Beginn der momentanen Zeile - * - ``a`` - Text einfügen nach der momentanen Position - (*append*) * - ``A`` - Text einfügen am Ende der momentanen Zeile - * - ``o`` - Text einfügen unter der aktuellen Zeile - (*open a new line*) * - ``O`` - Text einfügen über der aktuellen Zeile - Auch mit ``s, S, c, C, r, R`` gelangt man in den Einfügemodus. Hierbei wird jedoch bestehender Text ersetzt. Gibt man beispielsweise ``10i`` gefolgt von etwas Text ein, so wird nach Beenden der Eingabe mit ``Esc`` das 10-fache des eingegebenen Textes eingefügt. Im Einfügemodus gibt es standardmäßig folgende Tastenkombinationen: .. list-table:: :widths: 20 60 20 :header-rows: 0 * - ``Ctrl n`` bzw. ``Ctrl p`` - Vervollständigung des aktuellen Wortes anhand eines bereits vorkommenden Wortes - (*next* bzw. *previous word*) * - ``Ctrl x Ctrl l`` - Vervollständigung der aktuellen Zeile anhand einer bereits vorkommenden Zeile - (*line-completion*) * - ``Ctrl x Ctrl f`` - Vervollständigung der Eingabe von Dateinamen und Pfaden - (*file-completion*) .. index:: Snippets (Vim) .. _Vim-Snippets: .. rubric:: Snippets Durch die Verwendung von so genannten "Snippets" kann viel Tipparbeit gespart werden. Das Prinzip hierbei ist sehr einfach: Man definiert sich frei wählbare Abkürzungen, die dann nach einem Drücken der ``Tab``-Taste (oder einer anderen frei wählbaren Taste) ein ganzes Template ausrollen können, so dass nur noch an einzelnen Stellen Text eingefügt werden muss. Das meiner Meinung nach beste Snippet-Plugin ist :ref:`Ultisnips `; man kann damit je nach Dateityp beziehungsweise Endung einer Datei unterschiedliche Abkürzungen definieren. Die Abkürzungen liegen allesamt in einem gemeinsamen Ordner und sind jeweils mit ``dateityp.snippets`` benannt. Beispielsweise kann man sich so sowohl für C-Dateien als auch für Python-Dateien je ein Snippet mit der Abkürzung ``ife`` definieren, das dann nach einem Drücken der ``Tab``-Taste im jeweiligen Dateityp eine ``if-else``-Abfrage mit Sprungmarken zu den jeweiligen Eingabestellen erstellt. Besonders praktisch sind Snippets für ein Arbeiten mit LaTeX-Dateien: So kann man beispielsweise ein Snippet namens ``art`` definieren, das eine gesamte Standard-Präambel für die Dokumentklasse ``article`` definiert. So genügt es dann, eine leere ``.tex``-Datei zu öffnen, im Einfügemodus ``art`` und ``Tab`` einzugeben, und man kann bereits mit dem Schreiben des eigentlichen Dokuments beginnen. :-) .. only:: html *Snippets-Beispieldateien:* * :download:`LaTeX-Snippets ` * :download:`LaTeX-Math-Snippets ` * :download:`LaTeX-Template-Snippets ` * :download:`RestructuredText-Snippets ` .. only:: latex Snippet-Beispieldateien sind auf der :ref:`Grund-Wissen `-Seite verlinkt.