Maison > Questions et réponses > le corps du texte
Ouvrez un fichier dans un répertoire chinois. Tant que le répertoire actuel de GVIM n'est pas le répertoire chinois ou que le nom du fichier est chinois, saisissez :!%
en mode commande et cette fenêtre apparaîtra et une erreur sera signalée... Il n'y a aucun problème avec le nom de fichier anglais ou le chemin anglais.
黄舟2017-05-16 16:41:56
Cela semble n'avoir rien à voir avec le chinois ou l'anglais, jetons un œil aux deux captures d'écran :
Selon votre description, j'ai exploité un fichier avec un nom de fichier chinois et un nom de fichier anglais dans l'ordre, et les résultats affichés étaient les mêmes.
La clé est ce que signifie réellement la commande :!%
. : !
consiste à exécuter une commande shell dans le shell vim, et %
fait référence au nom de fichier actuel, votre opération équivaut donc à exécuter le nom de fichier en tant que commande. qu'il s'agisse de chinois ou d'anglais, il signalera commande introuvable
, qui correspond au "le système ne peut pas trouver le chemin spécifié" que vous voyez sous Windows. :!%
命令到底是什么意思。:!
是在 vim shell 里执行一个 shell 命令,而 %
指代当前的文件名于是你的操作等于把文件名当作一个 command 来执行了,那么不管是中文还是英文都会报 command not found
,也就是你在 windows 下看到的“系统找不到指定的路径”吧。
不知道你输入 :!%
命令的目的是什么呢?如果是为了打开文件,那么可以 :!open %
:!%
? Si vous souhaitez ouvrir un fichier, vous pouvez utiliser :!open %
. Cela permet d'ouvrir le contenu du fichier dans le tampon actuel sous Mac. Quant à Windows, je n'en suis pas sûr. 🎜某草草2017-05-16 16:41:56
gvim enverra les caractères au système au format utf-8 par défaut. Reportez-vous à h:termencoding
.
Dans votre cas, les caractères chinois en utf-8 sont envoyés au système cmd, puis affichés via l'encodage cp936. L'affichage est donc tronqué.
.
Vous pouvez tester comme ceci pour vérifier : définissez encoding=cp936 pour forcer l'affichage de cp936 ; puis !%, exécutez le fichier, le nom de fichier tronqué affiché par cmd est cohérent avec le contenu que vous forcez à afficher
高洛峰2017-05-16 16:41:56
J'ai récemment découvert un bon moyen. Il était clair auparavant que la fenêtre CMD était "cp936" et que le nom du fichier envoyé par GVIM était "UTF-8".
Alors, utilisez la fonction iconv()
de GVIM pour convertir le "UTF-8" à l'intérieur de GVIM en "cp936" et transmettez-le à CMD. De cette façon, le problème précédent peut être résolu.
Je peux actuellement utiliser cette phrase pour le compléter :
:execute "!".iconv('"'.@%.'"','UTF-8','cp936')
Vous pouvez également avoir d'autres fonctions avec de légères modifications.
L'idée principale vient de : http://www.oschina.net/code/snippet_574132_13357