web-dev-qa-db-fra.com

Comment entrer des caractères non ascii en utilisant des codes hexadécimaux ou octaux dans vi

J'essaie d'écrire une bibliothèque de golf pour postscript. Mais il doit être condensé lui-même. J'ai donc besoin d'un moyen pratique de taper des octets arbitraires dans du texte principalement ascii.

Je sais que cela peut facilement être fait avec absolument n'importe quel langage de programmation, mais puis-je le faire dans vi? (:help octal n'a pas aidé).

Edit: Voici le résultat bibliothèque de golf pour postscript . Heureusement, j'ai réalisé très tôt que jouer au golf à la bibliothèque elle-même était une idée stupide et je ne l'ai pas fait.

36
luser droog

Je suppose que vous utilisez vim, car :helpoctal est une commande de vim. Sur certains systèmes, vi n'est qu'un lien symbolique vers vim qui l'exécute en mode compatible vi.

En vim:

  • Vous pouvez saisir des caractères Unicode à partir d'un plan multilingue de base que vous pouvez utiliser:
    Presse ctrl+v puis entrez le code unicode hexadécimal à quatre chiffres.
  • Une autre option est les digraphes. Vous pouvez en savoir plus à leur sujet dans l'aide de vim (help: Dig).
    Presse ctrl+k puis une séquence de deux caractères.
    Vous pouvez répertorier les séquences prises en charge dans votre commande vim usig :digraph.

Aux nvi, vi et ailleurs:

  • Ctrl+Shift et frapper U puis entrez le code hexadécimal Unicode.
17
Alex Bolotov
:help i_CTRL-V_digit

En mode insertion, saisissez Ctrl+V suivi par

  • un nombre décimal (0-255)
  • o puis un nombre octal (o0-o377, c'est-à-dire que 255 est la valeur maximale)
  • x puis un nombre hexadécimal (x00-xFF, c'est-à-dire que 255 est la valeur maximale)
  • u puis une séquence Unicode 4 hexchar
  • U puis une séquence Unicode 8 hexchar

Les nombres décimaux et octaux sont limités à trois chiffres. Les nombres décimaux inférieurs à 100 peuvent inclure des zéros non significatifs, qui sont ignorés. Nombre octal inférieur à 100oct (c'est-à-dire 64) peut inclure des zéros non significatifs, mais ils ne sont pas obligatoires. Nombres octaux supérieurs ou égaux à 100oct peut pas inclure des zéros non significatifs (mais vous pouvez taper un o si tu veux).

Vous pouvez terminer un nombre en tapant un caractère qui n'est pas un chiffre valide pour ce radix. Par exemple,

  • Ctrl+V 65A.
  • Ctrl+V 65BAb.
  • Ctrl+Vo 41!.
  • Ctrl+Vo 419!9.

Les nombres hexadécimaux réguliers (un octet) sont limités à deux chiffres. Comme pour ce qui précède, vous pouvez répéter le caractère radical (par exemple,Ctrl+Vuu 41A) pour les caractères spécifiés par des codes hexadécimaux. o et x ne sont pas sensibles à la casse.

68
Alan