我在 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 显然正在使用它进行编码。