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)時,重音似乎處理正確,但它仍然添加了 before\()所以調用的命令看起來像

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 顯然正在使用它進行編碼。

相關內容