Vim을 사용할때 입력모드에서 한글을 입력하다가 ESC키를 누르고 명령 모드로 변경하서 명령을 내리기 위해서는 귀찮게시리 다시 영문으로 입력을 바꿔야 합니다. 다른 버전의 Vim에서는 어느정도 이 귀찮음을 해결하는 방법이 있는데, MacVim은 아직까지 이 방법이 안 됩니다. 이유는 일단 MacVim의 IM이 문제가 있기 때문입니다. 고수님들은 소스를 직접 변경해서 사용할 수도 있지만 저처럼 부족한 능력을 가진 사람은 너무나 먼 길입니다.

그래서 이 문제를 해결해 보고자 열심히 이것 저것 해 봤습니다. 그러다가 어설프게나마 해결(?!)을 해서 이렇게 글을 남겨 둡니다.


최근 공개된 MacVim snapshot 40에서는 imdisable 옵션이 기본으로 설정돼 있습니다. 아무래도 문제가 많은가 봅니다. 한글입력 상태에서 imd를 끄고 입력을 하면 맥빔 아이콘 하나가 더 생기고 독(Dock)에서 통통 튀는 좀비 MacVim이 생깁니다. 그래서 이전에도 MacVim에 관한 포스팅을 할 때 imd를 켜는 방법을 설명했습니다. 이전에 OS X를 위한 Vim. MacVim에서 말했지만 imd를 끈 상태가 정상적으로 작동하게 되면 한영 전환의 귀찮음이 쉽게 해결이 됩니다. 그러나! 안 된다는게 아쉽울 따름입니다.

서론이 길어서 죄송합니다.
해결 방법은  한글 입력일 때 ESC를 치면 영문으로 변경해는 AppleScript를 작성하는 것입니다.

우선 AppleScript를 작성해 보겠습니다. AppleScript는 Vi와 같은 텍스트 편집기를 사용하셔도 되지만 스크립트 편집기(Script Editor.app)를 사용하는 것이 편합니다. 그래서 저는 스크립트 편집기를 사용했습니다.

사용자 삽입 이미지

스크립트 에디터에서 위와 같이 입력하시면 됩니다.
간딘히 소스를 설명하자면, 현재 입력기의 상태를 알아보기 위해서 com.apple.HIToolbox 도메인에 AppleSelectedInputSources를 가져와서 content에 저장합니다.

if content contains "hangul" or content contains "korea" then
 ...
end if
이 content에 hangul이나 korea가 있으면 현재 입력 상태가 한글 상태라는 뜻입니다. OS X에 내장된 한글 입력기를 사용하시는 분은 korea가 나타날 것이고 바람 입력기를 사용하시는 분은 hangul이라고 나옵니다. 직접 입력 상태를 바꿔가면서 터미널에서 com.apple.HIToolbox 도메인을 읽어 보시면 알 수 있습니다.

keystroke " " using shift down
 한글 상태이면 시스템에 Shift+스페이스키 이벤트를 전달합니다. 이건 사용하시는 분에 따라 알아서 적당한 키를 쓰시면 됩니다. 영문으로 가게만 하면 됩니다.

AppleScript는 이게 전부입니다. 이 파일을 저장하고 적당한 위치로 이동 시킵니다. 저는 toEng.scpt로 저장하고 /usr/AppleScript라는 곳으로 이동시켰습니다.

이제 MacVim을 설정해 보겠습니다. .gvimrc 파일을 열고 다음을 추가합니다.
inoremap <silent> <ESC> <ESC>:call ToEng()<CR>
function! ToEng()
:silent exe "!osascript /usr/AppleScript/toEng.scpt"
endfunction

이제 맥빔을 시작하시고 테스트를 하면 됩니다. 입력모드에서 한글을 입력하다가 ESC키를 눌러서 명령모드로 빠져나와 보시면 자동으로 영문으로 변경 되는 것을 보실 수 있습니다.

이 방법의 단점은 입력기를 직접 바꾸지 않고 키 입력 이벤트로 처리해서인지, 스크립트여서인지는 모르겠지만 살짝 느린거 같은 느낌을 준다는 것이고, 위와 같은 과정을 해 줘야 하는 번거로움이 있다는 것입니다. 뭐. 그래도 나름 쓸만 하다고 생각합니다. 더 좋은 방법이 있으신 분은 알려주세요~

