Frecuentemente uso rompecabezas de programación y golf de código . Muchos usuarios de allí han escrito idiomas personalizados exclusivamente para jugar al golf. Incluso estoy trabajando solo ahora mismo. Muchos de estos idiomas tienen sus propias codificaciones personalizadas para que puedan aplastar más comandos en un solo byte. Por ejemplo, en serio , gelatina y 05AB1E .
¿Puedo configurar vim para usar mi propia codificación personalizada? Me gustaría configurar una asignación de bytes a puntos de código unicode. Por ejemplo:
0x01 == "¢"
Luego, cuando escribo, <C-v><C-a>mostraría un ¢carácter, y cuando escribiera, guardaría el byte 0x01.
¿Es esto incluso remotamente posible? Y también, ¿funcionaría bien con el portapapeles del sistema? (por ejemplo, puedo copiar y pegar desde mi navegador a vim y viceversa)

:help conceal.encodingycharconvertvi que internamente intenta usar laiconvfunción primero para convertir conjuntos de caracteres.iconvpuede manejar la conversión entre diferentes conjuntos de caracteres. Aquíiconvpuede encontrar una respuesta sobre cómo agregar un conjunto de caracteres (parece que tiene que enviarle un correo electrónico al mantenedor). Quizás esto te ayude. :)Respuestas:
Como sugirió romainl, puede lograrlo con la
concealfunción de vim.Aquí hay un ejemplo de script que se puede usar:
Como puede ver, tomé en serio algunos de los mapas y su
^Aejemplo. Tenga cuidado si desea copiar / pegar este código,^Adebe teclearlo<C-v><C-A>.Lo que hace este código es definir para cada
value/displaypar una coincidencia de sintaxis.p.ej
Unirá cada
08secuencia y el archivo y los ocultará con el◘personaje.Se le ve
◘, pero el texto real en el archivo es08.Luego puede tomar una lista de reglas y (con una macro elegante, es decir, en serio:)
0i\ ['^[f s', '^[lxf)s'],^[ld$transformar cada línea en una matriz vim utilizable.Además, si desea escribir unicode literal con vim, puede usar este flujo de trabajo:
Dónde
XXXXestá el valor Unicode, por lo que escribir<C-V>u0001se insertará^Acomo se desee.Si desea verificar el contenido del archivo, le recomiendo usar un volcado hexadecimal del archivo, que puede tener con xxd .
p.ej
Puedes ver aquí tu
^Aas01y tu^Bas02. (0arepresenta la nueva línea al final del archivo)fuente