답변:
Vim은 기존 파일을 읽을 때 파일 인코딩을 감지하려고합니다. 파일을 작성할 때 Vim은 감지 한 파일 인코딩을 사용합니다 (다른 방식으로 말할 때 제외). 따라서 UTF-8로 탐지 된 파일은 UTF-8로 작성되고 Latin-1로 탐지 된 파일은 Latin-1로 작성됩니다.
기본적으로 탐지 프로세스는 조잡합니다. Vim으로 연 모든 파일은 맨 위에서 유니 코드 바이트 순서 표시를 감지하지 않는 한 Latin-1로 간주됩니다. 바이트 순서 표시가없는 UTF-8 파일은 멀티 바이트 문자가 단일 문자 대신 문자 시퀀스로 버퍼에 표시되므로 편집하기가 어렵습니다.
최악의 경우, Vim은 기본적으로 Latin-1을 사용하여 버퍼의 텍스트를 나타냅니다. 따라서 바이트 순서 표시가 있는 UTF-8 파일 은 Latin-1로 다운 변환하여 손상됩니다.
해결책은 내부적으로 UTF-8을 사용하도록 Vim을 구성하는 것입니다. 사실 이것은 Vim 문서에서 권장되는 것이며 Vim이 기본적으로 Latin-1 편집기로 작동 할 것으로 기대하는 사용자들 사이에서 혼란을 피하는 것입니다.
에서 Vim을 .vimrc
추가 set encoding=utf-8
하고 다시 시작하십시오.
또는
LANG
UTF-8이 선호하는 문자 인코딩임을 나타내도록 환경 변수를 설정하십시오 . 이것은 Vim뿐만 아니라LANG
텍스트를 어떻게 표현해야 하는지를 결정하는 소프트웨어에도 영향을 미칩니다 . 예를 들어,en
미국에서 사용US
되는 UTF-8 (utf-8
) 로 인코딩 된 텍스트가 영어 ( )로 표시되도록 하려면을 설정하십시오LANG=en_US.utf-8
.
이제 Vim은 UTF-8을 사용하여 버퍼의 텍스트를 나타냅니다. 또한 파일에서 UTF-8 인코딩을 감지하기 위해 더 많은 노력을 기울일 것입니다. 바이트 순서 표시를 찾는 것 외에도 라틴 순서로 돌아 가기 전에 바이트 순서 표시가없는 UTF-8도 검사합니다. 따라서 더 이상 UTF-8로 코딩 된 파일이 손상되지 않으며 편집 세션 중에 UTF-8 문자를 올바르게 표시해야합니다.
Vim이 파일 인코딩을 감지하는 방법에 대한 자세한 내용 은 Vim 설명서 의
fileencodings
옵션을 참조하십시오 .
Vim이 내부적으로 사용하는 인코딩 설정에 대한 자세한 내용 은 encoding
옵션을 참조하십시오 .
다시 디스크에 파일을 기록 할 때 사용되는 인코딩을 무시해야하는 경우, 참조
옵션을 .fileencoding
vimdoc 에 따르면 vim은 파일 인코딩을 자동으로 감지하려고 시도하므로 기존 파일 을 편집 하는 것이 좋습니다.
로 원하는 경우 언제든지 인코딩을 강제 할 수 있습니다 :set fileencodings=utf-8
. 여기 에서 설명서를 찾을 수 있습니다 .
.vimrc
. 실제로 인코딩의 기본값은 "latin1"또는 $ LANG의 값이며 시스템에서이 값은로 설정되어en_US.UTF-8
있습니다. 이런 이유로 상자 밖으로:set encoding
제공encoding=utf-8
합니다. 예상대로 LANG이 설정되어 있지 않으면을:set encoding
제공합니다encoding=latin1
. 큰 답변 주셔서 감사합니다!