*usr_23.txt* pour Vim version 6.2. Dernière modification : 03 sep 2001 MANUEL de l'UTILISATEUR VIM - par Bram Moolenaar Éditer d'autres fichiers Ce chapitre traite de l'édition de fichiers qui ne sont pas des fichiers ordinaires. Avec Vim, vous pouvez éditer des fichiers compressés ou chiffrés. Certains fichiers ne sont accessibles qu'au travers d'Internet. Avec quelques restrictions, les fichiers binaires peuvent également être édités. |23.1| Fichiers DOS, Mac et Unix |23.2| Fichiers sur Internet |23.3| Chiffrement |23.4| Fichiers binaires |23.5| Fichiers compressés Chapitre suivant : |usr_24.txt| Insérer rapidement Chapitre précédent : |usr_22.txt| Trouver le fichier à éditer Table des matières : |usr_toc.txt| ============================================================================== *23.1* Fichiers DOS, Mac et Unix Aux premiers temps de l'informatique, les anciennes machines « Télétype » utilisaient deux caractères pour débuter une nouvelle ligne. Un pour ramener le chariot à la position d'origine (retour chariot ["Carriage Return"], ), et un autre pour faire avancer le papier (saut-de-ligne ["Line Feed"], ). À l'apparition des ordinateurs, l'espace de stockage était cher. Certaines personnes décidèrent qu'elles n'avaient pas besoin de deux caractères pour une fin-de-ligne. Celles d'Unix choisirent d'utiliser (tout seul) comme fin-de-ligne. Celles d'Apple s'accordèrent sur . Et celles de MS-DOS (puis MS-Windows) décidèrent de conserver le bon vieux . Cela signifie que si vous tentez de passer un fichier d'un système à un autre, vous rencontrerez des problèmes avec les coupures de lignes. L'éditeur Vim reconnaît automatiquement les différents formats de fichiers et arrange discrètement les choses pour que tout se passe correctement. L'option 'fileformats' contient les différents formats qui sont essayés quand un nouveau fichier est édité. Par exemple, la commande suivante indique à Vim de tenter d'abord le format Unix puis le format DOS : > :set fileformats=unix,dos Vous remarquerez le format dans le message que vous obtenez lors de l'édition d'un fichier. Vous ne voyez rien si vous éditez un fichier au format natif. Ainsi, l'édition d'un fichier Unix sur Unix ne produit aucune remarque. Mais si vous éditez un fichier DOS, Vim vous l'indiquera : "/tmp/test" [dos] 3L, 71C ~ Avec un fichier Mac, vous verriez "[mac]". Le format de fichier détecté est stocké dans l'option 'fileformat'. Pour connaître le format utilisé, exécutez la commande suivante : > :set fileformat? Les trois noms utilisés par Vim sont : unix dos mac UTILISER LE FORMAT MAC Sur Unix, est utilisé pour couper une ligne. Il n'est pas rare d'avoir un caractère au beau milieu d'une ligne. Incidemment, cela arrive assez souvent dans les scripts Vi (et Vim). Sur le Macintosh, où est le caractère pour couper une ligne, il est possible d'avoir des caractères au milieu d'une ligne. Le résultat est qu'il est impossible d'être sûr à 100% qu'un fichier qui contient à la fois des caractères et des caractères est un fichier Unix ou Mac. Par conséquent, Vim suppose que sur Unix, vous n'éditerez probablement pas de fichiers Mac, et ne vérifie pas ce type de fichier. Pour vérifier tout de même ce type de fichier, ajoutez "mac" à 'fileformats' : > :set fileformats+=mac Alors Vim tentera de déterminer le format du fichier. Soyez attentifs aux situations où Vim se trompe. FORCER LE FORMAT Si vous utilisez un bon vieux Vi et que vous tentez d'éditer un fichier au format DOS, vous verrez que chaque ligne se termine par un caractère ^M (^M correspond à ). La détection automatique évite cela. Et si vous vouliez éditer un fichier de cette manière ? Alors vous devez forcer le format : > :edit ++ff=unix file.txt La chaîne "++" est un élément indiquant à Vim que le nom d'une option suit, dont la valeur qui remplace celle par défaut pour cette unique commande. "++ff" signifie 'fileformat'. Vous pourriez aussi utiliser "++ff=mac" ou "++ff=dos". Cela ne fonctionne pas pour toutes les options, seules "++ff" et "++enc" sont actuellement implémentées. Les noms complets "++fileformat" et "++encoding" fonctionnent également. CONVERSION Vous pouvez utiliser l'option 'fileformat' pour convertir un format de fichier en un autre. Supposons, par exemple, que vous avez un fichier MS-DOS appelé "README.TXT" que vous souhaitez convertir au format Unix. Démarrez l'édition du fichier au format MS-DOS : > vim README.TXT Vim va reconnaître un fichier au format DOS. Passez-le à présent au format de fichier Unix : > :set fileformat=unix :write Le fichier est écrit au format Unix. ============================================================================== *23.2* Fichiers sur Internet Quelqu'un vous envoie un message électronique, qui fait référence à un fichier via une URL. Par exemple : Les informations sont disponibles ici : ~ ftp://ftp.vim.org/pub/vim/README ~ Vous pourriez démarrer un programme pour télécharger le fichier, l'enregistrer sur un disque local et enfin lancer Vim pour l'éditer. Il existe un moyen bien plus simple. Placez le curseur sur l'un des caractères de l'URL. Puis utilisez cette commande : > gf Avec un peu de chance, Vim déterminera le programme à utiliser pour télécharger le fichier, le téléchargera et éditera la copie. Pour ouvrir le fichier dans une nouvelle fenêtre, utilisez CTRL-W f. Si quelque chose se passe mal, vous obtiendrez un message d'erreur. Il est possible que l'URL soit erronée, que vous n'ayez pas la permission de lecture, que la connexion soit inactive, etc. Il est malheureusement difficile de déterminer la cause de l'erreur. Vous préfèrerez alors peut-être tenter le téléchargement manuel du fichier. L'accès à des fichiers au travers d'Internet fonctionne avec le greffon "netrw". Actuellement, les URL avec les formats suivants sont reconnues : ftp:// utilise `ftp` rcp:// utilise `rcp` scp:// utilise `scp` http:// utilise `wget` (lecture seule) Vim n'assure pas les communications par lui-même, il repose sur la présence dans votre ordinateurs des programmes mentionnés ci-dessus. `ftp` et `rcp` sont présents sur la plupart des systèmes Unix. `scp` et `wget` peuvent nécessiter une installation. Vim détecte ces URL dans toutes les commandes qui lancent l'édition d'un nouveau fichier, par exemple ":edit" et ":split". Les commandes d'écriture fonctionnent également, à part pour "http://". Pour davantage d'informations, notamment sur les mots de passe, voir |netrw|. ============================================================================== *23.3* Chiffrement Il existe des informations que vous préférez garder pour vous. Par exemple, lors de l'écriture d'un test sur un ordinateur que des étudiants utilisent aussi. Vous ne voulez pas que des étudiants astucieux trouvent le moyen de lire les questions avant que l'examen n'ait lieu. Vim peut chiffrer le texte pour vous, ce qui vous procure une certaine protection. Pour lancer l'édition d'un nouveau fichier avec le chiffrement, utilisez l'argument "-x" pour démarrer Vim. Exemple : > vim -x examen.txt Une invite vous demande la clé à utiliser pour le chiffrement et le déchiffrement du fichier : Tapez la clé d'encodage: ~ Saisissez alors soigneusement la clé secrète. Vous ne pouvez pas voir les caractères que vous tapez, ils sont remplacés par des étoiles. Pour éviter les situations fâcheuses où une faute de frappe pose problème, Vim vous demande de saisir à nouveau la clé : Réentrez la même clé: ~ Vous pouvez maintenant éditer ce fichier normalement et y mettre tous vos secrets. Quand vous avez terminé l'édition du fichier et que vous dites à Vim de quitter, le fichier est chiffré puis écrit. Quand vous éditez le fichier avec Vim, il vous demandera de saisir la même clé à nouveau. Vous n'avez pas besoin d'utiliser l'argument "-x". Vous pouvez aussi utiliser la commande ":edit" du mode Normal. Vim ajoute une chaîne spécifique au fichier, grâce à laquelle il sait que le fichier a été chiffré. Si vous essayez de visualiser le fichier avec un autre programme, vous ne verrez que du bruit. De même, si vous éditez le fichier avec Vim et que vous saisissez une mauvaise clé, vous n'aurez que du bruit. Vim ne possède pas de mécanisme pour vérifier si la clé est la bonne (cela rend le cassage de la clé plus difficile). ACTIVER OU DÉSACTIVER LE CHIFFREMENT Pour désactiver le chiffrement d'un fichier, fixez l'option 'key' à une chaîne vide : > > :set key= La prochaine écriture du fichier sera effectuée sans chiffrement. Fixez l'option 'key' pour activer le chiffrement est une mauvaise idée, car le mot de passe apparaît en clair. N'importe qui pourrait le lire par dessus votre épaule. Pour éviter ce problème, la commande ":X" a été créee. Elle vous demande une clé de chiffrement, comme le fait l'argument "-x" : > :X Tapez la clé d'encodage: ****** Réentrez la même clé: ****** LIMITES DU CHIFFREMENT L'algorithme de chiffrement utilisé par Vim est faible. Il est suffisamment solide pour tenir à distance le menu fretin, mais certainement pas assez pour résister à un expert en chiffrement disposant du temps nécessaire. Soyez également conscient que le fichier d'échange n'est pas chiffré ; donc quand vous êtes en cours d'édition, une personne avec les privilèges du super-utilisateur peut lire le texte non chiffré dans ce fichier. Une manière d'éviter que des personnes lisent votre fichier d'échange est de ne pas en utiliser. Si vous spécifiez l'argument "-n" sur la ligne de commande, aucun fichier d'échange n'est utilisé (à la place, Vim place tout en mémoire). Par exemple, pour éditer le fichier chiffré "fichier.txt" sans fichier d'échange, utilisez la commande suivante : > vim -x -n fichier.txt Si l'édition est en cours, le fichier d'échange peut être désactivé avec : > :setlocal noswapfile Comme il n'y a aucun fichier d'échange, le recouvrement est impossible. Enregistrez le fichier un peu plus souvent pour limiter le risque de perdre vos modifications. Tant que le fichier est en mémoire, il n'est pas chiffré. Quiconque disposant des privilèges suffisants peut regarder dans la mémoire de l'éditeur et découvrir le contenu du fichier. Si vous utilisez un fichier "viminfo", soyez conscient que le contenu des registres y est également écrit en clair. Si vous voulez vraiment sécuriser le contenu d'un fichier, éditez-le uniquement sur ordinateur portable non connecté à un réseau, utilisez de bons outils de chiffrement et conservez l'ordinateur dans un endroit verrouillé quand vous ne l'utilisez pas. ============================================================================== *23.4* Fichiers binaires Vous pouvez éditer des fichiers binaires dans Vim. Vim n'a pas vraiment été réalisé pour cela, de ce fait, il existe quelques limitations. Mais vous pouvez lire un fichier, modifier un caractère et l'écrire, avec comme résultat qu'un seul caractère est modifié et que le reste du fichier est inchangé. Pour être sûr que Vim n'utilise pas ses mécanismes évoluées à mauvais escient, ajoutez l'argument "-b" quand vous lancez Vim : > vim -b fichierdonnees Cela active l'option 'binary'. Cela a pour conséquence d'éviter les effets de bord inattendus. Par exemple, 'textwidth' est fixé à 0, pour éviter la mise en forme automatique des lignes. Et les fichiers sont toujours lus dans le format de fichier Unix. Le mode binaire peut être utilisé pour modifier un message dans un programme. Prenez soin de ne pas insérer ou effacer de caractère, cela perturberait très gravement le fonctionnement du programme. Utilisez "R" pour passer en mode Remplacement. De nombreux caractères du fichier ne seront pas imprimables. Pour les visualiser sous forme hexadécimale : > :set display=uhex Sinon, la commande "ga" permet de voir la valeur du caractère sous le curseur. La sortie, quand le curseur se trouve un caractère , ressemble à ceci : <^[> 27, Hex 1b, Octal 033 ~ Il se peut que le fichier contienne peu de coupures de ligne. Pour avoir une vision d'ensemble, désactivez l'option 'wrap' : > :set nowrap POSITION EN OCTETS Pour savoir sur quel octet du fichier vous vous trouvez, utilisez cette commande : > g CTRL-G La sortie est bavarde : Col 9-16 de 9-16; Ligne 277 de 330; Mot 1806 de 2058; Octet 10580 de 12206 ~ Les deux derniers nombres sont la position en octets dans le fichier et le nombre total d'octets. Ces nombres prennent en compte la manière dont 'fileformat' change le nombre d'octets utilisés pour les coupures de lignes. Pour aller sur un octet particulier du fichier, utilisez la commande "go". Par exemple, pour aller sur l'octet 2345 : > 2345go UTILISER XXD Un véritable éditeur binaire affiche le texte de deux manières : tel qu'il est et mis en forme en hexadécimal. Vous pouvez le faire avec Vim en convertissant d'abord le fichier avec le programme `xxd`. Il est fourni avec Vim. Commencez par éditer le fichier en mode binaire : > vim -b fichierdonnees À présent, convertissez le fichier dans sa représentation hexadécimale avec `xxd` : > :%!xxd Le texte ressemblera à ceci : 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. ~ Vous pouvez maintenant voir et éditer le texte comme vous le souhaitez. Vim traite les informations comme du texte ordinaire. Modifier l'hexadécimal ne provoque pas la modification du caractère imprimable et inversement. Finalement, effectez la conversion inverse avec : > > :%!xxd -r Seules les modifications dans la partie hexadécimale sont prises en compte. Les modifications sur le texte imprimable situé à droite sont ignorées. Voir la page de manuel de `xxd` pour davantage d'informations. ============================================================================== *23.5* Fichiers compressés C'est simple : vous pouvez éditer les fichiers compressés comme n'importe quel autre fichier. Le greffon "gzip" prend en charge la décompression du fichier quand vous l'éditez. Et le compresse à nouveau quand vous l'enregistrez. Les méthodes de compression actuellement supportées sont : .Z compress .gz gzip .bz2 bzip2 Vim utilise les programme mentionnés pour réaliser la compression et la décompression. Il est possible qu'il vous soit nécessaire d'installer ces programmes auparavant. ============================================================================== Chapitre suivant : |usr_24.txt| Insérer rapidement Copyright : voir |manual-copyright| vim:tw=78:ts=8:ft=help:norl: