====== Vim ist keine Insel ====== [[03_modal | Vorheriges Kapitel -- 3. Modales Editieren]] ===== 4. Erste Schritte ===== Genug mit den Vorerklärungen, jetzt wollen wir Vim benutzen. Wir werden in diesem Kapitel diverse Funktionen nur kurz anschneiden, um die Begrifflichkeiten für spätere, genauere Erklärungen kennenzulernen. ==== Erster Aufruf und Beenden ==== Vim kann man von der Kommandozeile mit ''vim '' starten. Probieren wir das einmal. Eine Textdatei hat jeder irgendwo herumfliegen. Ein Stück Quellcode, eine Readme-Datei, irgendetwas. Machen wir eine Kopie davon, und nennen sie ''test_1.txt''. Diese Kopie öffnen wir jetzt mit Vim: vim test_1.txt Das Terminal zeigt jetzt den Anfang unserer Datei. Sollte die Datei komplett in die Anzeige passen, sehen wir am linken Bildschirmrand unter der letzten angezeigten Datenzeile Tilden (''~''), die verdeutlichen sollen, dass diese Zeilen nicht zur Datei gehören. (Der feine Unterschied zwischen //leeren// Zeilen und //nicht vorhandenen// Zeilen.) Am unteren Bildrand erhalten wir ein paar Informationen zur Datei -- Name, Länge in Zeilen, Größe in Zeichen, aktuelle Position in der Datei. Wir befinden uns im //Befehlsmodus//. Jetzt geben wir einen Doppelpunkt ein: : Wir sehen den Doppelpunkt in der untersten Zeile erscheinen, zusammen mit einem blinkenden Cursor: Wir sind jetzt im //Kommandozeilenmodus//. Als Befehl geben wir ''quit'' ein: :quit Vim beendet sich, wir sehen wieder die Kommandozeile. Sollte die Datei irgendwie verändert worden sein, wird sich Vim //nicht// beenden, sondern eine Fehlermeldung in der letzten Zeile anzeigen. In diesem Fall müssen wir Vim (mithilfe eines Ausrufezeichens) versichern, dass wir es wirklich ernst meinen mit dem Verwerfen der Änderungen. Wir müssen nicht jedes Mal '':quit'' ausschreiben; die Kurzform '':q'' reicht aus. :quit! ==== Puffer ==== Jetzt habe ich schon ein paar Mal davon gesprochen, dass wir "die Datei" sehen würden. Das stimmt natürlich nicht ganz: Vim lädt eine //Kopie// der Datei in einen Puffer im Arbeitsspeicher, und wir sehen nur den Inhalt dieses Puffers, nicht die Datei selbst. Das ist auch der Begriff, den Vim selbst verwendet: "Puffer" (englisch //buffer//). Vim kann mehr als einen Puffer gleichzeitig im Speicher halten. Das demonstrieren wir am Besten, indem wir eine zweite Textdatei kopieren und ''test_2.txt'' nennen. Dann öffnen wir beide Dateien, jede in ihrem eigenen Puffer: vim test_1.txt test_2.txt Wir sehen den Puffer von ''test_1.txt''. Wollen wir zum nächsten Puffer, geben wir '':bn'' (kurz für '':bNext'', "buffer next") ein. Einen Puffer zurück gelangen wir mit '':bp'' (kurz für '':bprevious'', "buffer previous"), alle Puffer schließen können wir mit '':qa'' ("quit all"). Vergessen wir, dass wir mehr als einen Puffer im Speicher haben, gibt uns Vim beim ersten Versuch eine Warnung. Eine Liste der geöffneten Puffer kann man über mehrere Befehle erhalten: * '':files'' * '':buffers'' * '':ls'' Es gibt eine Vielzahl von Befehlen zum Thema Puffer, aber dazu kommen wir später. Im Moment reicht es, dass wir eine Vorstellung davon haben, was ein Puffer eigentlich ist. ==== Fenster ==== Die Anzeige des aktuellen Puffers, zusammen mit den Statusinformationen am unteren Bildrand, nennt Vim ein "Fenster" (engl. //window//). Das ist für Benutzer, die an grafische Oberflächen gewohnt sind, etwas missverständlich. Deshalb sei an dieser Stelle gesagt, dass dieses Tutorial immer nur mit einer Instanz von Vim arbeiten wird: Wenn ich "Fenster" schreibe, ist damit //immer// eine solche Sicht auf einen Vim-Puffer gemeint, nie ein Desktop- oder Terminal-Fenster. So, wie Vim mehr als einen Puffer geöffnet haben kann, ist auch mehr als ein Fenster gleichzeitig möglich. Am einfachsten erreicht man das direkt von der Kommandozeile: vim -o test_1.txt test_2.txt Wir erhalten, wie im letzten Abschnitt auch schon, zwei gleichzeitig geöffnete //Puffer//, nur diesmal in zwei getrennten, übereinander angeordneten //Fenstern//. (Ein ''-O'' statt dem ''-o'' auf der Kommandozeile führt zu //nebeneinander// angeordneten Fenstern.) Ein zweimaliger Druck auf ''-w'' läßt den Fokus zwischen den Fenstern wandern. Ein '':q'' schließt das aktuelle Fenster, '':qa'' schließt alle Fenster. Wieder gibt es viele Befehle, um mit Fenstern zu arbeiten; für den Moment reicht das Wissen, dass es sie gibt. ==== Reiter ==== Wir wissen jetzt, dass es Puffer gibt, und dass ein Fenster einen Puffer darstellt. Darüber hinaus bietet Vim auch noch "Reiter" (engl. //tab pages//). Jeder Reiter steht für die Ansammlung an Fenstern, die man gerade sieht. Man stelle sich vor, man hat die Quellcodes des einen Projekts in mehreren Fenstern genau so angeordnet, wie man es braucht. Dann kommt der Vorgesetzte herein und möchte, dass man eine Datei in einem anderen Projekt ändert. Statt die aufgebaute Fensterkonfiguration zu stören, öffnet man einen neuen Reiter: :tabnew Man erhält einen neuen Reiter, der einen unbenannten Puffer in einem neuen Fenster anzeigt. Hier kann man die Dateien eines anderen Projektes bearbeiten, vielleicht ein eigenes Fensterlayout dafür anlegen. Zwischen Reiten wechselt man so ähnlich wie zwischen Puffern in einem Fenster, mit '':tabn'' (kurz für '':tabNext'') bzw. '':tabp'' (kurz für '':tabprevous''). Will man den aktuellen Reiter schließen, macht man das mit '':tabc'' (kurz für '':tabclose''). Man kann mehrere Dateien in jeweils einem eigenen Reiter öffnen: vim -p test_1.txt test_2.txt Aber **Achtung:** Ein Reiter pro Datei ist bei den meisten grafischen Editoren die übliche Methode, mit mehreren Dateien zu arbeiten. Wer versucht diese Arbeitsweise direkt auf Vim zu übertragen, macht sich die Dinge unnötig schwer. Üblicherweise ist man mit Puffern und Fenstern besser bedient, und sollte Reiter hauptsächlich benutzen, wenn es tatsächlich um unterschiedliche Projekte geht. Wir kommen auch darauf später noch zurück. ---- [[05_bewegen | Nächstes Kapitel -- 5. Bewegen im Text]]