Cómo ingresar caracteres no ascii usando códigos hexadecimales u octales en vi

33

Estoy tratando de escribir una biblioteca de golf para postscript. Pero necesita ser condensado. Por lo tanto, necesito una forma conveniente de escribir bytes arbitrarios en su mayoría texto ascii.

Sé que esto se puede hacer fácilmente con absolutamente cualquier lenguaje de programación, pero ¿puedo hacerlo en vi? (No :help octalfue de ayuda).

Editar: Aquí está la biblioteca de golf resultante para PostScript . Afortunadamente, me di cuenta al principio de que jugar al golf en la biblioteca en sí era una idea estúpida y no lo hice.

luser droog
fuente
77
Si Vim está disponible, esto podría ayudar
sr_

Respuestas:

15

Supongo que lo usa vim, porque es un comando de vim. En algunos sistemas es solo un enlace simbólico para ejecutarlo en modo compatible con vi. :helpoctalvivim

En vim:

  • Puede ingresar caracteres Unicode desde un plano multilingüe básico que puede usar:
    Presione ctrl+ vy luego ingrese el código Unicode hexadecimal de cuatro dígitos.
  • Otra opción son los dígrafos. Puede leer más sobre ellos en vimla ayuda de ( help: dig).
    Presione ctrl+ ky luego secuencia de dos caracteres.
    Puede enumerar secuencias compatibles con su comando vim usig :digraph.

En nvi, vi y en otros lugares:

  • Ctrl+ Shifty presiona Uy luego ingresa el código hexadecimal Unicode.
Alex Bolotov
fuente
3
Creo que Ctrl+Ves para ingresar dígitos decimales , si no es seguido porx
3
@Carlos es correcto. Esta respuesta es incorrecta. La respuesta de Alan es correcta.
malan
60
:help i_CTRL-V_digit

En el modo de inserción, escriba Ctrl+ Vseguido de

  • un número decimal (0-255)
  • o entonces un número octal (o0-o377, es decir, 255 es el valor máximo)
  • x entonces un número hexadecimal (x00-xFF, es decir, 255 es el valor máximo)
  • u entonces una secuencia Unicode de 4 hexchar
  • U entonces una secuencia Unicode de 8 hexchar

Los números decimales y octales están limitados a tres dígitos. Los números decimales inferiores a 100 pueden incluir ceros iniciales, que se ignoran. Los números octales menores de 100 oct (es decir, 64) pueden incluir ceros a la izquierda, pero no son obligatorios. Los números octales mayores o iguales a 100 oct pueden no incluir ceros iniciales (pero puede escribir un inicio osi lo desea).

Puede terminar un número escribiendo un carácter que no sea un dígito válido para esa raíz. Por ejemplo,

  • Ctrl+ V    065 →  A.
  • Ctrl+ V    65B →  Ab.
  • Ctrl+ Vo041 →  !.
  • Ctrl+ Vo419 →  !9.

Los números hexadecimales regulares (un octeto) están limitados a dos dígitos. Al igual que con lo anterior, puede repetir el carácter de la raíz (por ejemplo,  Ctrl+ Vuu0041 →  A) para los caracteres especificados por códigos hexadecimales.  o y no  xdistinguen entre mayúsculas y minúsculas.

Alan
fuente
Para agregar algunos consejos más: el número decimal debe estar entre 0-255. El número hexadecimal entre x00-xFF.
wisbucky
ascii esaple es ctrl + v x1b(para secuencias de color ascii)
ThorSummoner
1
Un recordatorio de que si está en Windows y reasigna Ctrl + V para pegar, puede usar Ctrl + Q en modo Insertar en su lugar. Ver stackoverflow.com/questions/426896/…
Chris R. Donnelly