vi, Vim et UTF-8 (E

La question :

[suite sur fr.comp.applications.editeurs-de-texte]

Le Wed, 03 Feb 2010 23:38:35 +0100, Olivier Miakinen a écrit :

> Mon excellent éditeur (Notepad++) n'y était pour rien. Comme bien
> souvent, le bug se situait entre la chaise et le clavier


Il me semble qu'avec Notepad++, il détecte cette m.... de BOM et le
coche dans le menu de choix de caractères.

Tu es trop sévère envers toi-même, car c'était vraiment difficile à
détecter. Moi-même je n'ai pas du tout pensé au BOM, même quand un
« diff -b » entre tes deux pages m'a signalé comme différentes deux
lignes qui me semblaient parfaitement identiques, caractère par
caractère. Ça n'a pas plus tilté quand, essayant de retirer toutes les
espaces de débuts de lignes sous vi j'ai vu une des lignes conserver
encore des espaces au début. C'est seulement quand le même vi a fini
par m'afficher « <feff> » quelque part (sans d'ailleurs que je comprenne
pourquoi) que j'ai enfin compris qu'il y avait une saleté de BOM au
milieu du fichier.


Ce n'est pas vi qui affiche <feff> mais Vim.

Le vrai vi version sourceforge <http://ex-vi.sourceforge.net/> travaille
dans l'encodage du système et il me semble qu'il ne gère pas le BOM. Il
suffit de virer les trois premiers caractères.

Avec Vim, la procédure est la suivante :

Passer l'éditeur en UTF-8 s'il n'y est pas en ajoutant dans .vimrc :

===== .vimrc =======
if has("multi_byte")
set enc=utf-8
set fencs=ucs-bom,utf-8,latin1
" si le système n'est pas en UTF-8 mettre :
set tenc=latin1
endif
====================

Avec un fichier ouvert :

:set fenc? " affiche l'encodage du fichier.
:set bomb? " teste la présence de cette saleté de BOM.
:set nobomb " vire cette saleté de BOM.

Si on veut écrire dans un autre jeu de caractères, on modifie la valeur
de fenc mais on ne touche jamais à enc.

Pour entrer des caractères unicodes, Vim est très pratique :

Par code :
<CTRL-V>u <4 chiffres hexa>
<CTRL-Q>u <4 chiffres hexa>

Par digraphes (oe pour ½, /- pour la croix latine...) :
<CTRL-K><2 lettres>
On a la liste des digraphes par :dig
--
Patrick Texier

vim:syntax=mail:ai:ts=4:et:tw=72

Poser votre question sur le forum Logiciels

Les 8 réponses :

Le 04/02/2010 05:40, Patrick Texier m'a répondu :


[suite sur fr.comp.applications.editeurs-de-texte]


Bonne idée, ça fait longtemps que j'aurais dû m'y inscrire.


Ce n'est pas vi qui affiche <feff> mais Vim.


C'est tout à fait exact. J'ai le tort de continuer à dire « vi » alors
que ça fait des années que je n'utilise plus que Vim.


[...]

Avec Vim, la procédure est la suivante : [etc.]


Merci vraiment pour toutes ces indications. J'ai souvent eu du mal à me
dépatouiller de la gestion des charsets dans Vim, ça me sera précieux.

--
Olivier Miakinen

Patrick Texier a écrit :


Par digraphes (oe pour ?, /- pour la croix latine...) :
<CTRL-K><2 lettres>
On a la liste des digraphes par :dig


Pour ?, le clavier "France Alternative" s'en tire avec AltGr-O. Pour la croix latine pas trouvé (mais je ne l'utilise que
rarement..., un copier-coller depuis la table des caractères doit suffire). Sinon, pour les digraphes, très souvent la touche
"Compose" accède à ses v?ux : Aller, hop, un petit trademark ? !

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org

Le Thu, 04 Feb 2010 09:56:49 +0100, Sergio a écrit :