애플스크립트 파일 :
2008/12/31 07:59 2008/12/31 07:59
Sangkle 이 작성.

Leopard와 키패드

2008/11/21 06:20 / 분류없음
 HHKB(해피해킹키보드) Pro 2를 사용하고 있습니다. HHKB Pro 2는 HHKB Lite와는 다르게 화살표 키가 없습니다. 이 키보드에서는 FN키 조합을 사용해서 화살표를 사용해야 합니다. FN 키가 왼쪽에도 있었으면 사용하기 편할텐데 아쉽게도 오른쪽에 하나가 달려 있습니다. 그래서 이 약간의 불편함을 없애기 위해 싸구려 숫자 키패드 하나를 구입했습니다.

문제는 이 키패드가 Leopard에서 작동을 안 하는 겁니다. 그래서 구글링을 열심히 했습니다. 결론은 드라이버가 없는 싸구려라서 맥북용 키 리맵 응용프로그램인 KeyRemap4MacBook을 사용하는 것입니다. KeyRemap4MacBook은 여기에서 다운 받을 수 있습니다.
KeyRemap4MacBook을 써 보셨던 분들은 아시겠지만 이 프로그램도 맥의 제어판인 "시스템환경설정"에 Pane으로 등록됩니다. 설정화면은 아래 그림을 참고하십시오.
 
사용자 삽입 이미지
위와 같이 설정하면 키패드를 사용할 수 있습니다.

조금 버그가 있긴 합니다. 제 키패드는 NumLock키가 달려 있습니다. 대부분 NumLock을 켜면 숫자가 입력되야 하는데 반대로 화살표키로 작동을 하고, 반대로 NumLock을 끄면 숫자키로 작동합니다. 프로그램이 버그인지 키패드가 불량인것인지는 모르겠네요 :-)
2008/11/21 06:20 2008/11/21 06:20
Sangkle 이 작성.

 윈도우와는 다르게 OS X에는 램 디스크를 별다른 응용프로그램 없이도 만들어서 사용할 수 있습니다. 이러려면 스크립트를 짜고 시작 프로그램으로 등록하고 이런 저런 일들을 해 줘야합니다. 그러나 부팅할 때마다 램디스크를 만들고 설정 파일을 다시 복사해 두는 것은 약간은 번거로운 일입니다.
사용자 삽입 이미지
 Leopard에서 사용할 수 있는 램디스크 응용프로그램으로 Espérance DV가 있습니다.
 
 Espérance DV는 여기에서 다운 받을 수 있습니다. Espérance DV를 설치하면 왼쪽 그림과 같은 [시스템 환경설정]에 새로운 "Espérance DV" 아이콘이 생깁니다. 여기에서 램디스크를 설정 할 수 있습니다.


이 Espérance DV Preference Pane(아래 그림)을 열어서 그림과 같이 설정하고 램 디스크를 만들면 새로운 디스크가 파인더에 나타납니다.
사용자 삽입 이미지
이제 사파리의 캐시 디렉토리를 생성한 램디스크로 바꿔 보도록 하겠습니다. 

위 그림에서 볼 수 있듯이 Espérance DV 설정에 "Various Options"에 보면 사파리 캐시를 램디스크로 옮기는 체크박스가 있습니다. 하지만, 불행하게도 Leopard 10.x의 Safari 3에서는 작동하지 않습니다. 왜냐하면 Mac OS X 10.2 이후에 몇 몇 프로그램의 캐시 디렉토리가 이전과는 다른 곳으로 옮겨졌기 때문입니다. 이전에는 /Users/아이디/Library/Cache 였는데 지금은 /var/folders 아래로 옮겨 졌습니다. /var/folders로 이동해서 보면 짧은 이름의 디렉토리가 두어개 있습니다. (제 경우에는 3개가 있더군요) 이제 여기에서 사파리의 캐시 디렉토리를 찾아야 합니다. 다음 명령을 터미널에서 수행하면 사파리의 캐시 디렉토리를 찾을 수 있습니다. 아래 명령에서 "아이디"를 자신의 계정 아이디로 바꿔서 입력하십시오.
find /var/folders/ -type d -user 아이디 -name "*Safari" -exec echo {} \; 2>/dev/null
제 경우에는 다음과 같은 경로에 사파리 캐시가 위치하고 있습니다.
/var/folders//GB/GBnpT0BtGH4dIpzQHl-8Xk+++TI/-Caches-/com.apple.Safari
이제 이 경로를 삭제하고 위에서 만든 램디스크로 연결해 줍니다.

