Cygwin에 포함된 소프트웨어들은 기본적으로 영어권을 대상으로 컴파일되거나 설정되있다. 이 글은 최소한의 노력으로 한글을 사용할 수 있게하는 것이 목적이다. 완전한 한글화는 C 라이브러리 등의 제약으로 상당한 노력이 필요하다.

1. 쉘(bash)에서 한글 쓰기

~/.inputrc 파일을 만들고 다음 내용을 입력한다.

set meta-flag On
set convert-meta Off
set output-meta On

2. ls에서 한글 파일명 제대로 보기

~/.bashrc에 다음 내용을 입력한다.

alias ls='ls -F --color=auto --show-control-char'

옵션을 간단히 설명하면, -F는 파일형식에 따라 파일명 뒤에 (디렉토리) /, (실행파일) *, (심볼릭링크) @를 붙이고, --color=auto는 파일형식에 따라 다른 색으로 표시하고, --show-control-char는 한글을 보이게 한다. ~/.bash_profile 대신 ~/.bashrc에 추가하는 이유는 부모쉘의 alias가 자식쉘에 전달되지 않기때문에 alias 정의가 쉘이 시작할때마다 실행되는 ~/.bashrc에 있어야 한다.

정정: ~/.bashrc에만 넣어두면 처음 cygwin을 실행할 때 (즉, login shell) 실행이 안되므로 ~/.bash_profile (혹은 ~/.profile)에도 alias 정의가 있어야 합니다. 제가 ~/.bash_profilesource ~/.bashrc를 적어두어서 미처 발견하지 못했습니다. (유제환님께 감사 :)

3. vi(vim)에서 화면 안깨지고 한글 쓰기

기본으로 설치된 vi에서 한글을 입력할때마다 화면이 깨지면, vi를 다시 컴파일해야 한다. vim 소스는 http://www.vim.org/에서 받을 수 있다.

./configure--enable-multibyte 옵션을 추가해야 한다. (최근 Cygwin의 vim 6.0 버전에서는 다시 컴파일할 필요가 없다. vi --version에서 +multi_byte를 확인할 수 있다.) 설치하면 vim 이름으로만 설치되니, vi로도 링크를 걸어준다. 또 필요하다면 /usr/local/share/vim/vim60/vimrc_example.vim/usr/local/share/vim/vimrc~/.vimrc로 복사한후 알맞게 수정한다.

여기서 한 글자가 2바이트인 한글을 올바로 처리하려면, ~/.vimrc에 다음 내용을 추가한다.

set fileencodings=euc-kr
set encoding=cp949

화면 폭보다 긴 줄이 화면에서 제일 아래 줄인 경우 줄 대신 '@' 표시가 나오는데, 이때 한글을 입력하면 화면이 한줄씩 밀리게 된다. 터미널과 관련된 문제로 보이지만 아직 정확한 이유를 찾지못했다. 만약 알고있다면 알려주길 바란다. 대신 편법으로 아래 내용을 ~/.vimrc에 추가하면 한 줄을 넘어서는 부분은 (뒤에 더 있음) >, (앞에 더 있음) <으로 표시된다.

set nowrap
set listchars=extends:>,precedes:<

보통 다음도 추가한다. 첫번째 줄은 Tab 간격을 정하고, 두번째 줄은 시끄러운 삐소리를 없앤다.

set tabstop=4
set visualbell t_vb=

4. 그런데 아직도 vi(vim)에서 한글이 계속 깨져요!

불행히도 Windows command.exe가 제공하는 터미널에 문제가 많아서 한글을 사용할때 불편한 경우가 있다. 구체적으로 행바꿈시 화면에 두칸이 띄어지는 것처럼 보이는 문제, 한글 상태에서 화면정리(Ctrl-L)시 한줄이 밀리는 현상, 긴줄이 화면 밑에 있을때 한줄이 밀리는 현상, 화면이 깨져서 자주 화면정리를 해줘야하는 문제 등이 있다. 아래의 방법으로 부분적으로 해결할 수 있다. 혹시 좋은 방법을 알고 있다면 알려주길 바란다. (Windows 98과 Windows 2000에 포함된 command.exe 혹은 cmd.exe의 경우이다. 혹시 다른 버전의 command.exe에는 이런 문제가 없을 수 있다.)

TERM 환경변수 수정
TERM 환경변수를 기본값인 cygwin이 아닌 다른 값으로 수정하여 문제를 줄일 수 있다. 그러나 Windows command.exe 문제때문에 영어권에서도 ncurses가 완벽하게 동작하지 않음을 볼 때 큰 기대를 가지진말라. 또 다른 프로그램이 정상적으로 작동하지 않을 수도 있다. ~/.bash_profileexport TERM=ansi-mini와 같이 다른 터미널 이름을 입력하면 된다.
vi(vim) 설정 수정
(Vim 6.0 버전에서는 적용이 안된다.)

위의 두방법은 원격 호스트에서 vi를 사용한다면 해당 호스트의 설정도 수정해야 한다는 단점이 있다. 편집기 서버 기능(vim 도움말 remote.txt 참조)이나 scp, rcp, ftp로 네트웍에서 파일 읽고쓰기 기능(pi_netrw.txt 참조)이 조금 도움이 될 수 있다.

완전히 다른 터미널을 사용하는 방법도 있다. 사실 이 방법들을 더 추천한다.

vim Win32 GUI 사용
vim Win32 GUI를 따로 설치한후 PATH 환경변수에 추가하여 사용한다. (예, ~/.bash_profileexport PATH=/cygdrive/c/Vim/vim60:$PATH) gvim이란 파일명으로만 설치되므로 vivim 이름으로 심볼링크를 걸거나 alias를 만들어둔다. (alias 예, ~/.bashrcfunction vim() { gvim $1 & }) vim 도움말 gui_win32.txt에 있는 팁들도 유용하다. 단점은 command.exe를 사용할때와 마찬가지로 원격 호스트에서 편집할때 문제가 있다.
telnetd 사용
cygwin의 inetd를 활성화한후 ( 팁 모음 참조) 터미널 문제가 없는 원격 터미널 에뮬레이터(teraterm 등)를 사용하여 localhost에 접속하여 Cygwin을 사용한다. 경우에 따라 원격 테미널 에뮬레이터에 맞게 TERM 환경변수를 수정할 필요가 있다. (혹시 접근하는데 문제가 있다면 Windows 2000의 '텔넷 서버 관리'에서 서비스를 중지하라.)
rxvt 사용 (재컴파일 필요)
rxvt는 cygwin에 기본적으로 포함된 터미널이다. 따로 창이 뜨고 X11은 필요없다. 그러나 폰트 등 2바이트 지원을 위해 새로 컴파일해줘야 한다.
X11에서 hanterm 사용
Windows에 X11 display server(Cygwin/XFree86, Xmanager 등)와 hanterm을 설치하고, hanterm에서 vim을 사용한다. 아니면 vim X11 GUI를 사용할 수도 있다.
2009/05/12 12:14 2009/05/12 12:14

Trackback Address :: https://youngsam.net/trackback/412