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の代わりに)を使用すると、アクセントは適切に処理されるようですが、それでも と の前に が追加されるため\、呼び出されたコマンドは次のようになります。()

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 シェルのエンコーディングを設定できますchcp。たとえば、これは機能する可能性がありますが、テストしていません。

:!chcp cp1252 & g++ "%"

コードページ 1252 は、Vim がエンコードに使用していると思われる ISO-8859-1 (latin1) のスーパーセットです。

関連情報