Como inserir caracteres não-ascii usando códigos hexadecimais ou octais no vi

33

Estou tentando escrever uma biblioteca de golfe para postscript. Mas ele precisa ser condensado em si. Então, eu preciso de uma maneira conveniente de digitar bytes arbitrários no texto principalmente ascii.

Eu sei que isso pode ser feito facilmente com absolutamente qualquer linguagem de programação, mas posso fazê-lo no vi? ( :help octalnão foi de ajuda).

Edit: Aqui está a biblioteca de golfe resultante para postscript . Felizmente, logo percebi que jogar golfe na biblioteca era uma ideia estúpida e não fiz isso.

luser droog
fonte
7
Se o Vim estiver disponível, isso pode ajudar
sr_

Respostas:

15

Eu suponho que você use vim, porque é um comando do vim. Em alguns sistemas, há apenas um link simbólico para o qual é executado no modo compatível com vi. :helpoctalvivim

No vim:

  • Você pode inserir caracteres unicode a partir do plano multilíngue básico que pode usar:
    Pressione ctrl+ ve, em seguida, insira o código unicode hexadecimal de quatro dígitos.
  • Outra opção são os dígrafos. Você pode ler mais sobre eles na vimajuda de ( help: dig).
    Pressione ctrl+ ke, em seguida, sequência de dois caracteres.
    Você pode listar as seqüências suportadas no comando vim usig :digraph.

Nos nvi, vi e em outros lugares:

  • Ctrl+ Shifte pressione Ue, em seguida, insira o código hexadecimal unicode.
Alex Bolotov
fonte
3
Eu acho que Ctrl+Vé para entrar decimais dígitos, se não for seguido porx
3
@Carlos está correto. Esta resposta está errada. A resposta de Alan está correta.
malan
60
:help i_CTRL-V_digit

No modo de inserção, digite Ctrl+ Vseguido de

  • um número decimal (0-255)
  • o então um número octal (o0-o377, ou seja, 255 é o valor máximo)
  • x então um número hexadecimal (x00-xFF, ou seja, 255 é o valor máximo)
  • u então uma sequência Unicode de 4 hexchars
  • U então uma sequência Unicode de 8 hexchar

Os números decimais e octais são limitados a três dígitos. Números decimais menores que 100 podem incluir zeros à esquerda, que são ignorados. Números octais menores que 100 oct (ou seja, 64) podem incluir zeros à esquerda, mas não são necessários. Números octais maiores ou iguais a 100 oct podem não incluir zeros à esquerda (mas você pode digitar uma à esquerda, ose quiser).

Você pode encerrar um número digitando um caractere que não é um dígito válido para esse radical. Por exemplo,

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

Números hexadecimais regulares (um octeto) são limitados a dois dígitos. Como acima, você pode repetir o caractere de raiz (por exemplo,  Ctrl+ Vuu0041 →  A) para caracteres especificados por códigos hexadecimais.  o e  xnão diferenciam maiúsculas de minúsculas.

Alan
fonte
Para adicionar mais algumas dicas: o número decimal deve estar entre 0 e 255. O número hexadecimal entre x00-xFF.
wisbucky
ascii esaple é ctrl + v x1b(para sequências de cores ascii)
ThorSummoner 09/01
1
Um lembrete de que, se você estiver no Windows e remapeado Ctrl + V para colar, poderá usar Ctrl + Q no modo Inserir em seu lugar. Veja stackoverflow.com/questions/426896/…
Chris R. Donnelly