Affichage des caractères spéciaux invisibles dans Vim

Introduction

Lorsque vous travaillez avec Vim, certains caractères spéciaux ne s'affichent pas visuellement dans l'éditeur. Ces caractères peuvent être des caractères de contrôle, des caractères Unicode spéciaux, ou des éléments de formatage invisibles. Cet article explique comment les visualiser et les manipuler.

Consultation des caractères spéciaux

Dans Vim, les caractères spéciaux visibles s'affichent directement, tandis que les caractères invisibles apparaissent sous leur forme d'entrée en ligne de commande. Par exemple, le caractère \r s'affiche comme ^M. Pour consulter tous les caractères spéciaux disponibles dans Vim, utilisez la commande :help digraph-table.

Voici un extrait de cette documentation :


^@  NU   0x00  0   NULL (NUL)
^A  SH   0x01  1   START OF HEADING (SOH)
^B  SX   0x02  2   START OF TEXT (STX)
^C  EX   0x03  3   END OF TEXT (ETX)
^D  ET   0x04  4   END OF TRANSMISSION (EOT)
^E  EQ   0x05  5   ENQUIRY (ENQ)
^F  AK   0x06  6   ACKNOWLEDGE (ACK)
^G  BL   0x07  7   BELL (BEL)
^H  BS   0x08  8   BACKSPACE (BS)
^I  HT   0x09  9   CHARACTER TABULATION (HT)
^@  LF   0x0a  10  LINE FEED (LF)
^K  VT   0x0b  11  LINE TABULATION (VT)
^L  FF   0x0c  12  FORM FEED (FF)
^M  CR   0x0d  13  CARRIAGE RETURN (CR)

La première colonne affiche le caractère spécial, la deuxième colonne montre le digramme correspondant, la troisième colonne représente la notation hexadécimale, la quatrième colonne la notation décimale, et la cinquième colonne donne le nom officiel du caractère.

Pour visualiser l'encodage binaire du fichier actuel, exécutez :

: %!xxd

Attention : cette commande remplace le contenu du fichier ! Pour restaurer le contenu original :

: %!xdd -r

Saisie par digramme

Vim ne dispose pas d'un sélecteur graphique pour les caractères spéciaux, mais propose deux méthodes de saisie :

  • Utilisation de deux caractères pour représenter un caractère spécial (digramme)
  • Saisie directe par valeur de code (ASCII ou Unicode)

Un digramme fonctionne comme un système de double saisie : vous appuyez successivement sur deux caractères pour obtenir un caractère spécial. En mode insertion, appuyez d'abord sur la touche préfixe (Ctrl-k par défaut), puis saisissez le digramme.

Par exemple, en tapant :

Rg

Le caractère ® apparaîtra, où "Rg" est le digramme de ce symbole. Pour consulter tous les digrammes disponibles, utilisez :help digraph-table.

Saisie par codage de caractère

En plus des digrammes, vous pouvez saisir un caractère directement par son codage. Cette méthode fonctionne également en mode insertion après avoir appuyé sur la touche préfixe.

Cinq formats sont disponibles :

Valeur décimale ASCII : ^Vnnn (000 <= nnn <= 255)
Valeur octale : ^VOnnn ou ^Vonnn (000 <= nnn <= 377)
Valeur hexadécimale : ^VXnn ou ^Vxnn (00 <= nn <= FF)
Unicode BMP hexadécimal : ^Vunnnn (0000 <= nnnn <= FFFF)
Unicode complet hexadécimal : ^VUnnnnnnnn (00000000 <= nnnnnnnn <= 7FFFFFFF)

Ces opérations nécessitent que l'encodage Unicode soit configuré. Par exemple :

065

Produira le caractère A, car 65 est son code ASCII. Unicode est rétrocompatible avec ASCII.

Gestion des sauts de ligne

Les sauts de ligne ont un comportement particulier dans Vim et méritent une explication détaillée.

Distinction entre \r et \n

Le caractère \r représente le retour chariot (Carriage Return) et peut être saisi avec Ctrl-k CR, s'affichant comme ^M. Le caractère \n représente le saut de ligne (New Line) et correspond à la touche Entrée.

Pour les fins de ligne au format Windows (\r\n), Vim affiche ^M à la fin de chaque ligne.

Remplacement

Lorsque vous utilisez la commande :s pour remplacer par un saut de ligne, utilisez \r (équivalent à la touche Entrée) et non \n. Par exemple, pour remplacer toutes les virgules par des sauts de ligne :

:%s/,/\r/g

Si vous utilisez \n, le target sera remplacé par un caractère NULL (affiché comme ^@).

Pour convertir un fichier avec des sauts de ligne DOS (\r\n) vers le format Unix (\n), la procédure est simple :

:set fileformat=unix
:w

Recherche

En mode recherche (/), utilisez \n pour rechercher les sauts de ligne car le saut de ligne Unix dans Vim est bien \r\n. Par exemple :

/foo\nbar

Permettra de trouver toutes les occurrences de :

foo
bar

Visualisation des caractères invisibles

En dehors des caractères spéciaux, ASCII contient de nombreux caractères invisibles comme les espaces, retours chariot et tabulations. Vous pouvez contrôler leur affichage via la varible list :

" Activer l'affichage des caractères cachés
:set list

" Désactiver l'affichage des caractères cachés
:set nolist

" Personnaliser les caractères à afficher
:set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<

Cette configuration permet de visualiser les fins de ligne ($), les tbaulations (?>-), les espaces de fin (~), et les indicateurs de continuation (> ou <).

Étiquettes: vim editeur-texte Linux caracteres-speciaux ascii

Publié le 31 mai à 19h57