Vim은 터미널에서 명령을 호출할 때 잘못된 인코딩을 사용합니다.

Vim은 터미널에서 명령을 호출할 때 잘못된 인코딩을 사용합니다.

Windows 8에서 Vim(정확하게는 GVim)을 사용하고 있는데 평소대로 컴파일하고 싶은데 :!g++ %파일이 저장된 디렉터리 이름에 악센트가 붙어 있는데 Vim에 문제가 있는 것 같습니다.

호출 결과는 다음과 같습니다 :!g++ "%"(Vim은 현재 파일 경로 주위에 따옴표를 추가하지도 않고 공백을 이스케이프하지도 않는 것 같습니다).

명령 호출이 잘못된 인코딩을 사용함

명확성을 위해 표시된 파일의 전체 경로는 다음과 같습니다.E:\Programación\Problemas algoritmos\(ns) ACM-ICPC Live Archive 2088 - Entropy.cpp

GVim 대신 Vim을 사용하면 악센트가 제대로 처리되는 것처럼 보이지만 여전히 \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에 용어 코딩을 설정하는 것입니다. 그러나 실제로 해당 작업을 수행할 수 없는 경우 다른 쪽에서 이 문제를 해결하는 것이 가능할 수도 있습니다. 명령 을 사용하여 cmd.exe 셸의 인코딩을 설정할 수 있습니다 chcp. 예를 들어 이것은 작동할 수 있지만 테스트하지는 않았습니다.

:!chcp cp1252 & g++ "%"

코드페이지 1252는 Vim이 인코딩에 사용하고 있는 것으로 보이는 ISO-8859-1(latin1)의 상위 집합입니다.

관련 정보