Eu freqüentemente uso quebra-cabeças de programação e código-golfe . Muitos usuários por aí escreveram idiomas personalizados exclusivamente para jogar golfe. Estou trabalhando sozinho agora. Muitas dessas linguagens têm suas próprias codificações personalizadas, para que possam espremer mais comandos em um único byte. Por exemplo, sério , geléia e 05AB1E .
Posso configurar o vim para usar minha própria codificação personalizada? Eu gostaria de configurar um mapeamento de bytes para pontos de código unicode. Por exemplo:
0x01 == "¢"
Então, quando eu digito <C-v><C-a>
, ele exibe um ¢
caractere e quando eu escrevo, ele salva o byte 0x01
.
Isso é possível remotamente? E também, isso funcionaria bem com a área de transferência do sistema? (por exemplo, posso copiar e colar do meu navegador para vim e vice-versa)
:help conceal
.encoding
echarconvert
vi que ele tenta internamente para utilizar aiconv
função de primeiro converter conjuntos de caracteres.iconv
pode lidar com a conversão entre diferentes conjuntos de caracteres. Uma resposta sobre como adicionar um conjunto de caracteresiconv
pode ser encontrada aqui (parece que você precisa enviar um email ao mantenedor). Talvez isso ajude você. :)Respostas:
Como sugerido pela romainl, você pode conseguir isso com o
conceal
recurso do vim.Aqui está um exemplo de script que pode ser usado:
Como você pode ver, levei alguns dos mapeamentos a sério e seu
^A
exemplo. Cuidado se você deseja copiar / colar este código, é^A
necessário digitar<C-v>
<C-A>
.O que esse código faz é definir para cada
value
/display
par uma correspondência de sintaxe.por exemplo
Combina todas as
08
seqüências e os arquivos e os oculta com o◘
personagem.Você verá
◘
, mas o texto real no arquivo é08
.Você pode levar uma lista de regras e (com uma macro sofisticada, ou seja:):
0i\ ['^[f s', '^[lxf)s'],^[ld$
transformar cada linha em uma matriz de vim utilizável.Além disso, se você quiser digitar literal unicode com o vim, poderá usar este fluxo de trabalho:
Onde
XXXX
está o valor unicode, portanto, a digitação<C-V>u0001
será inserida^A
conforme desejado.Se você deseja verificar o conteúdo do arquivo, eu recomendo usar um dump hexadecimal do arquivo, que você pode ter com o xxd .
por exemplo
Você pode ver aqui seu
^A
como01
e seu^B
como02
. (0a
representa a nova linha no final do arquivo)fonte