rm -rf /var/folders//GB/GBnpT0BtGH4dIpzQHl-8Xk+++TI/-Caches-/com.apple.Safari
ln -s /Volumes/RamDisk/Safari\ \(Cache\)/ /var/folders/GB/GBnpT0BtGH4dIpzQHl-8Xk+++TI/-Caches-/com.apple.Safari

이제 사파리를 재시작하면 사파리가 조용하게 움직하고 보다 빠르게 움직이는 것을 느낄 수 있습니다.
2008/11/17 08:57 2008/11/17 08:57
Sangkle 이 작성.

Terminal.app 단장하기 (1)에서 조금 아쉽지만 어느 정도 Terminal을 꾸며봤습니다. 이 문제는 투명을 안 쓰거나 다른 터미널 테마를 구해서 변경해서 사용하면 됩니다. 그냥 귀찮아서 쓰는 것입니다. 하지만, 아래 그림 처럼 조금 더 멋지게 변경 할 수도 있습니다. 선택은 자유지요 ^^

tt.png

위 그림에서 앞에 작게 보여지는 터미널이 Terminal에 원래 있던 환경 설정만으로 변경한 터미널이고 뒤에 터미널은 해킹(?) 가한 터미널의 모습입니다.

이렇게 하기 위해서 몇가지 도구가 필요합니다. 일단 SIMBL(심볼)이라는 패키지(?)가 필요합니다. 심볼은 제작자 홈페이지 따르면 코코아 어플리케이션을 해킹해서 원하는 코드를 적용할 수 있게 만들어 주는 일종의 해킹(리버스 엔지니어링) 도구라 생각하세요. 우리는 심볼을 단순 사용(!)할 것이기 때문에 자세한 내용은 여기서 다루지 않습니다. (사실 아는게 없어서 다루지 못 합니다. ^^) 단지 심볼의 설치 및 사용법에만 초점을 맞추겠습니다.

심볼은 설치가 쉽습니다. 심볼 홈페이지에서 압축 파일을 내려받고, 압축을 풀어서 SIMBL.pkg라는 파일을 실행하면 되기 때문입니다. 심볼 설치 프로그램에서 소개를 유심히 보면 심볼이 /Library/InputManagers에 설치된다는 것과 심볼 플러그인을 /Library/Application Support/SIMBL/Plugins 또는 ~/Library/Application Support/SIMBL/Plugins에 설치한다는 것만 알면 되겠습니다. 터미널에 필요한 심볼 플러그인을 여기에 설치해야 하기 때문입니다.

SIMBL을 다 설치 했으면, 이제 다음의 플러그인들을 Ciarán Walsh’s Blog에서 다운 받습니다.

1. TerminalColour.bundle : 터미널 색상을 편집할 수 있습니다.
2. Blurminal.bundle : 투명 터미널 뒤 배경을 흐리게 처리합니다.
3. TerminalTabSwitching.bundle : 터미널의 탭을 단축키 (cmd+숫자)로 변경할 수 있습니다.

다운 받았으면 압축된 파일이면 압축을 풀어 주세요. 그러면 1,2,3과 같은 파일(실제로는 디렉토리) 세개를 설치합니다. 위 SIMBL설치 시에 나왔던 곳인

/Library/Application Support/SIMBL/Plugins
~/Library/Application Support/SIMBL/Plugins

여기에 설치하시면 됩니다. 파인더에서 드래그 & 드랍 하시거나 터미널에서 cp(위 bundle파일은 디렉토리기 때문에 -R 옵션을 사용), mv 명령을 사용하셔도 됩니다.

이제 열려 있는 터미널을 닫고 터미널을 다시 열어 보세요. 투명한 배경이 살짝 흐릿해진것 같습니다. 어라 그런데 여전히 색은 그대로 입니다. 하지만 이제 터미널 환경 설정을 열어 보십시오. 뭔가 바뀐 것이 보입니다.


chn.png

More... 버튼이 추가 됐습니다.


col.png

