*usr_45.txt* Vim version 7.4 대상. 새로 고침: 2008년 11월 15일 VIM 사용설명서 - Bram Moolenaar 저 정지용 역 내 언어 고르기 Vim에서는 몇 가지 언어로 메시지를 볼 수 있습니다. 이번 장에서는 사용할 언어를 어떻게 바꾸는지 설명합니다. 또, 다양한 언어로 된 파일을 다루는 방법들도 설명합니다. |45.1| 메시지의 언어 |45.2| 메뉴의 언어 |45.3| 다른 인코딩 사용하기 |45.4| 다른 인코딩의 파일 편집하기 |45.5| 다른 언어 입력하기 다음 장: |usr_90| Vim 설치하기 이전 장: |usr_44| 나만의 문법 강조 만들기 차례: |usr_toc|
*45.1* 메시지의 언어 Vim은 시작할 때, 실행 환경을 검사해서 어떤 언어를 사용 중인지 알아냅니다. 대부분의 경우에는 잘 동작해서 실제 사용 중인 언어의 메시지를 보게 됩니다(지원한다면 말이지요). 현재 언어를 보려면, 다음 명령을 사용하세요:
:language
만약 결과가 "C"라면, 기본 값인 영어가 사용되고 있는 것입니다.
Note:
다른 언어를 사용하는 것은 Vim이 지원하도록 컴파일 되어야 가능합니다. 지원 여부를 확인하려면 ":version" 명령을 사용하십시오. 만약 결과에 "+gettext"와 "+multi_lang"이 있다면, 사용 가능합니다. 하지만 "-gettext"나 "-multi_lang"이 있다면 다른 Vim을 찾아야 합니다. 다른 언어로 메시지를 보고 싶다면 어떻게 해야 할까요? 몇 가지 방법이 있습니다. 어떤 방법을 적용해야하는지는 사용 중인 시스템에 따라 다릅니다. 첫 번째 방법은 Vim을 시작하기 전에 실행 환경을 원하는 언어로 바꾸는 것입니다. 유닉스인 경우의 예:
env LANG=de_DE.ISO_8859-1 vim
이건 시스템에 해당 언어가 사용 가능 해야만 동작합니다. 이 방법의 장점은 모든 GUI 메시지와 라이브러리의 것들도 맞는 언어를 사용할 것이라는 겁니다. 단점은 Vim을 시작하기 전에 설정을 해야 한다는 점입니다. Vim이 이미 실행중인데 언어를 바꾸고 싶은 경우라면, 두 번째 방법을 사용해야 합니다:
:language fr_FR.ISO_8859-1
이 방법으로 사용하는 언어를 몇 가지 이름으로 시도해보세요. 만약 시스템에서 지원하지 않는다면 에러 메시지가 나올 겁니다. 하지만 아직 번역된 메시지가 없는 경우라면 에러 메시지가 나오지 않습니다. 대신 조용히 영어가 사용될 겁니다. 시스템에서 어떤 언어가 지원되는지 확인하려면, 언어들이 나열되어있는 디렉터리를 찾으세요. 제 시스템의 경우 "/usr/share/locale"이네요. 어떤 시스템들은 "/usr/lib/locale"입니다. "setlocale"의 매뉴얼 페이지에 시스템의 어디를 찾아봐야할지 힌트가 나올 겁니다. 이름을 정확히 쳐야하니 주의하세요. 대소문자가 달라도 안 되고, 혼동하기 쉬운 '-'와 '_' 문자도 주의해야 합니다. 메시지와 편집하는 내용, 시간 형식 등의 언어를 따로따로 지정할 수도 있습니다. |
:language
|를 참고하세요. 직접 메시지 번역하기 -------------------- 당신이 사용하는 언어로 번역된 메시지가 없다면, 직접 만들 수도 있습니다. 번역을 하려면 먼저 Vim 소스코드와 GNU gettext 패키지가 필요합니다. 소스 압축을 풀면, src/po/README.txt에 설명이 있습니다. 번역 하는 것이 그렇게 어렵지는 않습니다. 프로그래머일 필요도 없습니다. 그저 영어를 할 줄 알면 됩니다. 당연히 번역하려는 언어도 알아야겠지요. 번역한 결과가 마음에 든다면, 다른 사람들에게도 알려주세요. vim-online (http://vim.sf.net)에 업로드하거나, Vim 관리자<maintainer@vim.org>
에게 이메일로 보내주세요. 둘 다 하셔도 되고요.
*45.2* 메뉴의 언어 메뉴의 기본 언어는 영어입니다. 당신의 언어를 사용하려면, 번역이 되어야겠지요. 일반적으로 이는 환경에 언어가 잘 설정되어있다면 자동으로 이루어집니다. 메시지와 마찬가지입니다. 무언가를 더 할 필요는 없습니다. 물론 해당 언어로의 번역이 존재하는 경우에만 그렇습니다. 당신이 독일에 있고, 언어를 독일어로 설정했지만, "Datei"가 아니라 "File"로 보고 싶다고 합시다. 다음 명령으로 영어 메뉴로 돌아갈 수 있습니다:
:set langmenu=none
다른 언어를 지정하는 것도 가능합니다:
:set langmenu=nl_NL.ISO_8859-1
위와 같이 "-"와 "_"를 잘못 쓰면 안 됩니다. 하지만 여기서는 대소문자는 틀려도 괜찮습니다. 'langmenu' 옵션은 메뉴가 로드되기 전에 되어야 합니다. 이미 메뉴가 정의되고 나면, 'langmenu'를 바꿔봐야 소용이 없습니다. 따라서 'langmenu'를 설정하는 명령은 vimrc 파일에 넣읍시다. Vim 실행 중에 꼭 메뉴 언어를 바꾸고 싶다면, 다음과 같이 할 수도 있습니다:
:source $VIMRUNTIME/delmenu.vim
:set langmenu=de_DE.ISO_8859-1
:source $VIMRUNTIME/menu.vim
이 방법의 단점은, 직접 정의한 모든 메뉴가 사라진다는 겁니다. 이것들도 다시 정의해줘야 합니다. 직접 메뉴 번역하기 ------------------ 메뉴 번역이 존재하는지 보려면, 다음 디렉터리를 확인해보세요:
$VIMRUNTIME/lang
menu_{language}
.vim 형태의 파일입니다. 사용하고 싶은 언어의 파일이 없다면, 직접 번역할 수 있습니다. 가장 간단한 방법은 기존 언어파일을 하나 복사한 후, 수정하는 것입니다. 먼저 사용하는 언어의 이름을 ":language" 명령으로 알아내세요. 이름을 모두 소문자로 바꾼 것을 사용하면 됩니다. 그리고는 'runtimepath'의 앞부분에 나오는 자신의 런타임 디렉터리에 복사하세요. 예를 들어, 유닉스 환경이라면 다음과 같이 하면 됩니다:
:!cp $VIMRUNTIME/lang/menu_ko_kr.euckr.vim ~/.vim/lang/menu_nl_be.iso_8859-1.vim
"$VIMRUNTIME/lang/README.txt"에서 번역에 대한 힌트도 확인해보세요.
*45.3* 다른 인코딩 사용하기 Vim은 당신이 편집하려는 파일이 당신이 사용하는 언어로 인코딩되어있을 거라고 추측합니다. 대부분의 유럽 언어들의 경우는 "latin1"입니다. 이 경우 바이트 하나가 문자 하나입니다. 따라서 256가지 문자만 사용할 수 있습니다. 아시아 언어들은 그것만으로 모자랍니다. 아시아 언어들은 대부분 만 개 이상의 문자를 표현할 수 있는 2바이트 인코딩을 사용합니다. 하지만 여러 언어가 섞여있는 문서를 편집한다면 그것도 부족하겠지요. 그래서 유니코드(Unicode)가 생겼습니다. 유니코드는 흔히 사용되는 언어들의 모든 문자를 포함시키도록 디자인 되었습니다. "다른 모든 것을 대체할 슈퍼 인코딩"인 것입니다. 하지만 아직은 그렇게 많이 사용되지 않고 있습니다. 다행히도 Vim에서는 이 세 가지 인코딩이 모두 지원됩니다. 또한 몇 가지 제약이 있기는 하지만, 실행 환경이 편집하는 파일과 다른 언어를 사용 중일 때도 쓸 수 있습니다. 그렇기는 하지만 당신이 사용하는 언어의 인코딩으로 된 문서를 편집할 때, 기본 값으로 잘 동작해서 특별히 아무 것도 하지 않아도 되어야 합니다. 이어지는 내용은 다른 언어로 된 파일을 편집할 때에만 유용할 겁니다.Note:
다른 인코딩을 사용하는 것은 Vim이 해당 기능을 지원하도록 컴파일 되었을 때만 가능합니다. 지원 여부를 확인하려면 ":version" 명령의 결과에 "+multi_byte"가 있는지 보면 됩니다. 있다면 괜찮지만, "-multi_byte"가 있다면 다른 Vim을 찾아봐야할 겁니다. GUI에서 유니코드 사용하기 ------------------------- 유니코드의 좋은 점은 내용의 손실 없이 다른 인코딩을 유니코드로 바꿨다가 다시 되돌릴 수 있다는 것입니다. Vim 내부에서 유니코드를 쓰게 만들면, 어떤 인코딩의 파일이든 편집할 수 있어야 합니다. 하지만 불행히도 유니코드를 지원하는 시스템의 수는 아직 제한적입니다. 따라서 당신의 언어가 유니코드를 사용할 가능성도 그리 높지 않습니다. Vim에게 유니코드를 쓸 것이고, 시스템의 나머지 부분에 어떻게 접근하라고 알려주어야 합니다. 유니코드 문자를 보여줄 수 있는 Vim의 GUI 버전부터 시작합시다. 아래 명령은 동작해야 합니다:
:set encoding=utf-8
:set guifont=-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
'encoding' 옵션은 Vim에게 당신이 사용할 문자의 인코딩을 알려줍니다. 이 인코딩은 버퍼의 내용(당신이 편집중인 파일), 레지스터, Vim 스크립트 파일 등에 적용됩니다. 'encoding'을 Vim 내부의 옵션으로 생각하면 됩니다. 위 예에서는 해당 글꼴이 시스템에 있다고 가정했습니다. X 윈도우 시스템에서 쓰는 이름이지요. 이 글꼴은 xterm에 유니코드를 지원하기 위한 패키지에 들어있습니다. 이 글꼴이 없다면 다음 주소에서 얻을 수 있습니다:
http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz
마이크로소프트 윈도라면 몇몇 글꼴은 제한된 숫자의 유니코드 문자를 가지고 있습니다. "Courier New" 글꼴을 사용해보세요. 편집/글꼴 고르기... 메뉴로 사용 가능한 글꼴을 선택해서 시험해볼 수 있습니다. 하지만 고정폭 글꼴만 사용할 수 있습니다. 예:
:set guifont=courier_new:h12
만약 잘 동작하지 않는다면, 글꼴팩을 받아보세요. 마이크로소프트가 옮기지 않았다면, 아래 주소에서 찾을 수 있습니다:
http://www.microsoft.com/typography/fonts/default.aspx
이제 Vim에게 내부적으로 유니코드를 사용하고, 유니코드 글꼴로 글자를 표시하라고 했습니다. 입력하는 글자들은 아직 당신의 원래 글꼴로 들어옵니다. 이걸 유니코드로 바꿔주어야겠지요. Vim에게 어떤 언어로부터 바꿔야할지 'termencoding' 옵션으로 알려주세요. 다음과 같이 하면 됩니다:
:let &termencoding = &encoding
:set encoding=utf-8
'encoding'의 예전 값을 'termencoding'에 할당하고, 그 후에 'encoding'을 utf-8로 바꾸고 있습니다. 당신 환경에서 이게 잘 동작하는지 직접 해보세요. 이 방법은 아시아 언어의 입력 방법을 쓰면서 유니코드로 편집하고 싶을 때 잘 동작해야 합니다. 유니코드 터미널에서 유니코드 사용하기 ------------------------------------- 유니코드를 직접 지원하는 터미널들이 있습니다. XFree86에 포함된 표준 xterm이 이들 중 하나입니다. xterm을 예제로 살펴보겠습니다. 먼저 xterm이 유니코드 지원과 함께 컴파일 된 버전이어야 합니다. 어떻게 이를 확인하고, 필요하다면 어떻게 컴파일 하는지는 |
UTF8-xterm
|을 참고하세요. xterm을 "-u8" 인자와 함께 구동시키세요. 또 아마 글꼴을 지정해야할 겁니다. 예:
xterm -u8 -fn -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
이제 이 터미널 안에서 Vim을 켜면 됩니다. 이전과 마찬가지로 'encoding'을 "utf-8"로 설정하세요. 끝입니다. 일반 터미널에서 유니코드 사용하기 --------------------------------- 유니코드 파일을 편집하고 싶은데, 유니코드를 지원하는 터미널이 없다고 해봅시다. Vim이라면 가능합니다. 다만 터미널에서 지원하지 않는 문자는 화면에 표시되지 않습니다. 문서 전체의 형태는 잘 유지됩니다.
:let &termencoding = &encoding
:set encoding=utf-8
GUI에서 했던 것과 동일합니다. 하지만 그 동작은 다릅니다. Vim은 화면에 표시된 내용을 터미널에 보내기 전에 바꿉니다. 그래서 이상한 문자로 화면이 깨지는 것을 막을 수 있는 것입니다. 이 방법이 잘 동작하려면 'termencoding'과 'encoding' 간의 변환이 가능해야만 합니다. Vim은 자체적으로 latin1을 유니코드로 바꿀 수 있습니다. 따라서 항상 잘 동작하겠지요. 다른 변환에는 |
+iconv
| 기능이 필요합니다. 유니코드 문자가 있는 파일을 열어보세요. 터미널이 표시하지 못하는 문자가 있어야 될 곳에는 Vim이 물음표(혹은 밑줄 혹은 또 다른 문자)를 표시한 것을 볼 수 있을 겁니다. 커서를 물음표로 옮긴 후, 다음 명령을 사용하세요:
ga
문자의 코드가 한 줄로 나올 겁니다. 이걸로 어떤 문자인지에 대해 힌트를 얻을 수 있습니다. 유니코드 문자표에서 찾아볼 수도 있겠지요. 손에 땀 좀 나게 반복하면 파일 전체를 이 방법으로 읽을 수도 있을 겁니다.
Note:
'encoding'은 Vim 내부 전체의 문자에 사용되므로, 이를 바꾸면 비ASCII 문자들을 인식할 수 없게 만들 수도 있습니다. 레지스터나 'viminfo' 파일(예를 들어 저장된 찾기 패턴 등)에서 문제를 발견할 수 있을 겁니다. 따라서 'encoding'은 vimrc 파일에 설정한 후 건드리지 말기를 추천합니다.
*45.4* 다른 인코딩의 파일 편집하기 Vim이 유니코드를 사용하도록 설정했고, 이제 16비트 유니코드로 된 파일을 편집하고 싶다고 합시다. 간단해보이죠? 하지만 Vim은 사실 내부적으로 utf-8 인코딩을 사용합니다. 따라서 16비트 인코딩 파일을 변환해야 합니다. 문자집합(유니코드)과 인코딩(utf-8, 16-bit)은 다른 거니까요. Vim이 당신이 어떤 파일을 편집하고 있는지 알아내려고 할 겁니다. 'fileencodings' 옵션의 인코딩들을 사용합니다. 유니코드를 사용할 때의 기본 값은 "ucs-bom,utf-8,latin1"입니다. Vim이 파일이 다음 인코딩들 중 하나인지 검사한다는 뜻입니다: ucs-bom 파일은 바이트 순서 표식(Byte Order Mark, BOM)로 시작해야 합니다. 이 표식으로 유니코드 인코딩이 16비트인지, 32비트인지 utf-8인지 알 수 있습니다. utf-8 utf-8 유니코드 인코딩. utf-8에 있을 수 없는 부분이 있는 경우 맞지 않는 것을 알 수 있습니다. latin1 기존의 8비트 인코딩. 언제나 맞습니다. BOM이 있는 16비트 유니코드 파일을 편집하면, Vim은 이를 감지하고 읽어 들이면서 utf-8로 변환할 겁니다. 'fileencoding'(끝에 s가 없습니다) 옵션은 감지한 인코딩이 됩니다. 이 경우에는 "utf-16le"입니다. 유니코드이고, 16비트, 리틀 엔디안(little-endian)이라는 뜻이지요. 이런 파일은 마이크로소프트 윈도에서 자주 볼 수 있습니다(예를 들어 레지스트리 파일). 파일을 쓸 때, Vim은 'fileencoding'과 'encoding'을 비교합니다. 만약 둘이 다르면 내용을 변환해서 저장합니다. 'fileencoding' 값이 비어있다면 변환이 필요 없다는 것입니다. 따라서 내용이 'encoding'으로 인코딩 되었다고 간주합니다. 만약 기본 'fileencodings' 값이 적절치 않다면, Vim이 검사하길 원하는 인코딩들을 지정해주세요. 하나의 값이 맞지 않다고 판단되어야 다음 걸로 넘어갑니다. "latin1"은 무조건 맞다고 판단하기 때문에 처음에 넣으면 안 됩니다. 예를 들어, 파일에 BOM이 없고 utf-8이 아닌 경우 일본어로 판단하려면 다음과 같습니다:
:set fileencodings=ucs-bom,utf-8,sjis
|
encoding-values
|에서 추천하는 값들을 확인해보십시오. 다른 값들도 잘 동작할 수 있습니다. 동작 여부는 변환이 가능하냐에 달렸습니다. 인코딩 강제하기 --------------- 자동 인식이 잘 동작하지 않으면, Vim에게 어떤 인코딩의 파일인지 알려줘야 합니다. 예:
:edit ++enc=koi8-r russian.txt
"++enc" 부분은 이 파일의 인코딩 이름을 지정할 때에만 사용됩니다. Vim은 지정된 인코딩, 위 예에서는 러시아어로부터 'encoding'의 인코딩으로 파일을 변환할 것입니다. 'fileencoding' 또한 지정한 값이 됩니다. 이로써 파일을 저장할 땐 반대 변환이 이루어지게 됩니다. 파일을 저장할 때도 동일한 인자를 줄 수 있습니다. 이 방법을 사용하면 Vim으로 파일을 변환하는 용도로 사용할 수 있습니다. 예:
:write ++enc=utf-8 russian.txt
Note:
변환 과정에서 문자가 유실될 수 있습니다. 한 인코딩에서 유니코드로 변환했다가 다시 해당 인코딩으로 변환하는 것은 깨진 문자가 있지 않는 이상 대부분 문제가 없습니다. 파일에 여러 언어가 있는 경우 유니코드에서 다른 인코딩으로의 변환은 정보가 유실되는 경우가 많습니다.
*45.5* 다른 언어 입력하기 컴퓨터 키보드에는 겨우 백여 개 남짓의 키가 있을 뿐입니다. 몇몇 언어들은 수천 개의 문자를 가지고 있고, 유니코드에는 수만 개의 문자가 있습니다. 이걸 다 어떻게 입력할 수 있을까요? 무엇보다 특수 문자를 매우 많이 사용하지 않는다면 다이그래프(digraph)를 사용하면 됩니다. |24.9|에서 이미 설명했었지요. 만약 키보드에 있는 키보다 훨씬 많은 문자가 있는 언어를 사용한다면, 입력기(Input Method, IM)를 사용하고 싶을 겁니다. 입력한 키에서 결과 문자 변환이 어떻게 이루어지는지 배워야겠지요. IM이 필요하다면 아마 시스템에 이미 있을 가능성이 높습니다. 다른 프로그램과 마찬가지로 Vim에서도 잘 동작해야겠지요. 더 자세한 내용은 X 윈도우 시스템의 경우 |mbyte-XIM
|를, 마이크로소프트 윈도의 경우 |mbyte-IME
|를 참고하세요. 키맵(keymap) ------------ 몇몇 언어에서는 문자집합이 latin과는 다르지만 비슷한 수의 문자가 있을 수 있습니다. 이때는 키에 문자를 매핑할 수 있습니다. Vim에서는 키맵을 사용합니다. 히브리어를 입력하고 싶다고 합시다. 다음과 같이 키맵을 불러올 수 있습니다:
:set keymap=hebrew
Vim이 키맵 파일을 찾아줄 겁니다. 'encoding' 값에 영향을 받습니다. 만약 맞는 파일이 없다면, 에러 메시지가 나옵니다. 이제 입력 모드에서 히브리어를 입력할 수 있습니다. 보통 모드와 ":" 명령을 입력할 때는 Vim이 자동으로 영어 입력으로 바뀝니다. 다음 명령으로 히브리어와 영어를 오갈 수 있습니다:
CTRL-^
이 명령은 입력 모드와 명령줄 모드에서만 동작합니다. 보통 모드에서는 전혀 다른 기능입니다(대체 파일로 이동). 'showmode' 옵션이 켜져 있다면, 키맵의 사용 여부를 모드 메시지에서 볼 수 있습니다. GUI Vim에서는 커서 색이 바뀐 것으로 키맵 사용 여부를 알 수 있습니다. 'iminsert'와 'imsearch' 옵션으로 키맵 사용을 제어할 수도 있습니다. 매핑의 목록을 보려면 다음 명령을 사용하세요:
:lmap
어떤 키맵 파일이 있는지 보려면, GUI에서는 편집/키맵 메뉴를 사용하면 됩니다. 아니면 다음 명령을 사용하면 됩니다:
:echo globpath(&rtp, "keymap/*.vim")
키맵 직접 만들기 ---------------- 자신만의 키맵 파일을 만들 수도 있습니다. 그렇게 어렵지 않습니다. 사용하고 싶은 언어와 유사한 키맵 파일로 시작하세요. 자신만의 런타임 디렉터리안의 "keymap" 디렉터리에 복사하세요. 예를 들어 유닉스라면 "~/.vim/keymap" 디렉터리를 사용하면 됩니다. 키맵 파일의 이름은 반드시 다음과 같아야 합니다:
keymap/
또는{name}
.vimkeymap/
{name}
_{encoding}
.vim{name}
은 키맵의 이름입니다. 명확하고, 기존의 이름과 겹치지 않는 이름을 고르세요(기존의 키맵을 대체하려는 것이 아니라면 말이죠).{name}
에는 밑줄이 들어갈 수 없습니다. 필요하다면 밑줄 뒤에 사용하는 인코딩을 넣으세요. 예:keymap/hebrew.vim
keymap/hebrew_utf-8.vim
파일의 내용은 보면 알 수 있을 겁니다. Vim에 포함되어 배포되는 키맵을 몇 개 살펴보세요. 자세한 내용은 |mbyte-keymap
|을 참고하세요. 최후의 수단 ----------- 만약 다른 방법이 모두 동작하지 않는다면,CTRL-V
로 어떤 문자든 입력할 수 있습니다:인코딩 입력 범위
8비트CTRL-V
123 10진수 0-255 8비트CTRL-V
x a1 16진수 00-ff 16비트CTRL-V
u 013b 16진수 0000-ffff 31비트CTRL-V
U 001303a4 16진수 00000000-7fffffff 공백은 입력하지 마세요. 자세한 내용은 |i_CTRL-V_digit
|를 참고하세요.
다음 장: |usr_90| Vim 설치하기 저작권: |manual-copyright| 참고 vim:tw=78:ts=8:ft=help:norl:
Generated by vim2html on 2013. 12. 14. (토) 20:47:01 KST