J'utilise fréquemment des puzzles de programmation et Code-golf . Beaucoup d'utilisateurs là-bas ont écrit des langues personnalisées uniquement pour le golf. Je travaille même par moi-même en ce moment. Beaucoup de ces langues ont leurs propres encodages personnalisés afin de pouvoir écraser plus de commandes dans un seul octet. Par exemple, sérieusement , gelée et 05AB1E .
Puis-je configurer vim pour utiliser mon propre encodage personnalisé? Je voudrais configurer un mappage d'octets aux points de code unicode. Par exemple:
0x01 == "¢"
Ensuite, lorsque je tape <C-v><C-a>
, il affiche un ¢
caractère et lorsque j'écris, il enregistre l'octet 0x01
.
Est-ce même possible à distance? Et aussi, cela fonctionnerait-il bien avec le presse-papiers du système? (par exemple, je peux copier et coller depuis mon navigateur vers vim et vice-versa)
:help conceal
.encoding
etcharconvert
j'ai vu qu'il essaye d'abord en interne d'utiliser laiconv
fonction pour convertir les jeux de caractères.iconv
peut gérer la conversion entre différents jeux de caractères. Une réponse sur la façon d'ajouter un jeu de caractères àiconv
peut être trouvée ici (il semble que vous devez envoyer un mail au responsable). Peut-être que cela vous aide. :)Réponses:
Comme l'a suggéré romainl, vous pouvez le faire avec la
conceal
fonctionnalité de vim.Voici un exemple de script qui peut être utilisé:
Comme vous pouvez le voir, j'ai pris au sérieux une partie de la cartographie et de votre
^A
exemple. Attention si vous voulez copier / coller ce code, il^A
faut le taper<C-v>
<C-A>
.Qu'est - ce que ce code est fait, il définit pour chaque
value
/display
paire une correspondance de syntaxe.par exemple
Correspondra à chaque
08
séquence et au fichier et les masquera avec le◘
personnage.Vous verrez
◘
, mais le texte réel dans le fichier est08
.Vous pouvez ensuite prendre une liste de règles et (avec une macro fantaisie, c'est-à-dire pour sérieusement:)
0i\ ['^[f s', '^[lxf)s'],^[ld$
transformer chaque ligne en un tableau vim utilisable.De plus, si vous souhaitez taper unicode littéral avec vim, vous pouvez utiliser ce flux de travail:
Où
XXXX
est la valeur unicode, donc la saisie<C-V>u0001
insérera^A
comme vous le souhaitez.Si vous souhaitez vérifier le contenu du fichier, je vous recommande d'utiliser un vidage hexadécimal du fichier, que vous pouvez avoir avec xxd .
par exemple
Vous pouvez voir ici votre
^A
as01
et votre^B
as02
. (0a
représente la nouvelle ligne à la fin du fichier)la source