More 버튼을 클릭하면 위 그림과 같이 색을 변경 할 수 있습니다. 여기서 원하시는 색으로 변경 하시면 되겠습니다. 이것도 귀찮으신 분은 저 처럼 터미널 테마 파일을 설치하시면 됩니다. 터미널 테마 파일은 InfiniteRed 에서 다운 받으시면 됩니다. 테마 파일은 다운 받으시고 더블 클릭하면 자동으로 설치가 됩니다. 이렇게 해서 설치가 안 되면 터미널 환경 설정의 설정에서 왼쪽 아래 보시면  기본 버튼 왼쪽 버튼을 누르면 가져오기가 있습니다. 여기서 테마 파일을 선택하시면 설치가 됩니다.

 

참고 사이트

* http://www.culater.net/software/SIMBL/SIMBL.php
* http://blog.infinitered.com/entries/show/6
* http://ciaranwal.sh/2008/02/12/terminal-plug-in-updates

2008/09/19 09:37 2008/09/19 09:37
Sangkle 이 작성.

OS X 10.5인 Leopard에는 터미널 프로그램이 설치되어 있습니다. 파인더에서는 응용프로그램/유틸리티/터미널에서 위치하고 있습니다.( 실제 경로는 /Applications/Utilities/Terminal.app) 레오파드 이전(타이거)에는 iTerm이라는 프로그램을 따로 설치해서 사용해 왔지만, 레오파드의 터미널이 iTerm 못지 않게 좋아져서 그냥 사용하고 있습니다.

그림 2.png

Leopard의 터미널을 아무런 설정 없이 실행하면 위 그림과 같은 휑한 터미널을 보여 줍니다. 그래서 약간 손을 보도록 하겠습니다. 일단 기본적으로 터미널 프로그램에 들어있는 환경 설정을 이리 저리 수정해 보겠습니다.


그림 6.png


그림 5.png

상당히 괜찮아 졌습니다. 뭔가 부족해 보입니다. 그렇습니다! 색깔이 없습니다. 무슨 이유인지는 모르겠지만 ls의 색상 표시 기능을 꺼 놨습니다. ls -G를 ls의 alias로 주거나(alias ls='ls-G') 환경변수 CLICOLOR를 1로 설정하면 됩니다. 저는 다음 줄을 ~/.profile에 추가해서 사용하고 있습니다.

export CLICOLOR=1

약간 더 멋을 부려 보겠습니다. 터미널 창을 살짝 투명하게 해 봤습니다.


Snapz Pro XScreenSnapz003.png

문제가 보입니다. 디렉토리 색이 파란색이라서 배경이 파란 부분에 겹치는 경우에 구별이 잘 안 되는군요. 이 문제는 환경변수 LSCOLORS를 변경해서 ls의 색을 변경해 주면 될 것 같습니다. 그런데.. 또 다른 문제가 있습니다. ls말고 다른 색이 지원 되는 Vim과 같은 프로그램들도 비슷한 상황이 된다는 것입니다. 물론 Vim도 색을 변경을 하면 됩니다만! 더 나은 방법이 있습니다.

2008/09/19 08:22 2008/09/19 08:22
Sangkle 이 작성.

사용자 삽입 이미지
Vim은 Vim 홈페이지에서 플랫폼 별로 다운 받아서 설치하여 사용할 수 있습니다. 하지만 OSX에서는 OSX에 특화된 Vim을 사용할 수 있는데 그것이 바로 맥빔(MacVim)입니다. 맥빔은 여기에서 다운 받을 수 있습니다. 빔 공식 페이지보다 살짝 느리게 판올림되기는 하지만, OSX에서는 GVim보다는 맥빔을 설치하여 사용하시는 것을 추천합니다. 현재 이글을 쓰는 시점에서는 7.2버전으로 판올림 되어 배포되고 있습니다.

 맥빔은 콘솔에서 사용하는 Vim 보다는 GVim과 유사합니다. 여기에 몇가지 기능이 추가 되어 있습니다. 이에 대해서 조금 설명해 보겠습니다. 좀 더 자세한 내용은 MacVim을 수행하고 :h macvim을 입력하면 Vim도움말 형식으로 보실 수 있습니다.

