vim으로 파일을 수정할 때, 인코딩을 보존해서 저장하는 방법을 알고 싶습니다.

vudghkzm의 이미지

제가 사용하고 있는 유닉스 계정의 로케일은 EUC-KR입니다.
그리고 A 라는 파일 안에는 일본어, 특수문자, 숫자, 알파벳들이 적혀있고, Shift-JIS로 인코딩되어 있습니다.
(따라서, A 파일을 텍스트 파일 편집기에서 Shift-JIS로 디코딩해서 보면, 일본어가 올바로 표시되어 나옵니다.)

원격에서 제 계정으로 ssh를 통해서 접속한 후에 vim으로 A파일을 열어서 수정한 다음(수정한다는 의미는.. 제가 일본어, 특수문자, 숫자, 알파벳들을 임의대로 추가하거나지우는 행위를 말합니다.), 저장할 때에 현재의 Shift-JIS 인코딩을 보존해서 저장하고 싶습니다. 즉, 편집한 후에도 A 파일을 텍스트 파일 편집기에서 Shift-JIS로 디코딩해서 보면, 일본어가 깨지지 않고 올바로 보이게 하고 싶다는 의미입니다.

어떻게 하면 되나요?

참고로, 원격에서 접속하는 환경은 Windows XP 한글판을 사용중이고 ssh 접속툴은 putty 혹은 secureCrt를 사용하고 있습니다.

ironboy의 이미지

1. iconv 로... shift-jis 파일을 euc-kr로 변경하고,
파일을 수정하여, euc-kr로 저장하고,
다시, iconv로 shift-jis로 변경하는 방법.

2. shell에서,
$ export LANG=shift-jis
$ vi file.A

1번 방법의 경우, 변환되지 못하는 문자가 있을경우.. 사용이 불가능할껍니다.
2번의 경우, putty에서.. 입력이 가능할지 모르겠습니다.

1번, 2번을 섞어서...
자세히 말씀드리자면,

터미널의 인코딩 타입은 utf-8로 사용하시고,
iconv를 통해, shift-jis를 utf-8로 변환해서 편집한 후에,
utf-8로 저장된 파일을 shift-jis로 변경하시는게...

귀찮지만, 가장 안정적일 듯 싶네요.

madman93의 이미지

저도 한번 해 보겠습니다.
제가 인코딩 쪽의 설정이 좀 되어 있는데 잘 될것 같기도 합니다.

-----------------면----------------------------
리눅스가 싫다 우분투가 좋다
---------------------------------------------

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

madman93의 이미지

vim에서 잘 보인다는 것이니깐 encoding은 된다는 것이고
수정을 한다는 것은 fileencoding이 shift-jis 라는 것 아닌가요?
현재 수정을 한 것을 저장할때 이미 fileencoding이 shift-jis로 되어 있으니
별 문제가 없을것 같습니다만..

:set fenc=shift-jis ???
or
:set fenc=shift_jis ???

뭔지는 몰라도 이렇게 한 다음 저장을 하면 잘 되지 않을까요?

추측일 뿐입니다.

---------------------------------------------
리눅스가 싫다 우분투가 좋다
---------------------------------------------

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

vudghkzm의 이미지

터미널(securecrt 혹은 putty)의 인코딩은 utf-8 로 하고 해보았습니다.

그리고, vim 에서 set encoding=sjis termencoding=utf-8 fileencoding=sjis 로 하니까 파일내의 일본어도 깨지지 않고 잘 보이며, 저장할 때에도 sjis로 잘 저장이 됩니다.

문제는, 터미널을 통해서 일본어를 붙여넣기할 때 문제가 발생하고 있습니다.
윈도우즈 환경에서 일본어를 Ctrl + C 를 이용해서 복사를 한후에, 터미널(secureCrt 혹은 putty)을 통해서 vim으로 텍스트 파일에 붙여넣기를 하면, 항상 깨져서 보입니다. 저장도 올바로 되지 않구요..

이건 왜 그런지 궁금합니다.

madman93의 이미지

securecrt 나 putty 에서 자체적으로 shift-jis를 지원 하지 않으면 될것 같지 않군요
제가 경험한 바로는 워드에 있는 파일을 복사해서 메모장에 써도 마찬가지 현상이 생기는 걸로 봐서는
그럴것 같습니다.

secure crt는 모르겠고 putty 같은 경우는 같은 문제로 고민한 님들이 계실것 같구요
아니면 직접 소스를 수정해보는것도 한 방법 같습니다.
일본쪽 putty도 있을것 같은데요? 한번 찾아보시고
답을 찾으시면 정보좀 공유부탁드립니다. ^.^

---------------------------------------------만
리눅스가 싫다 우분투가 좋다
---------------------------------------------

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

madman93의 이미지

http://kldp.org/node/71117
에 보시면 한글 관련되서 폰트 문제와 문자셋 구성하는게 있는것 같군요
그럼 성공을 기원합니다.

---------------------------------------------
리눅스가 싫다 우분투가 좋다
---------------------------------------------

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.