Remarque: Le contenu suivant a été confirmé uniquement avec la version Kaori Ya Vim 7.3.865 (version 2013/03/17).
Dans l'interface Python 3 de Vim, si vous voulez que la chaîne apparaisse sur la première ligne du tampon, la chaîne "abcde"
py3 text = "abcde"
py3 import vim
py3 vim.eval('setline(1, "{}")'.format(text))
Cependant, si vous souhaitez afficher une chaîne de caractères japonais, par exemple "aiueo",
py3 text = "\u3042\u3044\u3046\u3048\u304A" # == "AIUEO"
py3 import vim
py3 vim_encoding = vim.eval("&encoding")
py3 vim.eval('setline(1, "{}")'.format(''.join([r"\x{:02x}".format(x) for x in text.encode(vim_encoding)])))
J'ai dû. C'est un problème.
La raison pour laquelle il faut tant de temps pour afficher le japonais est due à la spécification de vim.eval () de l'interface Python 3.
L'interface Python 3 vim.eval () n'accepte que les chaînes Python comme arguments, mais c'est une spécification mystère qui code cette chaîne en UTF-8, puis la décode en encodage Vim. Il est.
Par conséquent, si vous souhaitez transmettre une chaîne de caractères japonais, codez la chaîne de caractères Python (exemple: "A") avec le codage Vim (exemple: b '\ x82 \ xa0'), puis la chaîne de caractères d'échappement hexadécimale. (Exemple: '\\ x82 \\ xa0'), puis convertissez-le en une chaîne de guillemets doubles et passez-le à vim.eval () (Exemple: 'setline (1, "\\ x82 \") J'ai dû prendre la peine de \ xa0 ") ').
Il existe peut-être un moyen plus simple, alors si quelqu'un le sait, faites-le moi savoir. m (__) m
Recommended Posts