vim으로 파일 인코딩을 어떻게 변경합니까?


235

vim을 사용하여 파일의 줄 끝을 수정하는 데 익숙합니다.

$ file file
file: ASCII text, with CRLF line terminators
$ vim file
:set ff=mac
:wq
$ file file
file: ASCII text, with CR line terminators

유사한 프로세스를 사용하여 파일의 유니 코드 인코딩을 변경할 수 있습니까? 작동하지 않는 다음을 시도하고 있습니다.

$ file file.xml
file.xml: Unicode text, UTF-16, little-endian
$ vim file
:set encoding=utf-8
:wq
$ file file.xml
file.xml: Unicode text, UTF-16, little-endian

I 톱 사람의 말 그가 수 "세트 fileencoding = UTF-8, 다음 업데이트 파일을 작성하고, 작동,"하지만 난 뭔가를 누락하거나 다른 그가 혼란스러워 보인다. 그가 "그런 다음 업데이트"가 무엇을 의미하는지 모르겠습니다.

답변:



163

차이점이 있습니다

인코딩 설정

파일 인코딩 설정

첫 번째 경우 터미널에 표시되는 출력 인코딩을 변경합니다. 두 번째 경우에는 작성된 파일의 출력 인코딩을 변경합니다.


1
감사합니다! 아파치는 utf-8을 출력했고, php도 마찬가지였으며, 브라우저는 vim과 함께 말 set encoding했지만 여전히 페이지에는 iso-8859-1과 같은 엉망 진 문자가 표시되었습니다. 사용 set fileencoding은 꽤 'Latin1' 을 보여주었습니다
Adriano Varoli Piazza

77

vim을 사용하여 완벽하게 가능하지만, 단순히 iconv를 사용하지 않습니까? 인코딩 변환을 수행하기 위해 텍스트 편집기를로드하면 너무 작은 손톱에 너무 큰 망치를 사용하는 것처럼 보입니다.

다만:

iconv -f utf-16 -t utf-8 file.xml > file.utf8.xml

그리고 당신은 끝났습니다.


19
단점은 Windows에서 iconv를 쉽게 사용할 수없는 것입니다.
Adriano Varoli Piazza

2
@AdrianoVaroliPiazza 아니 vim.

1
휴대용 버전으로도 여러 번의 "그냥 설치"다운로드가 "쉽게 이용 가능"
하다고 말하고 싶습니다

2
@ adriano-varoli-piazza 아니요, iconv는 @ coder-tim이 지적한 것처럼 Cygwin 및 MingW가 설치된 Windows에서 사용할 수 있습니다.
t0r0X 2016 년

1
@mario 아니오, Vim은 Windows에서 매우 쉽게 구할 수 있습니다 : vim.org/download.php#pc
t0r0X

52

단계와 마찬가지로 파일 인코딩 설정이 작동합니다. 그러나 편집기에서 파일을 UTF8로 간주하는 데 도움이되도록 "세트 폭탄"을 하나 추가하고 싶습니다.

$ vim file
:set bomb
:set fileencoding=utf-8
:wq

8
귀하의 답변에 감사드립니다. UTF 바이트 순서 표시에 대해 더 많이 알게되었습니다. 그러나 참고로 BOM을 설정하는 것은 UTF-8에 16/32와 같은 고정 바이트 길이 형식이 아니기 때문에 불필요하거나 불가피하게 보입니다 . 설명 및 참조는 여기 를 참조 하십시오 . vim에게는 문제가 아니며 도움이되지도 않습니다. 사람들이 다른 곳에서 호환성 문제를 일으킬 수 있다는 것을 알고 있어야한다고 생각했습니다.
joelhardi 2016 년

2
그것은인가 bomb또는 bom, 그것은 할 수있다 unset? 편집 : 예,를 통해 제거 할 수 있습니다 set nobomb.
icedwater

6
예, VIm은 우리를 bomb(ab로) 설정했습니다 .
ruffin

워드 프로세서 당, :set bomb경우에 켜져 :set fenc=utf-8.. 참조:he bomb
에반 캐롤을

12
우리의 모든 기본 인코딩은 이제 UTF-8에 속합니다
roblogic

6

파일을 읽기 전에 명령 행 에서 인코딩 을 변경하는 것이 유용 할 수 있습니다 .

rem On MicroSoft Windows
vim --cmd "set encoding=utf-8" file.ext
# In *nix shell
vim --cmd 'set encoding=utf-8' file.ext

참조 시작 , --cmd.


3
첫 번째 변형은 * nix 쉘에서도 작동합니다. 'single quotes'모든 메타 문자를 이스케이프하는 데만 필요합니다. 일반적으로 원하는 것은 아닙니다.
jpaugh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.