Vim 在终端中调用命令时使用了错误的编码

Vim 在终端中调用命令时使用了错误的编码

我在 Windows 8 下使用 Vim(准确地说是 GVim),我想用通常的方式进行编译:!g++ %,但是存储我的文件的目录名称带有重音符号,而 Vim 似乎无法处理它们。

调用的结果如下:!g++ "%"(Vim 似乎没有在当前文件路径周围添加引号,也没有转义空格):

调用命令使用了错误的编码

为了清楚起见,显示的文件的完整路径是E:\Programación\Problemas algoritmos\(ns) ACM-ICPC Live Archive 2088 - Entropy.cpp

当我使用 Vim(而不是 GVim)时,重音符号似乎处理得当,但它仍然会在and\之前添加一个,因此调用的命令如下所示()

g++ "E:\Programación\Problemas algoritmos\\(ns\) ACM-ICPC Live Archive 2088 - Entropy.cpp"

运行这些命令

:set encoding?
:set termencoding?

在 Vim 中显示

encoding=latin1
termencoding=cp850

但在GVim中显示

encoding=latin1
termencoding=

我该如何解决它?

编辑:

我已经在 _vimrc 中尝试了以下几行:

set encoding=latin1
set termencoding=cp850

看起来真正的问题不是重音符号而是括号。例如,它适用于áéíóú.cpp但不适合(a).cpp

答案1

我认为解决此问题的正确方法是在 .vimrc 中设置 termencoding。但是,如果您确实无法做到这一点,那么可以从另一端解决这个问题。您可以使用以下命令设置 cmd.exe shell 的编码chcp。例如,这可能有效,但我没有测试过:

:!chcp cp1252 & g++ "%"

代码页 1252 是 ISO-8859-1(latin1)的超集,您的 Vim 显然正在使用它进行编码。

相关内容