HOME
TIP & TECH
TIP & TECH
cygwin의 terminal에서 UTF-8을 사용하기 |
onionmixer 2012-01-25 21:38:06 9629 |
||
---|---|---|---|
http://chanik.egloos.com/3785205
원문은 이거입니다. 자료보존차원에서 남겨둡니다. ===================================================================== 새로운 Cygwin 1.7 rxvt 한글 문제 해결 alpha 위 글은 cygwin에서 rxvt를 쓰고 euc-kr 문자셋을 쓰기 위한 꼼수를 다룬 것이었다. 그런데, 알고보니 cygwin에서 rxvt 대신 쓸 수 있는 mintty라는 터미널 프로그램이 있었다 mintty는 UTF-8도 지원한다. 요즘 cygwin을 설치하면 "Cygwin Terminal" 바로가기가 만들어지는데, 바로가기는 아래의 같이 mintty를 실행하는 명령을 담고 있다. C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico - 나는 이 바로가기를 무시하고 오래전부터 쓰던 배치파일(rxvt를 실행하는 배치파일)을 이용해서 cygwin을 써 왔기 때문에 이런 프로그램이 있는 것을 모르고 있었다. 어쨌든, mintty를 통해 UTF-8을 쓰기 위해 아래와 같이 약간의 설정변경이 필요했다. (1-1) LANG=C.UTF-8 .bashrc 등에 있는 LANG 설정을 eucKR에서 UTF-8로 바꿔준다. export LANG=C.eucKR ==> export LANG=C.UTF-8 (1-2) .vimrc 문자셋 설정 (fileencodings, encoding) Re: Unicode/UTF-8 support (MinTTY) - ncursesw - Mutt, Vim http://cygwin.com/ml/cygwin/2010-06/msg00196.html cygwin의 vim은 이미 UTF-8 지원에 문제가 없는 상태인데 다만 .vimrc 에서 termencoding 변수가 엉뚱하게 강제설정되어 있으면 오동작하니 조심해야 한다. 내 컴에는, 오랫동안 euc-kr로 고정해서 쓰다보니 .vimrc에 아래의 두 줄이 강제설정되어 있었는데, 이 부분을 제거하지 않으면 vim에서 UTF-8 파일을 편집할 때 한글이 보이기는 하지만 줄의 끝부분이 깨지는 현상이 있었다. set fileencodings=euc-kr set encoding=cp949 (1-3) 덤으로, 폰트 설정 mintty 기본폰트는 Lucida Console인데 한글이 바탕체(?)로 나와 보기에 편치 않다. 터미널에 마우스 오른쪽 버튼 클릭하면 나오는 Options 메뉴에서 설정을 바꿀 수 있다. 나는 Fixedsys로 설정해서 쓰니 보기 편했다. 설정은 ~/.minttyrc 파일에 저장되므로, GUI 안 쓰고 그냥 아래 한 줄짜리 .minttyrc 파일을 만들어도 된다. Font=Fixedsys [2] 여러가지 터미널을 혼용 Cygwin 사용을 위해 프롬프트를 띄우려면 결국에는 bash가 실행된다. cygwin의 bash는 Windows 기본 shell인 cmd에서 실행될 수도 있고, rxvt에서 실행될 수도 있고, 이번에 새로 알게 된 mintty에서 실행될 수도 있다. 이 중에서 UTF-8을 지원하는 것은 mintty 뿐인 모양이다. mintty를 쓸 때는 utf-8을 쓰도록 설정하고 rxvt나 cmd를 쓸 때는 euc-kr을 쓰도록 설정하면 이런 여러 실행방식을 혼용할 수 있을 것이다. 결국 실행중인 터미널 환경을 구분하여 조건화된 설정을 해야 한다. 대충 정리해보니 각 환경별로 아래와 같이 환경변수 구분이 가능했다. - bash over rxvt : TERM == xterm && COLERTERM == rxvt-xpm - bash over mintty : TERM == xterm - bash over cmd : TERM == cygwin 이 구분법을 이용해 아래와 같이 .bashrc 및 .vimrc를 설정해 보니 그럭저럭 환경별 대응이 가능한 것 같았다. 뭔가 잘못이 있을지도 모르니까 문제 생기면 알아서 고쳐 써야 한다.. (1-1) LANG=C.UTF-8 bash 실행환경이 cmd, rxvt, mintty 가운데 어떤 것인지 구분하여 LANG 설정을 하기 위해 .bashrc 등에 있는 LANG 설정을 아래와 같이 해 두었다. # rxvt : TERM == xterm && COLERTERM == rxvt-xpm # mintty : TERM == xterm # cmd : TERM == cygwin if [[ "${COLORTERM}" == "rxvt-xpm" || "${TERM}" == "cygwin" ]]; then #export LANG=ko_KR #export LANG=ko_KR.eucKR export LANG=C.eucKR fi (1-2) .vimrc 문자셋 설정 (fileencodings, encoding) .vimrc의 문자셋 설정부분을 아래와 같이 해 두면 파일 인코딩이 utf-8 이든 euc-kr 이든 모두 깨지지 않고 처리 가능했고, 터미널 환경도 utf-8이 되든 euc-kr 이 되든 잘 되었다. fileencoding 설정은 vim에서 파일을 읽어들일때 순서대로 시도해볼 문자셋/인코딩 방식을 나열하는 것 같고 encoding 설정은 터미널에서 사용하는 문자셋/인코딩 방식을 적는 것 같다. 엉성해 보이지만 대충 잘 돌아가는 것 같다. " bash over rxvt : TERM == xterm && COLERTERM == rxvt-xpm " bash over mintty : TERM == xterm " bash over cmd : TERM == cygwin " bash over (rxvt OR mintty) if $TERM == "xterm" set background=dark if $COLORTERM != "rxvt-xpm" set fileencodings=ucs-bom,utf-8,euc-kr set encoding=utf-8 endif endif " bash over rxvt if $COLORTERM == "rxvt-xpm" set fileencodings=ucs-bom,utf-8,euc-kr set encoding=cp949 endif " bash over cmd if $TERM == "cygwin" set fileencodings=ucs-bom,utf-8,euc-kr set encoding=cp949 endif -----새벽녘의 흡혈양파----- |
이전 | mac os x에서 dmg파일을 iso파일로 변환하기 |
---|---|
다음 | tadpole의 sparc노트북에 solaris설치할때 몇가지 tip |
댓글 2개
뭔 말인지는 모르지만, 항상 새글이 있음을 감사하게 생각합니다..ㅋㅋㅋㅋ ^^;
그냥 메몬데요뭐 ㅋㄷㅋㄷ