Pour ?, le clavier "France Alternative" s'en tire avec AltGr-O. Pour
la croix latine pas trouvé (mais je ne l'utilise que rarement...)


C'est le symbole pour le décès en généalogie et en histoire (?).
Il existe dans même en cp1252 mais pas en ISO-8859-1/15.


Un copier-coller depuis la table des caractères doit suffire). Sinon,
pour les digraphes, très souvent la touche "Compose" accède à ses
v?ux : Aller, hop, un petit trademark ? !


Les digraphes de Vim sont totalement indépendants de la configuration du
système et donnent un accès simple à des caractères que l'on ne
pourrait avoir que par le code.

Pour faire un ? (l "barré" polonais - u0142) le digraphe est l/, on peut
utiliser :

- <CTRL-V>u0142
- <CTRL-K>l/

- le mode digraphe :

:set digraph
l<Backspace>/

--
Patrick Texier

vim:syntax=mail:ai:ts=4:et:tw=72

Le Thu, 04 Feb 2010 08:58:32 +0100, Olivier Miakinen a écrit :


Ce n'est pas vi qui affiche <feff> mais Vim.



C'est tout à fait exact. J'ai le tort de continuer à dire « vi » alors
que ça fait des années que je n'utilise plus que Vim.


Le problème c'est que les sources de vi n'étaient pas disponibles
jusqu'en 2002. Les distributions ont généralement installé un Vim
complet et un Vim minimum qu'on appelle par vi. Même maintenant, il ne
doit pas y en avoir beaucoup qui installent un vrai vi alors qu'un
système de type Unix devrait en avoir un, le plus proche de Posix
possible.

Si on travaille chez des clients avec des Unix propriétaires, c'est
préférable de savoir l'utiliser pour éviter de massacrer son texte à la
première utilisation des flèches en mode insertion.


Avec Vim, la procédure est la suivante : [etc.]



Merci vraiment pour toutes ces indications. J'ai souvent eu du mal à me
dépatouiller de la gestion des charsets dans Vim, ça me sera précieux.


Il est très bien documenté mais difficile à prendre en mains.
--
Patrick Texier

vim:syntax=mail:ai:ts=4:et:tw=72

Le 04/02/2010 18:06, Patrick Texier m'a répondu :


Le Thu, 04 Feb 2010 08:58:32 +0100, Olivier Miakinen a écrit :


À propos de gestion de charsets, avec gVim tu as parfaitement répondu en
UTF-8 à Sergio qui écrivait lui-même en UTF-8 (quoique avec des lignes
trop longues -- public joke), mais à mon article en Latin9 tu réponds en
UTF-8 annoncé Latin1...

Au passage, c'est vraiment gVim qui fait fonction de nouvelleur, ou bien
tu t'en sers juste comme éditeur de texte ?


Si on travaille chez des clients avec des Unix propriétaires, c'est
préférable de savoir l'utiliser pour éviter de massacrer son texte


En effet. J'ai la chance de ne pas travailler souvent sur des machines
sans Vim (enfin... quand c'est Windows je commence par installer cygwin)
mais je ne me rappelle pas avoir eu de problèmes les rares fois où je
n'avais que vi.


à la première utilisation des flèches en mode insertion.


Hein ? On peut utiliser les flèches en mode insertion ?!? C'est
peut-être parce que j'ignorais ça que je me débrouille encore bien
avec vi !

(Au fait, même en dehors du mode insertion je me déplace surtout avec
j, k, h ou backspace, espace, return, Ctrl+U, Ctrl+D, Ctrl+B et Ctrl+F,
mais jamais avec les flèches.)


Il est très bien documenté mais difficile à prendre en mains.


Il existe une doc imprimable quelque part ? Parce que tous les 'man' que
j'ai pu trouver étaient toujours minuscules, et que je n'ai jamais pu me
faire aux docs interactives.

Poser votre question sur le forum Logiciels

Questions similaires :