전체화면 보기

 맥빔은 풀스크린(전체화면 보기)를 지원합니다. IE의 전체화면 보기와 유사하게 전체화면 보기로 설정하면 맥빔히 화면 가득하게 나오게 됩니다. 맥빔을 시작하고 :set fullscreen 또는 :set fu 를 입력하시면 전체화면 보기로 전환 됩니다. 전체화면에서 다시 원래 화면으로 돌아오려면 :set nofullscreen 또는 :set nofu를 입력하십시오.
 전체화면을 수행하면 맥빔의 세로 길이는 기본적으로 늘어나는 반면 가로 화면은 기존의 너비와 동일하고 화면의 나머지 여백을 검은색으로 칠하여 보여줍니다. fuoptions을 설정하면 이를 변경할 수 있습니다. fuoptions는 maxvert, maxhorz를 사용할 수 있습니다. 전체화면에서 가로와 세로 둘 다 늘어나게 하려면 전체화면으로 전환하기 전에 :set fuoptions=maxvert,maxhorz를 입력한 후에 전체화면으로 전환하면 됩니다.

창을 투명하게

  Leopard에 있는 터미널과 유사하게 맥빔도 맥빔의 클라이언트 영역을 투명하게 할 수 있습니다. 이는 transparency를 설정하면 됩니다.  transparency값은 0~100 사이의 정수로 투명한 정도를 설정할 수 있습니다. 100이 가장 투명도가 높은 다시 말하면, 창이 완전히 투명하게 됩니다. 이 값은 기본값이 0입니다. 예를 들어 :set transparency=10 과 같이 설정하여 사용합니다. transparency 값을 100으로 하면 완전하게 투명은 되지만 다른 창에서 맥빔으로 전환시 클라이언트 영역을 클릭하면 전환이 안 되거나, 다른창으로 이동 시에 줄이 나타나는 것과 같은 버그(?)가 있습니다.

한글입력 버그?

 맥빔을 설치하고 별다른 설정 없이 바로 실행하면  OSX의 IME와 맥빔이 엉켜서 오작동을 보입니다. 또 빔의 검색을 수행하는 슬러시(/)를 입력하면 영문 입력 상태에서 한글로 변환되어 한글이 입력되는 현상이 있습니다. 이 문제를 해결하는 방법이 있습니다.
 간단하게는 :set imd(또는 :set imdiable)를 수행하면 됩니다.  이 설정을 사용하면 맥빔이 OSX의 IM만 사용합니다.
또는 다음과 같은 설정을 사용하시면 됩니다.
set noimd
set imi=1
set ims=-1

하나하나 살펴 보겠습니다.
noimd는 위에서 설명한 imd와 반대 설정입니다.
imi (또는 iminsert)는 삽입모드(Insert Mode)에서의 IM을 설정합니다. imi에 할당되는 값은 0, 1, 2가 있습니다.

  • 0은 :lmap을 비활성, IM도 비활성.
  • 1은 :lmap은 활성, IM은 비활성.
  • 2는 :lmap은 비활성, IM은 활성.

imi를 0으로 설정하면 한글을 입력할 수 없습니다. lmap과 IM 둘 다 비활성이라서 영문만 입력이 가능하고 한영 변환을 시켜도 바로 영문으로 돌아옵니다. 2가 제대로 작동 된다면 정말 좋을 것 같습니다만 이 설정도 가끔 오작동을 일으킵니다. 그래서 1로 설정하여 사용하면 됩니다.
ims는 검색(/) 패턴 입력할 때의 IM을 설정합니다. ims에 설정 가능한 값은 위 imi에 설정 가능한 값과 같습니다. 여기에 -1이 추가되는데, 이 뜻은 imi와 같은 설정이라는 뜻입니다. 즉 ims를 -1로 설정하면  imi가 0이면 ims도 0으로, imi가 1이면 ims도 1이 설정된 것으로 작동합니다.
이 설정이 set imd보다 좋은 점은 입력모드에서 한글을 입력하다 ESC키로 입력모드를 나가면 바로 영문으로 전환 되어 Vim명령을 바로 쓸 수 있다는 것입니다. 다만 다시 입력모드로 돌아가도 영문 입력인체로 남아 있습니다. 만일 메뉴얼처럼 설정을 2로 했을 때 정상적으로 작동한다면, 입력모드에서 한글을 입력하다가 ESC로 입력 모드를 나간 뒤,  다른 명령을 수행한 후 다시 입력모드로 돌아가면 바로 한글이 입력할 수 있습니다.


2008/08/19 00:00 2008/08/19 00:00
Sangkle 이 작성.