*usr_23.txt* Für Vim Version 8.1. Letzte Änderung: 24.Apr.2006 VIM BENUTZERHANDBUCH - von Bram Moolenaar Andere Dateien editieren Dieses Kapitel befasst sich mit dem Editieren von Dateien, die keine gewöhnlichen Dateien sind. Mit Vim können Sie Dateien editieren, die komprimiert oder verschlüsselt sind. Auf manche Dateien muss über das Internet zugegriffen werden. Mit einigen Einschränkungen können auch Binärdateien editiert werden. |23.1| DOS-, Mac- und Unix-Dateien |23.2| Dateien im Internet |23.3| Verschlüsselung |23.4| Binäre Dateien |23.5| Komprimierte Dateien Nächstes Kapitel: |usr_24.txt| Schnelles Einfügen Vorheriges Kapitel: |usr_22.txt| Die zu editierende Datei finden Inhaltsübersicht: |usr_toc.txt ============================================================================== *23.1* DOS-, Mac- und Unix-Dateien Damals in den frühen Tagen benutzten die alten Fernschreiber zwei Zeichen, um eine neue Zeile zu beginnen. Eins, um den Schreibwagen zur ersten Position der Spalte zurückzubewegen (Wagenrücklauf - carriage return, ) ein anderes, um das Papier weiterzubewegen (Zeilenvorschub - line feed, ). Als Computer herauskamen, war Speicherplatz teuer. Einige Leute entschieden, dass man keine zwei Zeichen für das Zeilenende brauchte. Die UNIX-Leute entschieden, das man nur für das Zeilenende benutzen könnte. Die Apple-Leute legten sich auf fest. Die MS-DOS-(und Microsoft- Windows-) Leute entschieden, das alte beizubehalten. Dies bedeutet, dass, wenn Sie versuchen, eine Datei von einem System zu einem anderen zu bewegen, Sie Probleme mit den Zeilenvorschüben haben. Der Editor Vim erkennt automatisch die verschiedenen Dateiformate und regelt die Sache richtig hinter Ihrem Rücken. Die Option 'fileformats' enthält die verschiedenen Formate, die probiert werden, wenn eine neue Datei editiert wird. Der folgende Befehl lässt Vim zuerst das UNIX-Format versuchen und dann das MS-DOS-Format: > :set fileformats=unix,dos Sie erkennen das Format in der Nachricht, die Sie erhalten, wenn Sie eine Datei zum Editieren öffnen. Sie sehen nichts, wenn Sie das native Datei-Format editieren. Somit ergibt das Editieren einer Unix-Datei unter Unix keine Anmerkung. Aber wenn Sie eine DOS-Datei editieren, meldet Vim Ihnen dies: "/tmp/test" [dos] 3L, 71C ~ Bei einer Mac-Datei würden Sie »[mac]« sehen. Das erkannte Datei-Format wird in der Option 'fileformat' gespeichert. Um zu sehen, welches Format Sie haben, führen Sie den folgenden Befehl aus: > :set fileformat? Die drei von Vim benutzten Namen sind: unix dos mac DAS MAC-FORMAT BENUTZEN Unter Unix wird für einen Zeilenumbruch benutzt. Es ist nicht ungewöhnlich, ein -Zeichen mitten in einer Zeile zu haben. Nebenbei bemerkt passiert dies ziemlich häufig in Vi- (und Vim-)Skripten. Auf dem Macintosh, wo das Zeichen für den Zeilenumbruch ist, ist es möglich, mitten in einer Zeile ein -Zeichen zu haben. Als Ergebnis ist es nicht hundertprozentig sicher, ob eine Datei, die sowohl - wie -Zeichen enthält, eine Mac- oder eine Unix-Datei ist. Deshalb nimmt Vim an, dass Sie unter Unix möglicherweise keine Mac-Datei editieren, und prüft nicht auf diesen Dateityp. Um dennoch auf dieses Format zu prüfen, fügen Sie 'fileformats' »mac« hinzu: > :set fileformats+=mac Dann macht Vim auch eine Abschätzung auf dieses Datei-Format. Achten Sie auf Situationen, in denen Vim falsch schätzt. DAS FORMAT ÜBERSTIMMEN Falls Sie mit dem guten alten Vi versuchen, eine Datei im MS-DOS-Format zu öffnen, werden Sie erkennen, dass jeden Zeile mit einen ^M-Zeichen endet. (^M steht für .) Vims automatische Erkennung vermeidet dies. Angenommen Sie wollen die Datei auf diese Weise editieren. Dann müssen Sie das Format überstimmen: > :edit ++ff=unix file.txt Die Zeichenkette »++« gibt Vim an, dass der Name einer Option folgt, welche die Standardeinstellung für diesen einzelnen Befehl überstimmt. »++ff« wird für 'fileformat' benutzt. Sie könnten auch »++ff=mac« oder »++ff=dos« benutzen. Dies funktioniert nicht für jegliche Option, nur »++ff« und »++enc« sind aktuell implementiert. Die ausgeschriebenen Namen »++fileformat« und »++encoding« funktionieren auch. KONVERTIERUNG Sie können die Option 'fileformat' benutzen, um von einem Datei-Format zu einem anderen zu konvertieren. Als Beispiel angenommen haben Sie eine MS-DOS-Datei namens LIESMICH.TXT, die Sie ins Unix-Format konvertieren wollen. Beginnen Sie mit dem Editieren der Datei im MS-DOS-Format: > vim LIESMICH.TXT Vim erkennt diese als eine Datei im DOS-Format. Nun ändern Sie das Datei-Format in Unix: > :set fileformat=unix :write Die Datei wird im Unix-Format gespeichert. ============================================================================== *23.2* Dateien im Internet Jemand schickt Ihnen eine E-Mail-Nachricht, die eine Datei mit ihrer URL angibt. Zum Beispiel: Sie können die Informationen hier finden: ~ ftp://ftp.vim.org/pub/vim/README ~ Sie könnten ein Programm starten, um die Datei herunterzuladen, sie lokal abspeichern und dann Vim starten, um sie zu editieren. Es gibt einen viel einfacheren Weg. Bewegen Sie den Cursor auf irgendein Zeichen der URL. Dann benutzen Sie diesen Befehl: > gf Mit ein wenig Glück findet Vim heraus, welches Programm für das Herunter- laden der Datei zu benutzen ist, lädt sie herunter und editiert die Kopie. Um die Datei in einem neuen Fenster zu öffnen, benutzen Sie CTRL-W f. Falls etwas schief läuft erhalten Sie eine Fehlermeldung. Es ist möglich, dass die URL falsch ist, dass Sie keine Erlaubnis haben, sie zu lesen, dass die Netzwerkverbindung unterbrochen ist, usw. Unglücklicher- weise ist es schwer, die Ursache des Fehlers zu benennen. Möglicherweise wollen Sie versuchen, die Datei von Hand herunterzuladen. Auf Dateien über das Internet zugreifen funktioniert durch die Erweiterung netrw. Zur Zeit werden URLs dieser Formate erkannt: ftp:// benutzt ftp rcp:// benutzt rcp scp:// benutzt scp http:// benutzt wget (nur lesend) Vim erledigt die Kommunikation nicht selbst, er verlässt sich darauf, dass die erwähnten Programme auf Ihrem Computer verfügbar sind. Auf den meisten Unix-Systemen sind »ftp« und »rcp« vorhanden. »scp« und »wget« müssen möglicherweise installiert werden. Vim erkennt diese URLs bei jedem Befehl, der das Editieren einer neuen Datei beginnt, zum Beispiel auch bei »:edit« und »:split«. Schreibbefehle funktionieren auch, außer für http://. Für weitere Informationen, auch über Passwörter, siehe |netrw|. ============================================================================== *23.3* Verschlüsselung Manche Informationen behalten Sie lieber für sich. Zum Beispiel wenn Sie einen Test auf einem Computer schreiben, den auch die Schüler benutzen. Sie möchten nicht, dass schlaue Schüler einen Weg herausfinden, die Fragen zu lesen, bevor die Prüfung beginnt. Vim kann die Datei für Sie verschlüsseln, was Ihnen ein wenig Schutz bietet. Um das Editieren einer neuen Datei mit Verschlüsselung zu beginnen, benutzen Sie das Argument »-x« beim Start von Vim. Beispiel: > vim -x pruefung.txt Vim fordert Sie auf, den Schlüssel für das Ver- und Entschlüsseln der Datei einzugeben: Geben Sie bitte den Schlüssel ein: ~ Tippen Sie nun achtsam den geheimen Schlüssel. Sie können die Zeichen, die Sie tippen, nicht sehen, sie werden durch Sterne ersetzt. Um die Situation, dass ein Tippfehler Probleme bereitet, zu vermeiden, bittet Vim Sie, den Schlüssel nochmals einzugeben: Geben Sie den gleichen Schlüssel nochmals ein: ~ Sie können diese Datei nun ganz normal editieren und alle Geheimnisse hineinschreiben. Wenn Sie das Editieren der Datei beenden und Vim zum Schließen auffordern, wird die Datei verschlüsselt und geschrieben. Wenn Sie die Datei mit Vim editieren, fordert er Sie auf, denselben Schlüssel erneut einzugeben. Sie brauchen nicht das Argument »-x« zu benutzen. Sie können auch den normalen Befehl »:edit« benutzen. Vim fügt der Datei eine magische Zeichenkette hinzu, an der er erkennt, dass die Datei verschlüsselt wurde. Falls Sie versuchen, die Datei mit einem anderen Programm zu betrachten, sehen Sie nur wirre Zeichen. Auch falls Sie die Datei mit Vim editieren und den falschen Schlüssel eingeben, bekommen Sie nur wirre Zeichen. Vim hat keinen Mechanismus, um zu überprüfen, ob der eingegebene Schlüssel der richtige war (dies macht es viel schwerer, den Schlüssel zu knacken). VERSCHLÜSSELUNG EIN- UND AUSSCHALTEN Um die Verschlüsselung einer Datei zu deaktivieren, setzen Sie die Option 'key' auf eine leere Zeichenkette: > :set key= Das nächste Mal, wenn Sie die Datei schreiben, geschieht dies ohne Verschlüsselung. Das Setzen der Option 'key', um Verschlüsselung zu aktivieren, ist keine gute Idee, weil das Passwort im Klartext erscheint. Jeder, der Ihnen über die Schulter schaut, kann Ihr Passwort lesen. Um dieses Problem zu vermeiden, wurde der Befehl »:X« geschaffen. Er fordert von Ihnen einen kryptischen Schlüssel an, genau wie es das Argument »-x« tat: > :X Geben Sie bitte den Schlüssel ein: ****** Geben Sie den gleichen Schlüssel nochmals ein: ****** EINSCHRÄNKUNGEN BEI DER VERSCHLÜSSELUNG Der von Vim benutzte Verschlüsselungsalgorithmus ist nicht sehr stark. Er ist gut genug, einen Gelegenheitsschnüffler abzuhalten, aber nicht einen Kryptologie-Experten, der viel Zeit zur Verfügung hat. Der Text in der Auslagerungsdatei und der Datei fürs Zurückgehen (Undo) wird ebenfalls verschlüsselt. Jedoch geschieht dies Block-für-Block und kann die benötigte Zeit verringern, ein Passwort zu knacken. Sie können die Auslagerungsdatei deaktivieren, aber dann werden Sie im Falle eines Absturz Ihre Änderungen verlieren, da Vim den Text nur im Hauptspeicher hält. Die Datei fürs Zurückgehen kann mit dem einzigen Nachteil deaktiviert werden, dass Sie nicht zurückgehen können, nachdem Sie einen Puffer entladen haben. Um das Benutzen einer Auslagerungsdatei zu vermeiden, geben Sie auf der Befehlszeile das Argument »-n« an. Benutzen Sie zum Beispiel den folgenden Befehl, um die verschlüsselte Datei »datei.txt« ohne Auslagerungsdatei zu editieren: > vim -x -n datei.txt Wenn eine Datei bereits editiert wird, kann die Auslagerungsdatei mit dem folgenden deaktiviert werden: > :setlocal noswapfile Weil es keine Auslagerungsdatei gibt, ist Wiederherstellung unmöglich. Sichern Sie die Datei ein wenig öfter, um zu vermeiden, dass Sie Ihre Änderungen verlieren. Während die Datei im Hauptspeicher ist, ist sie gewöhnlicher Text. Jeder mit den entsprechenden Privilegien kann in den Speicher des Editors schauen und den Inhalt der Datei entdecken. Falls Sie eine Viminfo-Datei benutzen, seien Sie gewahr, dass der Inhalt von Text-Registern ebenfalls im Klartext geschrieben wird. Falls Sie wirklich größtmöglichen Schutz für den Inhalt einer Datei wollen, editieren Sie sie nur auf einem tragbaren Computer, der nicht vernetzt ist, benutzen Sie gute Verschlüsselungswerkzeuge, und bewahren Sie den den Computer in einem großen Tresor auf, wenn er nicht benutzt wird. ============================================================================== *23.4* Binäre Dateien Sie können binäre Dateien mit Vim editieren. Vim ist nicht wirklich dafür gemacht, also gibt ein Paar Einschränkungen. Aber Sie können eine Datei einlesen, ein Zeichen ändern und sie zurück speichern, mit dem Ergebnis, dass nur dieses eine Zeichen geändert wurde und die Datei ansonsten unverändert ist. Um sicherzustellen, dass Vim seine cleveren Tricks nicht falsch benutzt, fügen Sie beim Starten von Vim das Argument »-b« hinzu: > vim -b Datendatei Dies setzt die Option 'binary'. Der Effekt dieser ist, dass unerwartete Seiteneffekte ausgeschaltet werden. Zum Beispiel wird 'textwidth' auf null gesetzt, um die automatische Formatierung von Zeilen zu vermeiden. Und Dateien werden stets im Unix-Dateiformat gelesen. Der binäre Modus kann benutzt werden, um eine Meldung in einem Programm zu ändern. Achten Sie darauf, keine Zeichen einzufügen oder zu löschen, dies würde das Programm nicht mehr arbeiten lassen. Benutzen Sie »R«, um in den Ersetzungsmodus zu gehen. Viele Zeichen in der Datei sind nicht druckbar. Um sie im Hexadezimal-Format zu sehen: > :set display=uhex Ansonsten kann der Befehl »ga« benutzt werden, um den Wert des Zeichens unter dem Cursor zu sehen. Wenn der Cursor auf einem ist, sieht die Ausgabe so aus: <^[> 27, Hex 1b, Oktal 033 ~ Es könnte nicht viele Zeilenumbrüche in der Datei geben. Um etwas Überblick zu bekommen, schalten Sie die Option 'wrap' aus: > :set nowrap BYTE-POSITION Benutzen Sie diesen Befehl, um zu sehen, auf welchem Byte in der Datei sie Sind: > g CTRL-G Die Ausgabe ist wortreich: Sp 9-16 von 9-16; Zeile 277 von 330; Wort 1806 von 2058; Byte 10580 von 12206 ~ Die letzten zwei Zahlen sind die Byte-Position in der Datei und die Gesamtzahl an Bytes. Dies rechnet mit ein, wie 'fileformat' die Anzahl an Bytes ändert, die ein Zeilenumbruch benutzt. Um auf ein bestimmtes Byte in der Datei zu gehen, benutzen Sie den Befehl »go«. Um zum Beispiel auf Byte 2345 zu gehen: > 2345go XXD BENUTZEN Ein echter Binäreditor zeigt den Text auf zwei Arten an: wie er ist und im Hexadezimalformat. Dies können Sie in Vim erreichen, indem Sie die Datei zuerst mit dem Programm »xxd« konvertieren, das mit Vim geliefert wird. Editieren Sie die Datei zuerst im Binärmodus: > vim -b Datendatei Nun konvertieren Sie die Datei mit xxd in ein Hexadezimal-Abbild: > :%!xxd Der Text wird so aussehen: 0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI ~ 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 ~ 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59. ~ Sie können den Text nun nach Belieben ansehen und editieren. Vim behandelt die Informationen als gewöhnlichen Text. Ändern der Hex-Werte ändert nicht die gedruckten Zeichen oder andersherum. Zum Schluss konvertieren Sie die Datei zurück mit: > :%!xxd -r Nur die Änderungen in dem Hexadizmalteil werden benutzt. Änderungen in dem druckbaren Textteil auf der rechten Seite werden ignoriert. Siehe die Handbuchseite von xxd für weitere Informationen. ============================================================================== *23.5* Komprimierte Dateien Dies ist einfach: Sie können eine komprimierte Datei ganz wie jede andere Datei editieren. Die Erweiterung »gzip« übernimmt das Dekomprimieren der Datei, wenn Sie sie editieren. Und komprimiert sie wieder, wenn Sie sie speichern. Diese Kompressionsmethoden werden aktuell unterstützt: .Z compress .gz gzip .bz2 bzip2 Vim benutzt die erwähnten Programme, um tatsächlich zu komprimieren und dekomprimieren. Sie müssen eventuell die Programme zuerst installieren. ============================================================================== Nächstes Kapitel: |usr_24.txt| Schnelles Einfügen Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: