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
.encoding
ycharconvert
vi que internamente intenta usar laiconv
función primero para convertir conjuntos de caracteres.iconv
puede manejar la conversión entre diferentes conjuntos de caracteres. Aquíiconv
puede 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
conceal
funció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
^A
ejemplo. Tenga cuidado si desea copiar / pegar este código,^A
debe teclearlo<C-v>
<C-A>
.Lo que hace este código es definir para cada
value
/display
par una coincidencia de sintaxis.p.ej
Unirá cada
08
secuencia 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
XXXX
está el valor Unicode, por lo que escribir<C-V>u0001
se insertará^A
como 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
^A
as01
y tu^B
as02
. (0a
representa la nueva línea al final del archivo)fuente